Príkazy pre Linux

Príkaz Bash Tac

Príkaz Bash Tac
Tac je jeden z tých príkazov, ktoré si neuvedomíte, kým to už neurobíte a neobnovíte to, pretože vynalézal koleso, čo nie je v praxi programovania nič neobvyklé, či už sa len učíte povrazy alebo ste profesionál s dlhoročnými skúsenosťami. chváliť sa, si úžasný. Ak sú vaše ruky čisté, potom sú dobré pre vás; Či tak alebo onak, čakáte na lahôdku, vyložím všetko, čo viem o príkaze tac a ďalšie. Pokračuj v čítaní.

Tiež známy ako reverzná mačka, tac jednoduchý nástroj príkazového riadku, ktorý vám umožní obrátiť riadky vo výstupe pomocou | zabudovaný operátor potrubia a tac. To znamená, že ak máte príkaz na ľavej strane (lhs) a chcete zvrátiť obsah jeho výstupu, stačí napísať lhs | tac. To je všetko!

Je pravda, že tac je toho viac, ako sa na prvý pohľad zdá. Neboj sa. Všetko to včas pokryjeme.

Poradenstvo v tac

To je alebo nie je na použitie, to je otázka. Nebudete chcieť nechcete tac, keď nemusíte. Ak však chcete rozložiť tac ako svoj príkaz na chlieb a maslo, je to na vás. Medzitým je tu moja rada o tom, aby obidve strany zostali neutrálne.

Kedy použiť tac

Sú chvíle, kedy použiť tac, ktoré vám pomôžu vyťažiť viac z príkazového riadku s menším počtom kódu a časom stráveným skúmaním možností príkazu lhs.

Keď si nie ste istí možnosťami lhs

Mnoho príkazov, ako napríklad sort, je dodávaných s možnosťou obrátiť výstup príkazu. Ak si však nie ste istí, či má príkaz na ľavej strane možnosť -r na obrátenie výstupu, použitie tac je bezpečný spôsob, ako obrátiť výstupné riadky.

Keď na výkone nezáleží

Aj keď je to nepodstatné, väčšina príkazov používaných v spojení so vstavanou možnosťou reverzného výstupu funguje lepšie ako prepájanie výstupu do tac. Takže ak nie je problém s malým oneskorením výkonu, zavedenie príkazu tac na opakované prehranie výstupu je v poriadku.

Kedy nepoužívať tac

Sú chvíle, kedy nemusíš použiť tac, pretože to vieš lepšie. Tu je niekoľko poznámok.

Keď viete, že príkaz na lhs má možnosť obrátiť výstupné riadky

Ako som už povedal: „Väčšina príkazov je vybavená možnosťou reverzného výstupu.„Ak viete, že konkrétny príkaz lhs má voľbu, nemusíte použiť tac. Koniec koncov, -r je kratšie ako - | tac.

Keď záleží na výkone

Ako som povedal: „Použitie možnosti reverzu lhs môže fungovať lepšie ako tac.„Ak hľadáte vytlačiť niekoľko sekúnd v bash skripte alebo pracujete s väčšími súbormi, ktoré si vyžadujú čas na prečítanie, nemusíte používať tac.

Tac pomoc

Spustenie príkazu pomoci pre tac alebo man tac zobrazí použitie spolu s možnosťami, ktoré môžu byť použité. Tu je to, čo môžete očakávať.

Príkazy

tac - pomoc

Výkon

Tac verzia

Aká som verzia?
Ste najnovšou verziou samého seba. V prípade verzie vašej verzie tac však existuje možnosť.

Príkazy

tac - verzia

Výkon

Poznámky

Ak používate tac na FreeBSD alebo macOS, dlhá možnosť pre verziu nemusí byť k dispozícii. V takom prípade skúste -v alebo man tac. Ak ste to skúsili, dajte mi vedieť. som zvedavý. Vďaka

TAC možnosti

Okrem pomoci a verzie nemá tac veľa možností. Za to, čo má, určite zistíte, že tac nie je len tak hocijaká stará reverzná mačka.

Možnosť Tac before

Voľba -b umožňuje zmeniť spôsob pripojenia oddeľovača na výstupe. Štandardne je za každým riadkom pripojený oddeľovač nového riadku.

Viem, že je to mätúce. Poďme si to rozobrať na príklade.

Najprv sa pozrime, čo vyzerá náš výstup pred použitím tac -b.

Príkazy

seq 10

Výkon

Teraz sa pozrime, na čo sa náš výstup zmení po použití tac bez -b.

Príkazy

nasl. 10 | tac

Výkon

Teraz sa pozrime, na čo sa výstup zmení pomocou tac -b.

Príkazy

nasl. 10 | tac -b

Výkon

Možnosť oddeľovača TAC

Voľba oddeľovača -s 'literal string' vám ​​umožňuje určiť znak alebo postupnosť znakov, ktoré používa tac na rozlíšenie riadkov od seba. Predvolene sa používa znak nového riadku („0a“ v šestnástke).

Ako používať možnosť oddeľovača tac nie je spočiatku zrejmé. Keď však viete, že to tam je, je ťažké sa ho nepokúsiť použiť.

Uvažujme o nasledujúcom príklade, ktorý funguje na linkách znázornených v hex.

Príkazy

seq 20 | xxd -ps | tac -s '0a' | xxd -ps -r

Výkon

Poznámky

(1) Môže sa to javiť ako triviálne, keď používate sekvenciu 20 | Príkaz tac sme však v takom prípade nestrávili čas prácou na výstupnom toku v hexadecimálnom formáte. Používanie tohto vzoru je užitočné, keď samostatná položka nie je triviálna ako nový znak riadku, napríklad nulový bajt.

Teraz už menej skúste použiť tac na niečo trochu menej surové a meta ako jednoduchý HTML.

Zvážte nasledujúci súbor.

Súbor

A
B
C

Príkazy

file () echo -e "A
B
C
";
súbor | tac -s "

Výkon

Podarilo sa nám previesť stránku HTML

A
B
C

do

C
B
A

pomocou tac.

Predpokladajme, že musíte urobiť niečo trochu komplikovanejšie, ako napríklad považovať každú značku za oddeľovač tac. V takom prípade sa vám len pomocou možnosti oddeľovača nevyhnete. To je miesto, kde prichádza možnosť regulárneho výrazu. V kombinácii s možnosťou oddeľovača vám umožní urobiť viac s príkazom tac ako obrátiť riadok v súbore. Tu je postup.

Možnosť Tac regex

Voľba regex -r -s 'regex' vám ​​umožňuje určiť, že s oddeľovacím reťazcom sa má zaobchádzať ako s regulárnym výrazom.

Ako používať voľbu tac regex je také jednoduché ako pridať voľbu -r pred alebo za oddeľovač.

Zvážte predchádzajúci príklad použitia možnosti regex v kombinácii s možnosťou oddeľovača. Poďme s tac zaobchádzať s každou značkou ako s oddeľovačom.

Súbor



jednoduché funkcie


Funkcie sú jednoduché. Aspoň tento je. Vloží na obrazovku reťazec.


Príkazy


jednoduchá funkcia
()
ozvena
tak jednoduché, ako to len ide jednoduchá funkcia

Zdroj: https: // temptemp3.github.io / bash-funkcie

Príkazy

súbor ()

ozvena



jednoduché funkcie

Funkcie sú jednoduché. Aspoň tento je. Kladie to a
reťazec na obrazovke.

Príkazy



jednoduchá funkcia

(
)

ozvena tak jednoduché, ako to len ide

jednoduchá funkcia


súbor | tac -r -s "] *.„

Výkon

Podarilo sa nám previesť stránku HTML, ktorá obrátila súbor pomocou značiek HTML. Ak sa pozriete do detailov, všimnete si, že to ešte nie je dokonalé.

Tac príkaz v čistom bashe

Toto je primitívna verzia implementácie tac v čistom bashe, ktorá obracia riadky privádzané príkazom lhs. Budúce verzie sú ponechané ako cvičenie.

#!/ bin / bash
## tac
## verzia 0.0.1 - počiatočné
######################################################
tac ()
miestny -a arr
miestne -i i
arr. mapfile -
i = "$ # arr [@]"
while [$ i -ge 0]
robiť
echo $ arr [i]
nech i- = 1
hotový

#####################################################
tac
#####################################################

Zdroj: https: // github.com / temptemp3 / ba.sh / blob / master / tac.š

Príkaz Tac pomocou iných príkazov

Tu je niekoľko primitívnych verzií implementácie tac pomocou iných príkazov, ktoré obracajú riadky privádzané príkazom lhs. Budúce verzie sú ponechané ako cvičenie.

Než začneme, zatvorte oči a premýšľajte: „Čo by sa dalo použiť na implementáciu primitívnej verzie tac?“
Napadne ma veľa príkazov, ale zameriam sa na tie, pre ktoré máme priestor.

civieť

Podobne ako v príkaze Tac v príklade čistého bash, na implementáciu tac by sme najskôr po načítaní všetkých riadkov uložili prečítané riadky, ktoré sa majú prehrať opačne. Takto by to vyzeralo s použitím gawku.

 gawk 'line [++ line [0]] = $ (0) END for (i = 0; i

Teraz skúste použiť na príkaze lhs seq 10.

 nasl. 10 | gawk 'line [++ line [0]] = $ (0) END for (i = 0; i

Ako by ste čakali, výstup je

Cvičenia

1. Funkcia lhs () seq 10; vypíše celé čísla 1 až 10. Napíšte príkaz rhs tak, aby lhs | rhs sa rovná 10864213579 iba pri použití tac (Tip: pred príkladom možnosti pozri Tac)
2. Obrátiť výstup rhs () find -mindepth 1 -maxdepth 1 -print0; pomocou tac (Tip: pozri príklad možnosti oddeľovača Tac)
3. Predĺžiť tac.sh (v príkaze Tac v čistom bashe), aby sa správal presne ako tac. Budete musieť pridať možnosti a vyskúšať ich správanie.
4. Implementujte primitívnu verziu tac v čistom bashe ako rekurzívnu funkciu.

TL; DR

Opäť ma bavilo písať príkaz Bash tac. Po prečítaní dúfam, že môžete súhlasiť s tým, že je toho ešte veľa, ako ste si mysleli. Tiež dúfam, že keď sa pokúsite robiť veci úplne zdola, dúfam, že viete, aké užitočné by mohol byť príkaz tac. Ak sa niekomu podarí dokončiť ktorékoľvek z cvičení alebo potrebujete pomoc s domácimi úlohami, dajte mi vedieť. Vďaka,

Tlačidlo ľavého kliknutia myši nefunguje v systéme Windows 10
Ak používate samostatnú myš s prenosným počítačom alebo stolovým počítačom, ale nefunguje ľavé tlačidlo myši vo Windows 10/8/7 z nejakého dôvodu uvádz...
Kurzor pri písaní v systéme Windows 10 skáče alebo sa pohybuje náhodne
Ak zistíte, že kurzor myši skáče alebo sa pohybuje sám, automaticky a náhodne pri písaní na notebooku alebo počítači so systémom Windows, niektoré z t...
Ako zmeniť smer posúvania myši a touchpadu v systéme Windows 10
Myš a TouchpadNielenže uľahčujú výpočty, ale sú aj efektívnejšie a menej časovo náročné. Nemôžeme si predstaviť život bez týchto zariadení, ale je pra...