„Linux“ komandos

„Bash Tac“ komanda

„Bash Tac“ komanda
„Tac“ yra viena iš tų komandų, kurios neįsivaizduojate, kol dar nepadarėte ir nepadarėte to, nesate išradę dviračio, o tai nėra įprasta programavimo praktikoje, nesvarbu, ar jūs tik mokotės lynų, ar esate profesionalas, turintis ilgametę patirtį giriesi, tu nuostabus. Jei tavo rankos švarios, tada tau gerai; Bet kokiu atveju jūs laukiate malonumo, aš išsikrausiu viską, ką žinau apie „tac“ komandą ir dar daugiau. Skaityk.

Taip pat žinomas kaip atvirkštinis katinas, pažymėkite paprastą komandinės eilutės įrankį, kuris leidžia pakeisti išvesties eilutes naudojant | įmontuotas vamzdžių operatorius ir tac. Tai yra, jei turite komandą, kairę pusę (lhs) ir norite pakeisti jos išvesties turinį, viskas, ką padarytumėte, tai įveskite lhs | tac. Viskas!

Reikia pripažinti, kad tac yra daugiau nei atrodo. Nesijaudink. Viską apimsime laiku.

Patarimai dėl tac

Naudoti ar nenaudoti, tai yra klausimas. Nenorite, kad nenorėtumėte tacėti, kai to nereikia. Tačiau jei norite paskleisti „tac“ kaip duonos ir sviesto komandą, tai priklauso nuo jūsų. Tuo tarpu čia yra mano patarimas, kaip laikytis abiejų pusių taksi, kad išliktų neutralios.

Kada vartoti tac

Yra atvejų, kai reikia naudoti „tac“, kuris padeda jums gauti daugiau naudos iš komandinės eilutės su mažesniu kodu ir sugaištamu laiku tiriant „lhs“ komandų parinktis.

Kai nesate tikri dėl lhs variantų

Daugelyje tokių komandų, kaip rūšiavimas, yra galimybė pakeisti komandos išvestį. Tačiau jei nesate tikri, ar kairėje pusėje esančioje komandoje yra -r galimybė pakeisti išvestį, naudojant tac yra tikras būdas pakeisti išvesties linijas.

Kai pasirodymas nesvarbu

Nors ir nereikšmingos, dauguma komandų, naudojamų kartu su įmontuota galimybe pakeisti išvestį, veikia geriau nei išvesties išvedimas į tac. Taigi, jei nedidelis našumas neveikia, tinkama naudoti „tac“, kad būtų galima atkurti išvestį atvirkščiai.

Kada nenaudoti tac

Yra atvejų, kai galite nenaudoti „tac“, nes žinote geriau. Štai keli pastebimi dalykai.

Kai žinote komandą lhs, galite pakeisti išvesties eilutes

Kaip sakiau: „Daugumoje komandų yra galimybė pakeisti išvestį.„Jei žinote, kad tam tikra komanda„ lhs “gali pasirinkti, negalima naudoti„ tac “. Juk -r yra trumpesnis nei - | tac.

Kai svarbu spektaklis

Kaip sakiau: „Naudojant atvirkštinį„ lhs “variantą gali būti geriau nei„ tac “.„Jei norite išspausti kelias sekundes„ bash “scenarijuje arba susiduriate su didesniais failais, kuriems skaityti reikia laiko, galite nenaudoti„ tac “.

Tac pagalba

Paleidus pagalbos komandą „tac“ arba „man tac“, parodomas naudojimas kartu su galimomis parinktimis. Štai ko tikėtis.

Komandos

tac - pagalba

Rezultatas

„Tac“ versija

Kokia aš esu versija?
Jūs esate naujausia savo versija. Tačiau, kokia versija yra jūsų „tac“, tam yra galimybė.

Komandos

tac - versija

Rezultatas

Pastabos

Jei „tac“ naudojate „FreeBSD“ ar „MacOS“, ilgos versijos parinkties gali nebūti. Tokiu atveju pabandykite -v arba man tac. Jei pabandėte, praneškite man. Man smalsu. Dėkoju

„Tac“ parinktys

Be pagalbos ir versijos, „tac“ neturi daug galimybių. Dėl to, ką jis turi, jūs tikrai sužinosite, kad „tac“ nėra bet kokia sena atvirkštinė katė.

Tac prieš pasirinkimą

Parinktis -b leidžia pakeisti, kaip separatorius pritvirtintas išvestyje. Pagal numatytuosius nustatymus naujos eilutės skyriklis pridedamas po kiekvienos eilutės.

Žinau, kad tai painu. Išskaidykime tai pavyzdžiu.

Pirmiausia pažiūrėkime, kaip atrodo mūsų išvestis, prieš naudodami tac -b.

Komandos

10 sek

Rezultatas

Dabar pažiūrėkime, kuo virsta mūsų išvestis naudojant tac be -b.

Komandos

10 sek tac

Rezultatas

Dabar pažiūrėkime, ką išvestis paverčia tac -b naudojimu.

Komandos

10 sek tac -b

Rezultatas

„Tac separator“ parinktis

Skyriklio parinktis -s „pažodinė eilutė“ leidžia nurodyti simbolį ar simbolių seką, kurią „tac“ naudoja linijoms atskirti. Pagal numatytuosius nustatymus naudojamas naujos eilutės simbolis („0a“ šešiakampiu).

Iš pradžių nėra akivaizdu, kaip naudoti „Tac separator“ parinktį. Tačiau, kai žinai, kad jis yra, sunku nebandyti juo naudotis.

Apsvarstykite šį pavyzdį, veikiantį linijomis, pavaizduotomis šešiakampėmis.

Komandos

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

Rezultatas

Pastabos

(1) Gali atrodyti nereikšminga, nes naudojamas 20 sek „tac“ komanda, tačiau tokiu atveju mes nepraleidome laiko dirbdami su išvesties srautu „hex“. Naudoti šį modelį yra naudinga, kai atskirasis nėra niekinis dalykas, nes naujasis eilutės simbolis, pavyzdžiui, nulis baitas.

Dabar mažiau bandykite naudoti „tac“ šiek tiek mažiau neapdorotam ir daugiau meta, pavyzdžiui, paprastam HTML.

Apsvarstykite šį failą.

Failas

A
B
C

Komandos

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

Rezultatas

Mums pavyko konvertuoti HTML puslapį

A
B
C

į

C
B
A

naudojant tac.

Tarkime, kad jums reikia padaryti šiek tiek sudėtingesnį dalyką, pvz., Traktuoti bet kokią žymą kaip „tac“ skyriklį. Tokiu atveju jūs neketinate išsisukti naudodami tik separatoriaus parinktį. Štai kur atsiranda „regex“ parinktis. Kartu su skyriklio parinktimi galite padaryti daugiau naudodami komandą tac, nei pakeisti failo eilutę. Štai kaip.

„Tac regex“ parinktis

Regex parinktis -r -s 'regex' leidžia nurodyti, kad skiriamoji eilutė turi būti traktuojama kaip įprasta išraiška.

Kaip naudoti parinktį „tac regex“ yra taip pat paprasta, kaip pridėti -r prieš arba po separatoriaus.

Apsvarstykite ankstesnį pavyzdį, naudodami parinktį regex kartu su parinktimi separatorius. Tac traktuokime bet kokią žymėjimo žymą kaip atskyriklį.

Failas



paprastos funkcijos


Bash funkcijos yra paprastos. Bent jau šis yra. Tai uždeda eilutę ekrane.


Komandos


paprasta funkcija
()
aidas
kuo paprasčiau paprasta funkcija

Šaltinis: https: // tempptemp3.github.io / bash-funkcijos

Komandos

failas ()

aidas '



paprastos funkcijos

Bash funkcijos yra paprastos. Bent jau šis yra. Tai kelia a
eilutė ekrane.

Komandos



paprasta funkcija

(
)

aidas kuo paprasčiau

paprasta funkcija
"

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

Rezultatas

Mums pavyko konvertuoti HTML puslapį, pakeičiant failą naudojant HTML žymas. Jei pažvelgsite į detales, pastebėsite, kad ji dar nėra tobula.

Tac komanda gryna bash

Čia yra primityvus „tac“ įrankio gryna versija, pakeičiantis linijas, įvestas komanda „lhs“. Ateities versijos paliekamos kaip pratimas.

#!/ bin / bash
## tac
## versija 0.0.1 - pradinis
########################################################
tac ()
vietinis -a arr
vietinis -i i
mapfile arr -
i = "$ # arr [@]"
o [$ i -ge 0]
padaryti
aidas $ arr [i]
tegul i- = 1
padaryta

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

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

„Tac“ komanda naudojant kitas komandas

Čia pateikiamos kelios primityvios „tac“ versijos versijos, naudojančios kitas komandas, kurios pakeičia linijas, įvestas komanda „lhs“. Ateities versijos paliekamos kaip pratimas.

Prieš mums pradedant, užmerkite akis ir pagalvokite: „Ką būtų galima panaudoti įgyvendinant primityvią„ tac “versiją?“
Į galvą ateina daugybė komandų, bet aš sutelksiu dėmesį į tuos, kuriems turime vietos.

gawk

Panašiai kaip „Tac“ komandoje gryname „bash“ pavyzdyje, kad įgyvendintume „tac“, pirmiausia perskaitysime visas perskaitytas eilutes perskaičiuotomis perskaitytomis eilutėmis. Štai kaip tai atrodytų naudojant gawk.

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

Dabar pabandykite naudoti komandą lhs 10 seką.

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

Kaip galima tikėtis, produkcija yra

Pratimai

1. Funkcija lhs () sek 10; išvardijami skaičiai nuo 1 iki 10. Parašykite rhs komandą taip, kad lhs | rhs yra lygus 10864213579 tik naudojant tac (Patarimas: žr. Tac prieš pasirinkimo pavyzdį)
2. Atvirkštinis rhs () išėjimas rasti -mindepth 1 -maxdepth 1 -print0; naudojant „tac“ (patarimas: žr. „Tac separator“ parinkties pavyzdį)
3. Išplėskite tac.sh (Tac komandoje gryna bash) elgtis tiksliai taip, kaip tac. Turėsite pridėti parinkčių ir būtinai išbandyti jų elgesį.
4. Įgyvendinkite primityvią „tac“ versiją gryname bash'e kaip rekursinę funkciją.

TL; DR

Man vėl patiko rašyti komandą „Bash tac“. Perskaitęs tikiuosi, kad sutiksite, jog „tac“ yra daugiau, nei manėte. Be to, pabandęs atlikti sunkius veiksmus netoli dugno, tikiuosi, kad žinote, kokia naudinga gali būti „tac“ komanda. Jei kas nors sugeba atlikti bet kurį iš pratimų arba jam reikia pagalbos atliekant namų darbus, praneškite man. Dėkoju,

Įdiekite naujausią „OpenRA“ strategijos žaidimą „Ubuntu Linux“
„OpenRA“ yra „Free / Free Real Time Strategy“ žaidimų variklis, atkuriantis ankstyvuosius „Westwood“ žaidimus, tokius kaip klasikinis „Command & Conqu...
Įdiekite naujausią „Dolecin Emulator“, skirtą „Gamecube“ ir „Wii“, sistemoje „Linux“
„Delfinų emuliatorius“ leidžia žaisti pasirinktus „Gamecube“ ir „Wii“ žaidimus „Linux“ asmeniniuose kompiuteriuose (PC). „Dolphin Emulator“ yra laisv...
Kaip naudoti „GameConqueror Cheat Engine“ sistemoje „Linux“
Straipsnyje pateikiamas „GameConqueror“ apgaulės variklio naudojimo „Linux“ vadove. Daugelis žaidėjų, žaidžiančių sistemoje „Windows“, dažnai naudoja ...