Más néven fordított macska, tac egy egyszerű parancssori segédprogram, amely lehetővé teszi a kimenet sorainak megfordítását a | beépített csőkezelő és tac. Vagyis ha van egy parancsod, bal oldali (lhs), és meg akarod fordítani a kimenet tartalmát, akkor csak annyit tennél, hogy beírod az lhs | tac. Ez az!
El kell ismerni, hogy a tac-nál több is van, mint amilyennek látszik. Ne aggódj. Jó időn belül lefedjük az egészet.
Tanácsok a tac-hoz
Használni vagy nem használni, ez a kérdés. Nem akarod, hogy ne akarj tacskolni, amikor nem muszáj. Ha azonban a tac-ot kenyér és vaj parancsként akarod terjeszteni, akkor rajtad múlik. Addig is itt van a tanácsom, hogy mindkét fél tac-ot vegyen fel, hogy ne maradjon semleges.
Mikor kell használni a tac-ot
Vannak esetek, amikor a tac használatával többet hozhat ki a parancssorból, kevesebb kóddal és az lhs parancsopcióinak kutatásával töltött idővel.
Amikor nem vagy biztos az lhs opcióiban
Sok olyan parancsnál, mint a rendezés, lehetőség van a parancs kimenetének megfordítására. Ha azonban nem biztos abban, hogy a bal oldali parancsnak van -r opciója a kimenet visszafordításához, akkor a tac használata biztos módja a kimeneti sorok megfordítására.
Amikor a teljesítmény nem számít
Bár jelentéktelen, a beépített opcióval együtt használt legtöbb parancs a kimenet visszafordításához jobban teljesít, mint a kimenet tac-ra történő csövezése. Tehát, ha egy kis teljesítménybeli lemaradás nem kérdés, akkor rendben van a tac-ba vezetni a kimenet visszafele lejátszásához.
Mikor ne használjuk a tac-ot
Van, amikor nem használhatja a tac-ot, mert jobban tudja. Íme néhány megjegyzendő.
Ha tudja, hogy az lhs-n lévő parancsnak lehetősége van a kimeneti sorok megfordítására
Mint mondtam: „A legtöbb parancs rendelkezik a kimenet visszafordításának lehetőségével.”Ha tudja, hogy egy adott lhs parancsnak van opciója, akkor nem használhatja a tac parancsot. Végül is az -r rövidebb, mint - | tac.
Amikor a teljesítmény számít
Mint mondtam: „Az lhs fordított opció használata jobban teljesíthet, mint a tac.”Ha néhány másodpercet szeretne kihúzni egy bash szkriptben, vagy nagyobb fájlokkal foglalkozik, amelyek olvasása időt igényel, akkor nem használhatja a tac.
Tac segítség
A súgó parancs futtatása a tac vagy a man tac számára megmutatja a felhasználást és az esetleg használható opciókat. Itt van, amire számíthat.
Parancsok
tac --segítségKimenet
Tac verzió
Milyen verzió vagyok?
Te vagy önmagad legújabb verziója. Abban az esetben azonban, hogy milyen verziója van a tac-nak, erre van lehetőség.
Parancsok
tac --verzióKimenet
Megjegyzések
Ha tac-ot használ FreeBSD-n vagy macOS-on, akkor a verzió hosszú opciója nem biztos, hogy elérhető. Ebben az esetben próbálkozzon a -v vagy a man tac paranccsal. Ha megpróbálta, tudassa velem. Kíváncsi vagyok. Köszönöm
Tac opciók
A súgó és a verzió mellett a tac-nak nincs sok lehetősége. Amire van, biztosan megtudja, hogy a tac nem akármilyen régi fordított macska.
Tac előtt opció
A -b opció lehetővé teszi az elválasztó kimenethez való csatlakoztatásának megváltoztatását. Alapértelmezés szerint az újsor elválasztó minden sor után csatolva van.
Tudom, hogy zavaró. Bontjuk le példánként.
Először nézzük meg, hogy néz ki a kimenetünk, mielőtt a tac -b-t használnánk.
Parancsok
10. szKimenet
Most nézzük meg, mivé alakul a kimenetünk a -b nélküli tac használata után.
Parancsok
10. sz tacKimenet
Most nézzük meg, mivé alakul a kimenet a tac -b használatával.
Parancsok
10. sz tac -bKimenet
Tac elválasztó opció
Az elválasztó opció, a 'literal string' segítségével megadhatja azt a karaktert vagy karaktersorozatot, amelyet a tac használ a sorok elkülönítésére. Alapértelmezés szerint az újsoros karaktert ('0a' hexában) használják.
A tac elválasztó opció használata elsőre nem egyértelmű. Miután azonban tudta, hogy ott van, nehéz nem megpróbálni használni.
Tekintsük a következő példát, amely hatszögben ábrázolt vonalakon működik.
Parancsok
20. sz xxd -ps | tac -s '0a' | xxd -ps -rKimenet
Megjegyzések
(1) Triviálisnak tűnhet, mint a 20 | tac parancs azonban ebben az esetben nem töltöttünk időt a kimeneti adatfolyam hexadecimális feldolgozásával. Ennek a mintának a használata akkor hasznos, ha a külön nem valami triviális, mivel az új vonalkarakter, például a nulladik bájt.
Most kevésbé próbáld meg használni a tac-ot valamivel kevésbé nyersen és több metában, például az egyszerű HTML-ben.
Vegye figyelembe a következő fájlt.
File
AB
C
Parancsok
fájl () echo -e "AB
C
";
fájl | tac -s "
"
Kimenet
Sikerült konvertálni a HTML oldalt
AB
C
-ba
CB
A
tac használatával.
Tegyük fel, hogy valamivel bonyolultabb dolgot kell tennie, például bármilyen címkét tac elválasztóként kezelni. Ebben az esetben nem fog megúszni pusztán az elválasztó opció használatát. Itt jön be a regex opció. Az elválasztó opcióval kombinálva többet tehet a tac paranccsal, mint a fájlban egy sort megfordítani. Itt van, hogyan.
Tac regex opció
A regex opció -r -s 'regex' segítségével megadhatja, hogy az elválasztó karakterláncot reguláris kifejezésként kell kezelni.
A tac regex opció használata ugyanolyan egyszerű, mint az -r opció hozzáadása az elválasztó előtt vagy után.
Tekintsük az előző példát a regex opció használatával az elválasztó opcióval együtt. Kezeljük a tac-et a jelölőcímkékkel elválasztóként.
File
egyszerű funkciók
A funkciók egyszerűek a bash-ban. Legalábbis ez az. Egy húr kerül a képernyőre.
Parancsok
egyszerű funkció
()
visszhang
amilyen egyszerű egyszerű funkció
Forrás: https: // temptemp3.github.io / bash-függvények
Parancsok
fájl ()visszhang
egyszerű funkciók
A funkciók egyszerűek a bash-ban. Legalábbis ez az. A
karakterlánc a képernyőn.
Parancsok
egyszerű funkció
()
visszhang amilyen egyszerű
egyszerű funkció
fájl | tac -r -s "] *."
Kimenet
A fájlt megfordító HTML oldalt HTML címkékkel sikerült konvertálni. Ha megnézi a részleteket, észreveszi, hogy még nem tökéletes.
Tac parancs tiszta bash-ban
Itt van a tiszta bash-ban a tac implementáció primitív változata, amely megfordítja az lhs paranccsal vezetett vonalakat. A jövőbeli verziók gyakorlatként maradnak.
#!/ bin / bash## tac
## 0. verzió.0.1 - kezdeti
##########################################################
tac ()
helyi -a arr
helyi -i i
mapfile arr -
i = "$ # arr [@]"
míg [$ i -ge 0]
csinálni
echo $ arr [i]
legyen i- = 1
Kész
##########################################################
tac
##########################################################
Forrás: https: // github.com / temptemp3 / ba.sh / blob / master / tac.SH
Tac parancs más parancsokkal
Íme a tac implement néhány primitív változata, amelyek más parancsokat használnak, amelyek megfordítják az lhs paranccsal beillesztett vonalakat. A jövőbeli verziók gyakorlatként maradnak.
Mielőtt belekezdenénk, csukja be a szemét, és gondolkodjon: „Mit lehetne használni a tac primitív változatának megvalósításához??”
Sok parancs jut eszembe, de azokra fogok összpontosítani, amelyekre van helyünk.
gawk
Hasonlóan a tiszta bash példában szereplő Tac parancshoz, a tac megvalósításához először az összes sor elolvasása után fordítva tároljuk az újra lejátszandó olvasási sorokat. Így néz ki a gawk használatával.
gawk 'line [++ line [0]] = $ (0) END for (i = 0; i
Most próbálja meg használni az lhs 10-es parancsot.
10. sz gawk 'line [++ line [0]] = $ (0) END for (i = 0; i
Ahogy elvárható lenne a kimenet
Feladatok
1. Az lhs () szekvencia 10; felsorolja az 1–10 egész számokat. Írjon ki egy rhs parancsot úgy, hogy lhs | rhs egyenlő 10864213579 csak tac használatával (Tipp: lásd Tac előtt opció példa)
2. Fordítsa meg az rhs () kimenetét find -mindepth 1 -maxdepth 1 -print0; a tac használatával (Tipp: lásd a Tac elválasztó opció példáját)
3. Hosszabbítsa a tac-ot.sh (a Tac parancsban tiszta bash), hogy pontosan úgy viselkedjen, mint a tac. Be kell adnia a lehetőségeket, és ellenőriznie kell a viselkedésüket.
4. Rekurzív függvényként valósítsa meg a tiszta bash-ban a tac primitív változatát.
TL; DR
Ismét élveztem a Bash tac parancs megírását. Miután elolvastam, remélem, hogy meg tudja állapodni abban, hogy több van a tac-ban, mint gondolta. Ezenkívül, miután megpróbáltam a dolgokat a fenék közelében, nehezen végrehajtani, remélem, hogy tudja, mennyire hasznos lehet a tac parancs. Ha valakinek sikerül elvégeznie valamelyik gyakorlatot, vagy segítségre van szüksége a házi feladatok elvégzéséhez, szóljon nekem. Köszönöm,