Kako koristiti Linux cat and tac naredbe

Umjetnost prozora terminala na radnoj površini Linuxa

Fatmawati Achmad Zaenuri/Shutterstock.com



The |_+_| i |_+_| naredbe prikazuju sadržaj tekstualnih datoteka, ali ima više nego što se na prvi pogled čini. Zaronite malo dublje i naučite neke produktivne trikove naredbenog retka Linuxa.

Ovo su dvije jednostavne male naredbe, koje se često odbacuju kao samo to - prejednostavne da bi bile od ikakve stvarne koristi. Ali kada saznate na koje različite načine ih možete koristiti, vidjet ćete da su savršeno sposobni obaviti svoj pošteni dio teškog posla kada je u pitanju rad s datotekama.





Zapovjedništvo mačke

|_+_| je navikao ispitati sadržaj tekstualnih datoteka i za spajanje dijelova datoteka u veću datoteku.

U jednom trenutku — još u eri dial-up-a modem —binarne datoteke su često bile razbijene u nekoliko manjih datoteka kako bi se olakšalo preuzimanje. Umjesto preuzimanja jedne velike datoteke, povukli ste svaku manju datoteku. Ako se jedna datoteka nije uspjela ispravno preuzeti, samo biste je ponovno dohvatili.



Naravno, tada vam je trebao način da rekonstituirate zbirku manjih datoteka natrag u jednu radnu binarnu datoteku. Taj se proces zvao spajanje. I tu je |_+_| došao i odakle je dobio ime.

Oglas

Širokopojasne i optičke veze uzrokovale su da ta posebna potreba nestaje—slično kao škripavi zvukovi dial-up-a—pa što je ostalo za |_+_| raditi danas? Zapravo dosta.

Prikaz tekstualne datoteke

Imati |_+_| navedite sadržaj tekstualne datoteke u prozoru terminala, koristite sljedeću naredbu.



Provjerite je li datoteka tekstualna datoteka. Ako pokušate ispisati sadržaj binarne datoteke u prozor terminala, rezultati će biti nepredvidivi. Možda ćete završiti s zaključanom terminalskom sesijom ili još gore.

cat

Sadržaj datoteke poem1.txt prikazan je u prozoru terminala.

To je samo polovica poznate pjesme. Gdje je ostatak? Postoji još jedna datoteka koja se zove poem2.txt. Možemo napraviti |_+_| navedite sadržaj više datoteka jednom naredbom. Sve što trebamo učiniti je ispisati datoteke redom u naredbenom retku.

tac

To izgleda bolje; sada imamo cijelu pjesmu.

Korištenje mačke S manje

Pjesma je sva tu, ali je prebrzo proletjela pokraj prozora da bi pročitala prvih nekoliko stihova. Možemo usmjeriti izlaz iz |_+_| u |_+_| i pomičite se prema dolje kroz tekst našim vlastitim tempom.

cat

Oglas

Sada se možemo kretati unatrag i naprijed kroz tekst u jednom streamu, iako se nalazi u dvije zasebne tekstualne datoteke.

Numeriranje redaka u datoteci

Možemo imati mačku numerirati redove u datoteci kako je prikazana. Da bismo to učinili, koristimo |_+_| (broj) opcija.

cat

Redovi su numerirani kako su prikazani u prozoru terminala.

Ne numerirajte prazne linije

Uspjeli smo imati redove numerirane s |_+_|, ali se broje i prazni redovi između stihova. Za numeriranje redaka teksta, ali zanemarivanje praznih redaka, upotrijebite |_+_| (broj-neprazna) opcija.

cat

Sada su redovi teksta numerirani, a prazni redovi se preskaču.

Nemojte prikazivati ​​više praznih linija

Ako u datoteci postoje dijelovi uzastopnih praznih redaka, možemo pitati |_+_| zanemariti sve osim jednog praznog retka. Pogledaj ovu datoteku.

Oglas

Sljedeća naredba će uzrokovati |_+_| za prikaz samo jednog praznog retka iz svake gomile praznih redaka. Opcija koju trebamo postići je |_+_| (stisnuti-prazno) opcija.

cat

To ni na koji način ne utječe na sadržaj datoteke; samo mijenja način |_+_| prikazuje datoteku.

Prikaz kartica

Ako želite znati jesu li razmak uzrokovan razmacima ili tabulatorima, možete saznati pomoću |_+_| (prikaži kartice) opcija.

cat

Kartice su predstavljene znakovima ^I.

Prikaz krajeva linija

Možete provjeriti ima li razmaka na kraju pomoću |_+_| (show-ends) opcija.

cat

Krajevi redaka predstavljeni su znakom $.

Spajanje datoteka

Nema smisla imati pjesmu spremljenu u dvije datoteke, s po jednom polovicom u svakoj. Hajde da ih spojimo i napravimo novu datoteku s cijelom pjesmom.

less

upotrijebimo |_+_| da provjerite našu novu datoteku:

-n

Oglas

Naša nova datoteka sadrži sadržaj druge dvije datoteke.

Dodavanje teksta postojećoj datoteci

To je bolje, ali zapravo, to nije cijela pjesma. Posljednji stih nedostaje. Posljednji stih u Jabberwockyju isti je kao i prvi stih.

Ako imamo prvi stih u datoteci, možemo ga dodati na dno datoteke jabberwocky.txt i imat ćemo cijelu pjesmu.

U ovoj sljedećoj naredbi moramo koristiti |_+_|, a ne samo |_+_|. Ako koristimo jedan |_+_| dobro prepisati jabberwocky.txt. Ne želimo to učiniti. Mi želimo dodati tekst na dnu.

cat

Provjerimo sadržaj datoteke jabberwocky.txt:

-b

I konačno, svi dijelovi pjesme su zajedno.

Preusmjeravanje stdin

Možete preusmjeriti unos s tipkovnice u datoteku pomoću |_+_|. Sve što upišete preusmjerava se u datoteku dok ne pritisnete Ctrl+D. Imajte na umu da koristimo jedan |_+_| jer želimo stvoriti datoteku (ili je prepisati, ako postoji).

cat

Oglas

Možemo početi tipkati čim izdamo naredbu. Pritisnuli smo Ctrl+D kada smo završili. Zatim možemo provjeriti sadržaj nove datoteke pomoću:

cat

Taj zvuk poput daleke turbine vjerojatno je Lewis Carroll koji se vrti u svom grobu velikom brzinom.

Tac Command

|_+_| je sličan |_+_|, ali navodi sadržaj datoteka obrnutim redoslijedom .

Pogledajmo to:

-s

I datoteka je navedena u prozoru terminala obrnutim redoslijedom. U ovom slučaju to nema utjecaja na njegove književne vrijednosti.

Korištenje tac sa stdin

Korištenje |_+_| bez naziva datoteke uzrokovat će rad na unosu s tipkovnice. Pritiskom na Ctrl+D zaustavit će se faza unosa, a tac će navesti obrnutim redoslijedom sve što ste upisali.

cat

Kada se pritisne Ctrl+D, unos se obrće i prikazuje u prozoru terminala.

Korištenje tac s datotekama dnevnika

Osim niskokvalitetnih salonskih trikova, može |_+_| učiniti nešto korisno? Da ono može. Mnoge datoteke dnevnika dodaju svoje najnovije unose na dno datoteke. Korištenje |_+_| (i, suprotno intuiciji, |_+_|) možemo ubaciti zadnji unos u prozor terminala.

Oglas

Koristimo |_+_| za popis syslog datoteke u obrnutom smjeru i usmjerite je u |_+_|. Rekavši |_+_| da ispišemo samo prvi redak koji primi (što je zahvaljujući |_+_| zadnji redak u datoteci), vidimo najnoviji unos u syslog datoteci.

-T

|_+_| ispisuje najnoviji unos iz syslog datoteke i zatim izlazi.

Imajte na umu da |_+_| ispisuje samo jedan redak — kako smo tražili — ali red je toliko dugačak da se dvaput premotava. Zato izgleda kao tri izlazne linije u prozoru terminala.

Korištenje tac-a s tekstualnim zapisima

Posljednji trik |_+_| ima u rukavu je ljepotica.

Obično, |_+_| operira s tekstualnim datotekama prolazeći kroz njih red po redak, odozdo prema gore. Redak je niz znakova koji završava znakom za novi red. Ali možemo reći |_+_| za rad s drugim graničnicima. To nam omogućuje da dijelove podataka unutar tekstualne datoteke tretiramo kao zapise podataka.

Recimo da imamo datoteku dnevnika iz nekog programa koju trebamo pregledati ili analizirati. Pogledajmo njegov format s |_+_|.

-E

Oglas

Kao što vidimo, datoteka se ponavlja. Postoje sekvence od tri reda heksadecimalni vrijednosti. Svaki skup od tri retka heksadecimala ima liniju oznake koja počinje =SEQ, nakon čega slijedi niz znamenki.

Ako se pomaknemo do dna datoteke, možemo vidjeti da ima puno tih zapisa. Posljednji je pod brojem 865.

Pretpostavimo da iz bilo kojeg razloga trebamo raditi kroz ovu datoteku obrnutim redoslijedom, zapis podataka po zapis podataka. Redoslijed triju heksadecimalnih retka u svakom zapisu podataka mora se sačuvati.

Zabilježit ćemo da posljednja tri retka u datoteci počinju heksadecimalnim vrijednostima 93, E7 i B8, tim redoslijedom.

Koristimo |_+_| da biste preokrenuli datoteku. To je vrlo duga datoteka pa ćemo je prenijeti u |_+_|.

cat

To preokreće datoteku, ali to nije rezultat koji želimo. Želimo da se datoteka obrne, ali redovi u svakom zapisu podataka moraju biti u izvornom redoslijedu.

Oglas

Ranije smo zabilježili da posljednja tri retka u datoteci počinju heksadecimalnim vrijednostima 93, E7 i B8, tim redoslijedom. Redoslijed tih linija je obrnut. Također, redovi =SEQ su sada ispod svaki skup od tri heksadecimalna reda.

|_+_| u pomoć.

>>

Razložimo to.

The |_+_| (separator) opcija obavještava |_+_| ono što želimo koristiti kao graničnik između naših zapisa. Govori |_+_| ne koristiti svoj uobičajeni znak za novi red, već umjesto toga koristiti naš separator.

The |_+_| (regex) opcija govori |_+_| tretirati niz separatora kao a regularni izraz .

The |_+_| (prije) opcija uzrokuje |_+_| za popis separatora prije svaki zapis umjesto iza njega (što je uobičajena pozicija njegovog zadanog separatora, znaka za novi red).

The |_+_| (razdjelnik) niz |_+_| dešifrira se na sljedeći način:

The |_+_| znak predstavlja početak retka. Nakon toga slijedi |_+_|. Ovo daje upute |_+_| za traženje svakog pojavljivanja =SEQ. na početku retka, nakon čega slijedi bilo koji niz znamenki (označen s |_+_|), a nakon njega slijedi bilo koji drugi skup znakova (označen s |_+_|).

Ubacujemo sve u |_+_|, kao i obično.

obrnuta datoteka dnevnika s ispravno oblikovanim zapisima podataka

Naša datoteka je sada prikazana obrnutim redoslijedom sa svakim navedenim redom oznake =SEQ prije njegova tri retka heksadecimalnih podataka. Tri retka heksadecimalnih vrijednosti nalaze se u njihovoj izvornik red unutar svakog zapisa podataka.

Oglas

To možemo jednostavno provjeriti. Prva vrijednost prva tri retka heksadecimalne (koja su bila posljednja tri retka prije nego što je datoteka obrnuta) odgovara vrijednostima koje smo ranije zabilježili: 93, E7 i B8, tim redoslijedom.

To je pravi trik za jednoliner terminalskog prozora.

Sve ima svrhu

U svijetu Linuxa, čak i naizgled najjednostavnije naredbe i uslužni programi mogu imati iznenađujuća i moćna svojstva.

Filozofija dizajna jednostavnih alata koji dobro rade jednu stvar , i koji lako funkcioniraju s drugim uslužnim programima, doveo je do nekih čudnih malih naredbi, kao što je |_+_|. Na prvi se pogled čini da je to pomalo neobično. Ali kada zavirite ispod površine, postoji neočekivana moć koju možete iskoristiti u svoju korist.

Ili, kako kaže druga filozofija, ne preziri zmiju jer nema rogove, jer tko će reći da neće postati zmaj?

Linux naredbe
Datoteke katran · pv · mačka · tac · chmod · zahvat · razl · sed · S · čovjek · pushd · popd · fsck · testdisk · sljed · F D · pandok · CD · $PATH · awk · pridružiti · jq · preklopiti · jedinstven · journalctl · rep · država · ls · fstab · izbaciti · manje · chgrp · chown · rev · izgled · žice · tip · preimenovati · patentni zatvarač · otvoriti rajsfešlus · montirati · razmontirati · instalirati · fdisk · mkfs · rm · rmdir · rsync · df · gpg · mi · nano · mkdir · iz · ln · zakrpa · Pretvoriti · rclone · usitniti · SRM
Procesi alias · zaslon · vrh · Lijepo · renice · napredak · strace · sustav · tmux · chsh · povijesti · na · serija · besplatno · koji · dmesg · usermod · p.s · chroot · xargs · tty · ružičasti · lsof · vmstat · pauza · zid · Da · ubiti · spavati · sudo · njegov · vrijeme · groupadd · usermod · grupe · lshw · ugasiti · ponovno podizanje sustava · Stop · isključenje · passwd · lscpu · crontab · datum · bg · fg
Umrežavanje netstat · ping · traceroute · ip · ss · tko je · fail2ban · bmon · vas · prst · nmap · ftp · kovrča · wget · tko · tko sam ja · U · iptables · ssh-keygen · ufw

POVEZANO: Najbolja prijenosna računala s Linuxom za programere i entuzijaste

PROČITAJTE SLJEDEĆE Fotografija profila Davea McKaya Dave McKay
Dave McKay je prvi put koristio računala kada je bušena papirna traka bila u modi i od tada se bavi programiranjem. Nakon više od 30 godina u IT industriji, sada je stalni tehnološki novinar. Tijekom svoje karijere radio je kao freelance programer, voditelj međunarodnog tima za razvoj softvera, voditelj projekta IT usluga, a nedavno i kao službenik za zaštitu podataka. Njegovo pisanje objavili su howtogeek.com, cloudsavvyit.com, tenterpriser.com i opensource.com. Dave je Linux evanđelist i zagovornik otvorenog koda.
Pročitajte cijelu biografiju

Zanimljivi Članci