Příkazy pro Linux

Příkaz Bash Tac

Příkaz Bash Tac
Tac je jedním z těch příkazů, které si neuvědomíte, dokud jste to už neudělali, znovuobjevili kolo, což není neobvyklé v praxi programování, ať už se jen učíte lana nebo jste profesionál s dlouholetými zkušenostmi chlubit se, jsi úžasný. Pokud máte čisté ruce, pak je to dobré pro vás; Ať tak či onak, čeká vás lahůdka, vyložím vše, co vím o příkazu tac a další. Číst dál.

Také známý jako reverzní kočka, tac jednoduchý nástroj příkazového řádku, který vám umožní obrátit řádky ve výstupu pomocí | vestavěný provozovatel potrubí a TAC. To znamená, že pokud máte příkaz na levé straně (lhs) a chcete zvrátit obsah jeho výstupu, vše, co byste udělali, je zadat lhs | tac. A je to!

Je pravda, že tac je více, než se na první pohled zdá. Nedělej si starosti. Vše včas pokryjeme.

Poradenství na tac

To je nebo není, to je otázka. Nebudete chtít tac, když nemusíte. Pokud však chcete rozšířit tac jako svůj příkaz chleba a másla, je to na vás. Mezitím je moje rada ohledně toho, aby obě strany zůstaly neutrální.

Kdy použít tac

Jsou chvíle, kdy použít tac, které vám pomohou získat více z příkazového řádku s méně kódem a časem stráveným zkoumáním možností příkazu lhs.

Pokud si nejste jisti možnostmi lhs

Mnoho příkazů, jako je sort, má možnost zvrátit výstup příkazu. Pokud si však nejste jisti, zda má příkaz na levé straně možnost -r pro reverzní výstup, použití tac je jistý způsob, jak obrátit výstupní řádky.

Když na výkonu nezáleží

I když je to nevýznamné, většina příkazů používaných ve spojení s integrovanou možností reverzního výstupu funguje lépe než pipování výstupu do tac. Pokud tedy malé zpoždění výkonu není problém, pipování do tac pro opakované přehrání výstupu je v pořádku.

Kdy nepoužívat tac

Jsou chvíle, kdy nemusíte používat tac, protože to víte lépe. Zde je několik poznámek.

Pokud víte, že příkaz na lhs má možnost obrátit výstupní řádky

Jak jsem řekl: „Většina příkazů přichází s možností zpětného výstupu.„Pokud víte, že konkrétní příkaz lhs má možnost, nemusíte použít tac. Koneckonců, -r je kratší než - | tac.

Když záleží na výkonu

Jak jsem řekl: „Použití možnosti lhs reverse může fungovat lépe než tac.„Pokud hledáte vytlačit několik sekund v bash skriptu nebo máte co do činění s většími soubory, které vyžadují čas na přečtení, nemusíte používat tac.

Tac pomoc

Spuštění příkazu nápovědy pro tac nebo man tac ukazuje využití spolu s možnostmi, které lze použít. Zde je to, co můžete očekávat.

Příkazy

tac - pomoc

Výstup

Tac verze

Jaká jsem verze??
Jste nejnovější verzí sebe sama. V případě, v jaké verzi je váš tac, však existuje možnost.

Příkazy

tac - verze

Výstup

Poznámky

Pokud používáte tac na FreeBSD nebo macOS, dlouhá možnost pro verzi nemusí být k dispozici. V takovém případě zkuste -v nebo man tac. Pokud jste to zkusili, dejte mi vědět. jsem zvědav. dík

Možnosti TAC

Vedle nápovědy a verze nemá tac mnoho možností. Za to, co má, určitě zjistíte, že tac není jen tak nějaká stará reverzní kočka.

Možnost Tac before

Možnost -b umožňuje změnit způsob připojení oddělovače ve výstupu. Ve výchozím nastavení je za každým řádkem připojen oddělovač nového řádku.

Vím, že je to matoucí. Pojďme si to rozdělit na příkladu.

Nejprve se podívejme, jak vypadá náš výstup před použitím tac -b.

Příkazy

seq 10

Výstup

Nyní se podívejme, na co se náš výstup promění po použití tac bez -b.

Příkazy

č. 10 | tac

Výstup

Nyní se podívejme, na co se výstup promění pomocí tac -b.

Příkazy

č. 10 | tac -b

Výstup

Možnost oddělovače Tac

Možnost oddělovače -s 'literal string' vám ​​umožňuje určit znak nebo posloupnost znaků, které používá tac k odlišení řádků. Ve výchozím nastavení se používá znak nového řádku ('0a' v hexadecimálním formátu).

Jak používat možnost oddělovače tac není zpočátku zřejmé. Jakmile však víte, že tam je, je těžké se ho nepokoušet použít.

Zvažte následující příklad, fungující na řádcích znázorněných v šestnáctce.

Příkazy

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

Výstup

Poznámky

(1) Může se to zdát triviální, jako když používáte seq 20 | Příkaz tac jsme však v takovém případě nestrávili čas prací na výstupním proudu v hexadecimálním formátu. Použití tohoto vzoru je užitečné, když oddělený není něco triviálního jako nový znak řádku, jako je nula bajtu.

Nyní už zkuste použít tac na něco trochu méně surového a meta jako jednoduchý HTML.

Zvažte následující soubor.

Soubor

A
B
C

Příkazy

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

Výstup

Podařilo se nám převést stránku HTML

A
B
C

do

C
B
A

pomocí tac.

Předpokládejme, že musíte udělat něco trochu komplikovanějšího, jako je zacházet s jakoukoli značkou jako s oddělovačem tac. V takovém případě se nedostanete pryč pouze s použitím možnosti oddělovače samostatně. To je místo, kde přichází možnost regex. V kombinaci s možností oddělovače vám umožní dělat s příkazem tac více, než obrátit řádek v souboru. Zde je návod.

Možnost Tac regex

Možnost regex -r -s 'regex' vám ​​umožňuje určit, že s oddělovacím řetězcem bude zacházeno jako s regulárním výrazem.

Jak používat možnost tac regex je stejně snadné jako přidání volby -r před nebo za oddělovač.

Zvažte předchozí příklad pomocí možnosti regex ve spojení s možností oddělovače. Pojďme tac považovat jakoukoli značku značek za oddělovač.

Soubor



jednoduché funkce


Funkce jsou v bash jednoduché. Alespoň tento je. Vloží řetězec na obrazovku.


Příkazy


jednoduchá funkce
()
echo
tak jednoduché, jak to jen jde jednoduchá funkce

Zdroj: https: // temptemp3.github.io / bash funkce

Příkazy

soubor ()

ozvěna '



jednoduché funkce

Funkce jsou v bash jednoduché. Alespoň tento je. Klade to
řetězec na obrazovce.

Příkazy



jednoduchá funkce

(
)

echo tak jednoduché, jak to jen jde

jednoduchá funkce
''

soubor | tac -r -s "] *."

Výstup

Podařilo se nám převést stránku HTML, která obrátila soubor pomocí značek HTML. Pokud se podíváte do podrobností, zjistíte, že to ještě není dokonalé.

Tac příkaz v čistém bash

Zde je primitivní verze tac implementace v čistém bash, která obrací řádky přiváděné příkazem lhs. Budoucí verze jsou ponechány jako cvičení.

#!/ bin / bash
## tac
## verze 0.0.1 - počáteční
#######################################################
tac ()
místní -a arr
místní -i i
arr. mapfile -
i = "$ # arr [@]"
while [$ i -ge 0]
dělat
echo $ arr [i]
nechť i- = 1
Hotovo

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

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

Příkaz Tac pomocí jiných příkazů

Zde jsou některé primitivní verze implementace tac využívající jiné příkazy, které obracejí řádky přiváděné příkazem lhs. Budoucí verze jsou ponechány jako cvičení.

Než začneme, zavřete oči a přemýšlejte: „Co by bylo možné použít k implementaci primitivní verze tac?“
Mnoho příkazů mi přijde na mysl, ale já se zaměřím na ty, pro které máme prostor.

gawk

Podobně jako příkaz Tac v příkladu čistého bash, pro implementaci tac bychom nejprve uložili čtecí řádky, které se mají přehrát v opačném pořadí po přečtení všech řádků. Takto by to vypadalo pomocí gawku.

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

Nyní zkuste použít příkaz lhs seq 10.

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

Jak byste očekávali, výstup je

Cvičení

1. Funkce lhs () seq 10; seznam celých čísel 1 až 10. Vypište příkaz rhs tak, aby lhs | rhs se rovná 10864213579 pouze s použitím tac (Tip: viz Tac před příkladem možnosti)
2. Obrátit výstup rhs () find -mindepth 1 -maxdepth 1 -print0; using tac (Tip: see Tac separator option example)
3. Prodloužit tac.sh (v příkazu Tac v čistém bash), aby se choval přesně jako tac. Budete muset přidat možnosti a ověřit jejich chování.
4. Implementujte primitivní verzi tac v čistém bash jako rekurzivní funkci.

TL; DR

Opět se mi líbilo psát příkaz Bash tac. Po přečtení doufám, že můžete souhlasit s tím, že je toho ještě víc, než jste si mysleli. Také po pokusu dělat věci tvrdě u dna doufám, že víte, jak užitečný by mohl být příkaz tac. Pokud někdo zvládne některá cvičení dokončit nebo potřebuje pomoc s domácími úkoly, dejte mi vědět. dík,

Jak změnit velikost, barvu a schéma kurzoru myši a kurzoru v systému Windows 10
Ukazatel myši a kurzor ve Windows 10 jsou velmi důležité aspekty operačního systému. To lze říci i pro jiné operační systémy, takže ve skutečnosti nej...
Hry Zdarma a open source herní motory pro vývoj linuxových her
Zdarma a open source herní motory pro vývoj linuxových her
Tento článek pokryje seznam bezplatných a otevřených herních enginů, které lze použít pro vývoj 2D a 3D her v systému Linux. Existuje mnoho takových h...
Hry Výukový program Shadow of the Tomb Raider pro Linux
Výukový program Shadow of the Tomb Raider pro Linux
Shadow of the Tomb Raider je dvanáctý přírůstek do série Tomb Raider - série akčních adventur vytvořená Eidosem Montrealem. Tato hra byla docela dobře...