Linux komandas

Bash Tac komanda

Bash Tac komanda
Tac ir viena no komandām, kuru jūs neapjautat, kamēr neesat to izdarījis un atkārtoti izgudrojis riteni, kas programmēšanas praksē nav nekas neparasts neatkarīgi no tā, vai mācāties tikai virves vai esat profesionālis ar ilggadēju pieredzi. lielīties, tu esi satriecošs. Ja jūsu rokas ir tīras, tad jums ir labi; Katrā ziņā jūs gaida kārums, es izkrautu visu, ko zinu par komandu tac un vēl vairāk. Turpini lasīt.

Pazīstams arī kā reverse cat, tac vienkārša komandrindas utilīta, kas ļauj mainīt izejas rindas, izmantojot | iebūvēts cauruļu operators un tac. Tas ir, ja jums ir komanda kreisajā pusē (lhs) un vēlaties mainīt tā izvades saturu, viss, ko jūs darītu, ir rakstīt lhs | tac. Tieši tā!

Jāatzīst, ka takā ir kas vairāk, nekā šķiet. Neuztraucieties. Mēs to visu nokārtosim savlaicīgi.

Ieteikumi par tac

Lietot vai nelietot, tas ir jautājums. Jūs nevēlaties, lai tac, kad jums tas nav jādara. Tomēr, ja vēlaties izplatīt tac kā maizes un sviesta komandu, tas ir atkarīgs no jums. Tikmēr šeit ir mans padoms par tac abām pusēm, lai saglabātu tikpat neitrālu attieksmi.

Kad lietot tac

Ir gadījumi, kad jāizmanto tac, kas palīdz komandrindā iegūt vairāk, izmantojot mazāk kodu un laiku, kas pavadīts lhs komandu opciju izpētē.

Kad neesat pārliecināts par lhs iespējām

Daudzām komandām, piemēram, kārtot, ir iespēja mainīt komandas izvadi. Tomēr, ja neesat pārliecināts, vai komandai kreisajā pusē ir -r opcija mainīt izvadi, tac ir drošs veids, kā mainīt izejas līnijas.

Kad sniegumam nav nozīmes

Lai gan nenozīmīgi, lielākā daļa komandu, kas tiek izmantotas kopā ar iebūvētu opciju, lai mainītu izvadi, darbojas labāk nekā izvadi caur tac. Tātad, ja neliela veiktspējas nobīde nav problēma, cauruļvadu ievadīšana tac, lai atskaņotu izvadi otrādi, ir kārtībā.

Kad nelietot tac

Ir reizes, kad jūs nedrīkstat lietot tac, jo jūs zināt labāk. Šeit ir daži, kas jāatzīmē.

Kad jūs zināt komandu lhs, ir iespēja mainīt izejas līnijas

Kā jau teicu: “Lielākajā daļā komandu ir opcija mainīt izvadi.”Ja jūs zināt, ka konkrētai komandai lhs ir opcija, jūs nedrīkstat izmantot tac. Galu galā -r ir īsāks par - | tac.

Kad veiktspējai ir nozīme

Kā jau es teicu: “Lhs reversās opcijas izmantošana var darboties labāk nekā tac.”Ja jūs vēlaties izspiest dažas sekundes bash skriptā vai nodarbojaties ar lielākiem failiem, kuru lasīšana prasa laiku, jūs nevarat izmantot tac.

Tac palīdzība

Palaižot komandu tac vai man tac, tiek parādīts lietojums kopā ar opcijām, kuras var izmantot. Lūk, ko gaidīt.

Komandas

tac --palīdzība

Rezultāts

Tac versija

Kāda es esmu versija?
Jūs esat sava jaunākā versija. Tomēr, ja kāda versija ir jūsu tac, tam ir iespēja.

Komandas

tac - versija

Rezultāts

Piezīmes

Ja jūs izmantojat tac FreeBSD vai macOS, garā versijas opcija var nebūt pieejama. Tādā gadījumā mēģiniet -v vai man tac. Ja esat mēģinājis, dariet man zināmu. ES esmu ziņkārīgs. Paldies

Tac iespējas

Bez palīdzības un versijas tac nav daudz iespēju. Par to, kas tam ir, jūs noteikti uzzināsiet, ka tac nav tikai vecs reversais kaķis.

Tac pirms iespējas

Opcija -b ļauj mainīt to, kā atdalītājs tiek pievienots izvadā. Pēc noklusējuma jaunās līnijas atdalītājs tiek pievienots aiz katras līnijas.

Es zinu, ka tas ir mulsinoši. Sadalīsim to pēc piemēra.

Pirmkārt, redzēsim, kā izskatās mūsu produkcija, pirms lietojat tac -b.

Komandas

10. sek

Rezultāts

Tagad redzēsim, kāda būs mūsu izeja pēc tac izmantošanas bez -b.

Komandas

10. sek tac

Rezultāts

Tagad redzēsim, kāda izeja pārvēršas par tac -b izmantošanu.

Komandas

10. sek tac -b

Rezultāts

Tac separatora opcija

Atdalītāja opcija -s 'burtiskā virkne' ļauj norādīt rakstzīmi vai rakstzīmju secību, ko tac izmanto, lai atšķirtu līnijas. Pēc noklusējuma tiek izmantots jaunās līnijas raksturs (“0a” sešstūrī).

Sākotnēji nav skaidrs, kā izmantot tac separatora opciju. Tomēr, tiklīdz jūs zināt, ka tas ir, ir grūti nemēģināt to izmantot.

Apsveriet šo piemēru, kas darbojas ar līnijām, kas attēlotas ar sešstūru.

Komandas

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

Rezultāts

Piezīmes

(1) Tas varētu šķist niecīgi, jo tiek lietots 20 tac komanda, tomēr tādā gadījumā mēs netērējām laiku, strādājot pie izejas straumes sešstūrī. Šī modeļa izmantošana ir noderīga, ja atsevišķais nav kaut kas niecīgs, jo jaunais līnijas raksturs, piemēram, nulles baits.

Tagad mazāk mēģiniet izmantot tac kaut ko nedaudz neapstrādātu un vairāk meta, piemēram, vienkāršu HTML.

Apsveriet šo failu.

Fails

A
B
C

Komandas

fails () atbalss-e "A
B
C
";
fails | tac -s "
"

Rezultāts

Mums izdevās pārveidot HTML lapu

A
B
C

vērā

C
B
A

izmantojot tac.

Pieņemsim, ka jums ir jādara kaut kas nedaudz sarežģītāks, piemēram, pret jebkuru tagu jāizturas kā pret atdalītāju. Tādā gadījumā jūs nepazudīsit, izmantojot tikai separatora opciju. Tieši šeit parādās regex opcija. Kopā ar atdalītāja opciju tas ļauj jums izdarīt vairāk ar komandu tac nekā mainīt faila rindu. Lūk, kā.

Tac regex variants

Regex opcija -r -s 'regex' ļauj norādīt, ka atdalītāja virkne jāuzskata par regulāru izteiksmi.

Opcijas tac regex izmantošana ir tikpat vienkārša kā opcijas -r pievienošana pirms vai pēc atdalītāja.

Apsveriet iepriekšējo piemēru, izmantojot opciju regex kopā ar atdalītāja opciju. Pieņemsim, ka tac jebkuru marķēšanas tagu uzskata par atdalītāju.

Fails



vienkāršas funkcijas


Funkcijas ir vienkārši bash. Vismaz šis ir. Tas liek virkni uz ekrāna.


Komandas


vienkārša funkcija
()
atbalss
tik vienkārši, kā tas izpaužas vienkārša funkcija

Avots: https: // tempptemp3.github.io / bash-funkcijas

Komandas

fails ()

atbalss '



vienkāršas funkcijas

Funkcijas ir vienkārši bash. Vismaz šis ir. Tas liek
virkne uz ekrāna.

Komandas



vienkārša funkcija

(
)

atbalss tik vienkārši, kā tas izpaužas

vienkārša funkcija
"

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

Rezultāts

Mums izdevās konvertēt HTML lapu, reversējot failu, izmantojot HTML tagus. Ja izpētīsit detaļas, pamanīsit, ka tas vēl nav ideāls.

Tac komanda tīrā basā

Šeit ir primitīva tac ieviešanas versija tīrā basā, kas apgriež līnijas, kuras ievada ar lhs komandu. Nākamās versijas tiek atstātas kā vingrinājums.

#!/ bin / bash
## tac
## versija 0.0.1 - sākotnējais
#########################################################
tac ()
vietējais -a arr
vietējais -i i
mapfile arr -
i = "$ # arr [@]"
kamēr [$ i -ge 0]
darīt
atbalss $ arr [i]
ļaujiet i- = 1
izdarīts

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

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

Tac komanda, izmantojot citas komandas

Šeit ir dažas primitīvas tac implementācijas versijas, izmantojot citas komandas, kas maina līnijas, kuras ievada komanda lhs. Nākamās versijas tiek atstātas kā vingrinājums.

Pirms mēs sākam, aizveriet acis un padomājiet: “Ko varētu izmantot, lai ieviestu primitīvu tac versiju?”
Prātā nāk daudzas komandas, bet es pievērsīšos tām, kurām mums ir vieta.

gawk

Līdzīgi kā Tac komandā tīrā bash piemērā, lai ieviestu tac, mēs vispirms saglabāsim atkārtotās atskaņotās lasītās rindas apgrieztā secībā pēc visu rindu izlasīšanas. Lūk, kā tas izskatās, izmantojot gawk.

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

Tagad mēģiniet izmantot komandu lhs 10. sek.

 10. sek gawk 'line [++ line [0]] = $ (0) END par (i = 0; i

Kā jūs varētu sagaidīt, produkcija ir

Vingrinājumi

1. Funkcija lhs () sek 10; uzskaita skaitļus no 1 līdz 10. Izrakstiet komandu rhs tā, lai lhs | rhs ir vienāds ar 10864213579, izmantojot tikai tac (padoms: skatiet Tac pirms opcijas piemēra)
2. Apgriezt rhs () izeju atrast -mindepth 1 -maxdepth 1 -print0; , izmantojot tac (padoms: skatiet Tac separatora opcijas piemēru)
3. Pagarināt tac.sh (Tac komandā tīrā basā) izturēties tieši tāpat kā tac. Jums būs jāpievieno opcijas un jāpārbauda viņu uzvedība.
4. Īstenojiet primitīvu tac versiju tīrā basā kā rekursīvu funkciju.

TL; DR

Man atkal patika rakstīt komandu Bash tac. Pēc iepazīšanās es ceru, ka jūs varat piekrist, ka takā ir vairāk nekā jūs domājāt. Pēc tam, kad esat mēģinājis kārtīgi izdarīt lietas apakšā, es ceru, ka jūs zināt, cik noderīga varētu būt tac komanda. Ja kādam izdodas izpildīt kādu no vingrinājumiem vai viņam nepieciešama palīdzība mājasdarbu veikšanā, dariet man zināmu. Paldies,

Izmantojot X-Mouse Button Control, atšķirīgi mainiet peles pogas atšķirīgai programmatūrai
Varbūt jums ir nepieciešams rīks, kas varētu mainīt peles vadību ar katru lietoto lietojumprogrammu. Ja tas tā ir, varat izmēģināt lietojumprogrammu a...
Microsoft Sculpt Touch bezvadu peles apskats
Es nesen lasīju par Microsoft Sculpt Touch bezvadu pele un nolēma to nopirkt. Pēc kāda laika izmantošanas es nolēmu dalīties savā pieredzē ar to. Šo b...
AppyMouse ekrāna skārienpaliktnis un peles rādītājs Windows planšetdatoriem
Planšetdatoru lietotājiem bieži pietrūkst peles rādītāja, it īpaši, ja viņi parasti lieto klēpjdatorus. Skārienekrāna viedtālruņiem un planšetdatoriem...