Linux-komennot

Bash Tac -komento

Bash Tac -komento
Tac on yksi niistä komennoista, joita et ymmärrä, ennen kuin olet jo mennyt ja tehnyt sen, keksinyt pyörän uudelleen, mikä ei ole harvinaista ohjelmoinnin käytännössä, oletko vain oppimassa köysiä vai ammattilainen, jolla on vuosien kokemus ylpeillä, olet mahtava. Jos kätesi ovat puhtaat, niin hyvä sinulle; Kummassakin tapauksessa sinulla on hemmottelu, aion purkaa kaiken, mitä tiedän tac-komennosta ja muusta. Jatka lukemista.

Tunnetaan myös nimellä käänteinen kissa, tac yksinkertainen komentorivi-apuohjelma, jonka avulla voit kääntää tulosteet rivillä | sisäänrakennettu putkioperaattori ja tac. Eli jos sinulla on komento, vasen puoli (lhs) ja haluat kääntää lähdön sisällön, tekisit vain kirjoittamalla lhs | tac. Se siitä!

Tosiaankin, tac on enemmän kuin mitä silmä näkee. Älä huoli. Käsittelemme kaiken hyvissä ajoin.

Neuvoja tacista

Jos haluat käyttää tai olla käyttämättä, se on kysymys. Et halua peukaloida, kun sinun ei tarvitse. Kuitenkin, jos haluat levittää tac leivän ja voin komennoksi, se on sinun tehtäväsi. Sillä välin tässä on neuvoni tac: n ottamisesta molempien osapuolten pysymiseksi neutraaleina.

Milloin käyttää tac

Toisinaan tac: n avulla saat enemmän irti komentorivistä, vähemmän koodia ja aikaa, joka kuluu lhs-komentovaihtoehtojen tutkimiseen.

Kun et ole varma lhs: n vaihtoehdoista

Monissa komennoissa, kuten lajittelussa, on mahdollisuus kääntää komennon tulos. Jos et kuitenkaan ole varma, onko vasemmanpuoleisella komennolla -r-vaihtoehto kääntää ulostulo, tac on varma tapa kääntää lähtölinjat.

Kun suorituskyvyllä ei ole merkitystä

Vaikka merkityksetöntä, useimmat komennot, joita käytetään yhdessä sisäänrakennetun vaihtoehdon kanssa tuotoksen kääntämiseksi, toimivat paremmin kuin johtamalla lähtö tac: iin. Joten jos pieni suorituskyvyn viive ei ole ongelma, putkistaminen taciin toistamaan lähtö käänteisesti on kunnossa.

Milloin ei pidä käyttää tac

On aikoja, jolloin et voi käyttää tacia, koska tiedät paremmin. Tässä on muutamia huomioitavia.

Kun tiedät, että lhs-komennolla on mahdollisuus kääntää lähtörivit

Kuten sanoin: "Useimmissa komennoissa on mahdollisuus kääntää lähtö.”Jos tiedät, että tietyllä lhs-komennolla on vaihtoehto, et voi käyttää tac-näppäintä. Loppujen lopuksi -r on lyhyempi kuin - | tac.

Kun suorituskyvyllä on merkitystä

Kuten sanoin, "lhs-käänteisen vaihtoehdon käyttö voi toimia paremmin kuin tac."Jos haluat purkaa muutaman sekunnin bash-komentosarjassa tai käsittelet suurempia tiedostoja, joiden lukeminen vie aikaa, et voi käyttää tac.

Tac-apu

Tac- tai man tac -ohjekomennon suorittaminen näyttää käytön ja mahdollisesti käytettävät vaihtoehdot. Tässä on mitä odottaa.

Komennot

tac --apua

Tuotos

Tac-versio

Mikä versio olen?
Olet viimeisin versio itsestäsi. Kuitenkin siinä versiossa, missä tac on, on siihen vaihtoehto.

Komennot

tac - versio

Tuotos

Huomautuksia

Jos käytät tacia FreeBSD: llä tai macOS: lla, pitkä vaihtoehtoinen versio ei välttämättä ole käytettävissä. Kokeile tällöin -v tai man tac. Jos olet kokeillut sitä, kerro siitä minulle. olen utelias. Kiitos

Tac-vaihtoehdot

Apun ja version lisäksi tacilla ei ole paljon vaihtoehtoja. Sillä, mitä sillä on, saat varmasti selville, että tac ei ole mikään vanha käänteinen kissa.

Tac ennen vaihtoehtoa

-B-vaihtoehdon avulla voit muuttaa erottimen kiinnitystä lähtöön. Oletusarvoisesti uuden rivin erotin liitetään jokaisen rivin jälkeen.

Tiedän, että se on hämmentävää. Eritellään se esimerkin avulla.

Katsotaan ensin, mitä tuotoksemme näyttää ennen tac -b: n käyttöä.

Komennot

jakso 10

Tuotos

Katsotaan nyt, mistä tuotoksemme muuttuu käytettäessä tacia ilman -b: tä.

Komennot

jakso 10 | tac

Tuotos

Katsotaan nyt, mistä tuotoksesta tulee tac -b.

Komennot

jakso 10 | tac -b

Tuotos

Tac-erotinvaihtoehto

Erotusvaihtoehdon -s 'kirjaimellinen merkkijono' avulla voit määrittää merkin tai merkkijonon, jota tac käyttää rivien erottamiseen toisistaan. Oletusarvoisesti käytetään uuden rivin merkkiä ('0a' heksadesimaalina).

Tac-erottimen käyttäminen ei ole aluksi selvää. Kuitenkin, kun tiedät, että se on siellä, on vaikea olla yrittämättä käyttää sitä.

Harkitse seuraavaa esimerkkiä, joka toimii heksalla esitetyillä viivoilla.

Komennot

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

Tuotos

Huomautuksia

(1) Se saattaa tuntua vähäpätöiseltä kuin käyttää sekvenssiä 20 | tac-komento, mutta siinä tapauksessa emme viettäneet aikaa työskentelemällä lähtövirralla hex-muodossa. Tämän mallin käyttäminen on hyödyllistä, kun erillinen ei ole jotain triviaalia, koska uusi rivimerkki, kuten nolla-tavu.

Yritä nyt vähemmän käyttää tacia hieman vähemmän raakana ja enemmän metaa, kuten yksinkertainen HTML.

Harkitse seuraavaa tiedostoa.

Tiedosto

A
B
C

Komennot

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

Tuotos

Onnistuimme muuntamaan HTML-sivun

A
B
C

osaksi

C
B
A

käyttämällä tac.

Oletetaan, että sinun on tehtävä jotain hieman monimutkaisempaa, kuten kohdella mitä tahansa tagia tac-erottimena. Siinä tapauksessa et aio päästä eroon pelkästään erotinvaihtoehdon käytöstä. Siellä regex-vaihtoehto tulee sisään. Yhdistettynä erotinvaihtoehtoon sen avulla voit tehdä enemmän tac-komennolla kuin rivin kääntäminen tiedostossa. Näin.

Tac regex -vaihtoehto

Regex-vaihtoehdon -r -s 'regex' avulla voit määrittää, että erotinmerkkijonoa on käsiteltävä säännöllisenä lausekkeena.

Tac regex -vaihtoehdon käyttäminen on yhtä yksinkertaista kuin lisäämällä -r-vaihtoehto ennen erotinta tai sen jälkeen.

Harkitse edellistä esimerkkiä käyttämällä regex-vaihtoehtoa yhdessä erotinvaihtoehdon kanssa. Olkoon tac käsitellä mitä tahansa merkintätagia erottimena.

Tiedosto



yksinkertaiset toiminnot


Toiminnot ovat yksinkertaisia ​​bashissa. Ainakin tämä on. Se asettaa merkkijonon näytölle.


Komennot


yksinkertainen toiminto
()
kaiku
niin yksinkertaista kuin se saa yksinkertainen toiminto

Lähde: https: // temptemp3.github.io / bash-toiminnot

Komennot

tiedosto ()

kaiku '



yksinkertaiset toiminnot

Toiminnot ovat yksinkertaisia ​​bashissa. Ainakin tämä on. Se asettaa a
merkkijono näytöllä.

Komennot



yksinkertainen toiminto

(
)

kaiku niin yksinkertaista kuin se saa

yksinkertainen toiminto
'

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

Tuotos

Onnistuimme muuntamaan HTML-sivun kääntämään tiedoston HTML-tunnisteiden avulla. Jos tutkit yksityiskohtia, huomaat, että se ei ole vielä täydellinen.

Tac-komento puhtaassa bashissa

Tässä on primitiivinen versio tac-työkalusta puhtaassa bashissa, joka kääntää linjat, jotka on johdettu lhs-komennolla. Tulevat versiot jätetään harjoitukseksi.

#!/ bin / bash
## tac
## versio 0.0.1 - alkukirjain
#########################################################
tac ()
paikallinen -a arr
paikallinen -i i
mapfile arr -
i = "$ # arr [@]"
kun [$ i -ge 0]
tehdä
kaiku $ arr [i]
olkoon i- = 1
tehty

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

Lähde: https: // github.fi / temptemp3 / ba.sh / möykky / master / tac.sh

Tac-komento käyttämällä muita komentoja

Tässä on joitain primitiivisiä versioita tac-työvälineistä, jotka käyttävät muita komentoja, jotka kääntävät lhs-komennolla syötetyt linjat. Tulevat versiot jätetään harjoitukseksi.

Ennen kuin aloitamme, sulje silmäsi ja ajattele: "Mitä voitaisiin käyttää primitiivisen version tacista?”
Monet komennot tulevat mieleen, mutta keskityn niihin, joille meillä on tilaa.

gawk

Samoin kuin puhtaassa bash-esimerkissä oleva Tac-komento, tac: n toteuttamiseksi tallennamme ensin toistettavat lukurivit taaksepäin, kun kaikki rivit on luettu. Näin se näyttäisi gawkilla.

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

Yritä nyt käyttää lhs-komentoa seq 10.

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

Kuten voit odottaa, tuotos on

Harjoitukset

1. Funktio lhs () seq 10; näyttää kokonaisluvut 1-10. Kirjoita rhs-komento siten, että lhs | rhs on yhtä suuri kuin 10864213579 vain käytettäessä tac (Vihje: katso Tac ennen vaihtoehtoesimerkkiä)
2. Kääntäkää rhs: n tulos () etsi -mindepth 1 -maxdepth 1 -print0; käyttämällä tac-näppäintä (Vihje: katso esimerkki Tac-erottimen vaihtoehdosta)
3. Pidennä tac.sh (Tac-komennossa puhdas bash) käyttäytyä täsmälleen kuten tac. Sinun on lisättävä vaihtoehtoja ja testattava heidän käyttäytymistään.
4. Toteuta primitiivinen versio tac: sta puhtaassa bashissa rekursiivisena toimintona.

TL; DR

Jälleen nautin Bash tac -komennon kirjoittamisesta. Luettuani toivon, että voit olla samaa mieltä siitä, että tacilla on enemmän kuin luulit. Toivon, että kun yrität tehdä asioita kovalla tavalla lähellä pohjaa, tiedät kuinka hyödyllinen tac-komento voisi olla. Jos joku onnistuu suorittamaan jonkin harjoituksista tai tarvitsee apua kotitehtävissään, ilmoita siitä minulle. Kiitos,

Best Linux Distros for Gaming in 2021
The Linux operating system has come a long way from its original, simple, server-based look. This OS has immensely improved in recent years and has no...
Kuinka siepata ja suoratoistaa pelisessiosi Linuxissa
Aikaisemmin pelaamista pidettiin vain harrastuksena, mutta ajan myötä pelialalla tapahtui valtava kasvu tekniikan ja pelaajien määrän suhteen. Peliala...
Parhaat pelit, joita voi seurata käsien seurannalla
Oculus Quest esitteli äskettäin loistavan ajatuksen seurannasta ilman ohjaimia. Yhä kasvavan määrän pelejä ja aktiviteetteja, jotka tukevat tukea joko...