Tuntud ka kui tagurpidi kass, hõlbusta lihtsat käsurea utiliiti, mis võimaldab väljundis ridu muuta, kasutades | sisseehitatud toruoperaator ja takt. See tähendab, et kui teil on käsk, vasakpoolne külg (lhs) ja soovite selle väljundi sisu ümber pöörata, siis teeksite vaid lhs | tac. See selleks!
Tuleb tunnistada, et peidus on veel midagi, mis silma peal paistab. Ära muretse. Me kajastame seda kõike õigeaegselt.
Nõuanded takt
Kas kasutada või mitte kasutada, see on küsimus. Sa ei taha, et ei taha, kui ei pea. Kui soovite aga levitada taci oma leiva ja või käsuna, on see teie otsustada. Seniks on siin minu nõuanne taktide võtmiseks, et mõlemad pooled jääksid neutraalseks.
Millal kasutada tac
Mõnikord võib kasutada tac-i, mis aitab teil käsurealt rohkem kasu saada, kasutades vähem koodi ja kulutades aega lhs-i käsuvalikute uurimiseks.
Kui te pole kindel lhs-i valikutes
Paljudel käskudel, näiteks sortimine, on võimalus käsu väljund ümber pöörata. Kui te pole kindel, kas vasakpoolsel käsul on väljundi tagasikäiguks -r võimalus, on tac kasutamine kindel viis väljundliinide ümberpööramiseks.
Kui jõudlus pole oluline
Kuigi see on ebaoluline, toimivad enamus käske, mida kasutatakse koos sisseehitatud suvandiga väljundi tagurdamiseks, paremini kui väljundi edastamine tac-i. Nii et kui väike jõudluse viivitus pole probleem, on torustiku sisestamine taktikasse, et väljundit taasesitada vastupidiselt.
Millal tac-i mitte kasutada
On olukordi, kus te ei pruugi tac-i kasutada, sest teate paremini. Siin on mõned tähelepanuväärsed.
Kui teate, et lhs-s oleval käsul on võimalus väljundi read ümber pöörata
Nagu ma ütlesin: „Enamikul käskudel on võimalus väljundit tagasi pöörata."Kui teate, et konkreetsel käsul lhs on valik, ei tohi te tac-i kasutada. Lõppude lõpuks on -r lühem kui - | tac.
Kui jõudlus on oluline
Nagu ma ütlesin: „Lhs vastupidise variandi kasutamine võib toimida paremini kui tac."Kui soovite mõne sekundi bash-skripti välja pigistada või kui tegelete suuremate failidega, mille lugemiseks on vaja aega, ei tohi te tac-i kasutada.
Tac abi
Tac- või man tac-i abikäskluse käivitamine näitab kasutamist koos võimalike võimalustega. Siin on see, mida oodata.
Käsud
tac --abiVäljund
Tac versioon
Mis versioon ma olen?
Olete iseenda uusim versioon. Kuid mis versioon teie tac on, on selleks ka üks võimalus.
Käsud
tac --versioonVäljund
Märkused
Kui kasutate FreeBSD-s või macOS-is tac-i, ei pruugi versiooni pikk valik olla saadaval. Sel juhul proovige -v või man tac. Kui olete seda proovinud, andke mulle teada. Olen uudishimulik. Aitäh
Tac-valikud
Abi ja versiooni kõrval pole tacil palju võimalusi. Selle jaoks, mida tal on, saate kindlasti teada, et tac pole lihtsalt ükski vana tagurpidi kass.
Tac enne valikut
Valik -b võimaldab teil muuta, kuidas eraldaja väljundis kinnitatakse. Vaikimisi on uue rea eraldaja lisatud iga rea järel.
Ma tean, et see on segane. Jagame selle näitena.
Enne tac -b kasutamist vaatame, milline on meie väljund.
Käsud
10. järjestusVäljund
Vaatame nüüd, milliseks muutub meie väljund pärast tac-i kasutamist ilma -b.
Käsud
järgnev 10 | tacVäljund
Nüüd vaatame, mis väljundist saab tac -b.
Käsud
järgnev 10 | tac -bVäljund
Tac-eraldaja võimalus
Eraldusvõimalus -s 'sõnasõnaline string' võimaldab teil määrata märgi või tähemärkide järjestuse, mida tac kasutab ridade eraldamiseks. Vaikimisi kasutatakse uue rea märki ('0a' kuusnurgas).
Tac-eraldaja valiku kasutamine pole esialgu ilmne. Kui aga tead, et see on olemas, on seda mitte proovida kasutada.
Mõelge järgmisele näitele, töötades kuusnurgal kujutatud joontega.
Käsud
järgnev 20 | xxd -ps | tac -s '0a' | xxd -ps -rVäljund
Märkused
(1) See võib tunduda tühine, kui kasutada seq 20 | tac käsk, aga sellisel juhul ei kulutanud me aega väljundvoolu töötlemisel heksades. Selle mustri kasutamine on kasulik, kui eraldis pole midagi tühist, kuna uus reamärk nagu null-bait.
Nüüd proovige vähem kasutada tac-i millelegi veidi vähem toorele ja rohkem meta-le nagu lihtsale HTML-ile.
Mõelge järgmisele failile.
Fail
AB
C
Käsud
fail () echo -e "AB
C
";
fail | tac -s "
"
Väljund
Meil õnnestus HTML-leht teisendada
AB
C
sisse
CB
A
kasutades tac.
Oletame, et peate tegema midagi veidi keerulisemat, näiteks käsitlema suvalist silti tac-eraldajana. Sel juhul ei pääse te ainult eraldusvõimaluse kasutamisest. Seal tuleb sisse regex-variant. Koos eraldusvõimalusega võimaldab see käsuga tac teha rohkem kui faili rea ümberpööramine. Siit saate teada.
Tac regexi variant
Regexi valik -r -s 'regex' võimaldab teil määrata, et eraldusstringi tuleb käsitleda regulaaravaldisena.
Valiku tac regex kasutamine on sama lihtne kui lisamise võimalus enne separaatorit või pärast eraldajat.
Vaadake eelmist näidet, kasutades regexi valikut koos eraldusvõimalusega. Laske tacil kõiki märgistussilte eraldajana käsitleda.
Fail
lihtsad funktsioonid
Funktsioonid on bashis lihtsad. Vähemalt see on. See paneb ekraanile stringi.
Käsud
lihtne funktsioon
()
kaja
nii lihtne kui saab lihtne funktsioon
Allikas: https: // tempptemp3.github.io / bash-funktsioonid
Käsud
fail ()kaja '
lihtsad funktsioonid
Funktsioonid on bashis lihtsad. Vähemalt see on. See paneb a
string ekraanil.
Käsud
lihtne funktsioon
()
kaja nii lihtne kui saab
lihtne funktsioon
fail | tac -r -s "] *."
Väljund
Meil õnnestus HTML-i sildid kasutades faili vastupidi teisendada. Kui uurite üksikasju, märkate, et see pole veel täiuslik.
Tac-käsk puhtas bashis
Siin on puhta bashi tac-seadme primitiivne versioon, mis muudab lhs-käsu abil sisestatud read. Tulevased versioonid jäetakse harjutuseks.
#!/ bin / bash## tac
## versioon 0.0.1 - esialgne
########################################################
tac ()
kohalik -a arr
kohalik -i i
mapfile arr -
i = "$ # arr [@]"
samas [$ i -ge 0]
tegema
kaja $ arr [i]
olgu i- = 1
tehtud
########################################################
tac
########################################################
Allikas: https: // github.com / temptemp3 / ba.sh / kämp / master / tac.sh
Tac käsk teiste käskude abil
Siin on mõned tac-rakenduse primitiivsed versioonid, kasutades muid käske, mis muudavad käsud lhs sisestatud read ümber. Tulevased versioonid jäetakse harjutuseks.
Enne alustamist sulgege silmad ja mõelge: „Mida saaks kasutada taci primitiivse versiooni rakendamiseks?”
Tuleb meelde palju käske, kuid keskendun neile, millele meil ruumi on.
gawk
Sarnaselt puhta bashi näites Tac-i käsuga salvestame tac-i rakendamiseks kõigepealt taasesitatavad lugemis read pärast kõigi ridade lugemist tagurpidi. Gawki abil näeks välja järgmine.
gawk 'rida [++ rida [0]] = $ (0) LÕPPE jaoks (i = 0; i
Nüüd proovige kasutada käsku lhs seq 10.
järgnev 10 | gawk 'rida [++ rida [0]] = $ (0) LÕPPE jaoks (i = 0; i
Nagu arvata võiks, on väljund
Harjutused
1. Funktsioon lhs () seq 10; loetleb täisarvud 1 kuni 10. Kirjutage rhs-käsk välja nii, et lhs | rhs võrdub 10864213579 ainult kasutades tac (vihje: vt Tac enne valiku näidet)
2. Tagurpidi väljund rhs () leia -mindepth 1 -maxdepth 1 -print0; , kasutades tac (vihje: vt Tac separaatori valiku näidet)
3. Laiendage takti.sh (käsk Tac puhas bash) käituda täpselt nagu tac. Peate lisama valikud ja kindlasti kontrollima nende käitumist.
4. Rakendage rekursiivse funktsioonina puhta bashi primitiivne versioon tac.
TL; DR
Jälle meeldis mulle kirjutada Bash tac käsk. Pärast lugemist loodan, et saate nõustuda, et peidus on rohkem kui arvasite. Pärast seda, kui olete üritanud põhja lähedal asuvaid asju teha, loodan, et teate, kui kasulik võiks olla käsk tac. Kui kellelgi õnnestub mõni harjutus lõpule viia või tal on vaja kodutööde tegemisel abi, andke mulle sellest teada. Aitäh,