Het Gebruik van de Linux kat-en tac-Opdrachten

0
406
Fatmawati Achmad Zaenuri/Shutterstock.com

Het kat-en-tac commando ‘ s geven de inhoud van tekstbestanden, maar er is meer dan voldoet aan de ogen. Duik een beetje dieper en leren een aantal productieve Linux command line trucs.

Dit zijn twee eenvoudige kleine opdrachten, vaak afgedaan als zijnde dat te simpel om echt in gebruik. Maar als je eenmaal weet de verschillende manieren waarop je ze kunt gebruiken, zult u zien dat ze prima in staat van het doen van hun eerlijk deel van de zwaar tillen als het gaat om het werken met bestanden.

Het cat Commando

kat wordt gebruikt voor het onderzoeken van de inhoud van tekst bestanden, en bij delen van bestanden samen tot een groter bestand.

Op een keer—terug in de tijd van de dial-up modem—binaire bestanden zijn vaak opgesplitst in een aantal kleinere bestanden te downloaden makkelijker. In plaats van het downloaden van een groot bestand, dat u terug getrokken elk kleiner bestand. Als een enkel bestand niet downloaden correct, zou u alleen ophalen om het bestand weer.

Natuurlijk, je dan behoefte aan een manier om de wedersamenstelling van de verzameling van kleinere bestanden terug naar de één werkt binair bestand. Dat proces werd genoemd aaneen. En dat is waar de kat kwam en waar het dankt zijn naam aan.

Breedband en glasvezel verbindingen hebben ertoe geleid dat met name behoefte te vervagen, net als gillend dial-ups geluiden, dus wat blijft er over voor de kat te doen vandaag? Heel veel eigenlijk.

Het weergeven van een Tekst Bestand

Om de kat een lijst met de inhoud van een tekstbestand naar een terminal venster, gebruikt u de volgende opdracht.

Zorg ervoor dat het bestand is een tekstbestand. Als u probeert om de inhoud van een binair bestand naar het terminal venster is het resultaat onvoorspelbaar. Je zou kunnen eindigen met een vergrendelde sessie of erger.

kat poem1.txt

De inhoud van het bestand poem1.txt zijn weergegeven in het terminal-venster.

Dat is slechts de helft van het beroemde gedicht. Waar is de rest? Daar ‘s ander bestand hier genoemd poem2.txt. We kunnen de kat een lijst met de inhoud van meerdere bestanden met een opdracht. Alles wat wij moeten doen is de lijst van de bestanden in de juiste volgorde op de commando-regel.

kat poem1.txt poem2.txt

Dat ziet er beter uit; we zijn de hele gedicht nu.

Met behulp van de kat Met minder

Het gedicht is er allemaal, maar het schot langs het raam te snel voor het lezen van de eerste paar verzen. We kunnen de pijp van de uitvoer van cat in minder en scroll naar beneden door de tekst op ons eigen tempo.

kat poem1.txt poem2.txt | minder

We kunnen nu met verplaatsen voorwaarts en achterwaarts door de tekst in één stroom, zelfs als het wordt gehouden in twee aparte bestanden.

De nummering van de Regels in een Bestand

We hebben kat het aantal regels in het bestand dat wordt weergegeven. Om dit te doen, gebruiken we de optie-n (aantal) optie.

cat -n poem1.txt

De lijnen zijn genummerd zoals ze worden weergegeven in het terminal venster.

Niet het Aantal Lege Regels

We zijn erin geslaagd om de lijnen genummerd door kat, maar de lege regels tussen de verzen zijn geteld als goed. Om de tekst in te lijnen genummerd, maar negeren de lege regels, gebruik je de-b (aantal-niet-lege) optie.

cat -b poem1.txt

Nu de regels zijn genummerd, en de lege regels worden overgeslagen.

Don ‘ t Show Meerdere Lege Regels

Als er delen van opeenvolgende lege regels in een bestand, kunnen we vragen de kat te negeren, maar een lege regel. Kijk naar dit bestand.

De volgende opdracht zal veroorzaken kat om alleen een lege lijn tussen elk stel lege regels. De optie die we nodig hebben om dit te bereiken is de -s (squeeze-lege) optie.

kat -s poem1.txt

Dit heeft geen invloed op de inhoud van het bestand op enigerlei wijze; het verandert de manier kat geeft het bestand weer.

Display Tabs

Als u wilt weten of een spatie wordt veroorzaakt door spaties of tabs kunt u vinden met behulp van de -T (laat-tabs) optie.

kat -T poem1.txt

De tabbladen zijn vertegenwoordigd door de tekens “^I”.

Het weergeven van de Uiteinden van Lijnen

U kunt controleren of trailing witruimte met behulp van de-E (toon-ends) optie.

kat -E poem1.txt

De uiteinden van de lijnen worden vertegenwoordigd door het “$” teken.

Het Samenvoegen Van Bestanden

Het heeft geen zin om een gedicht opgeslagen in twee bestanden, met de ene helft in elk. Laten we samen te voegen en maak een nieuw bestand met de hele gedicht in.

kat poem1.txt poem2.txt > jabberwocky.txt

laten we gebruik maken van de kat te controleren onze nieuwe bestand:

kat jabberwocky.txt

Onze nieuwe bestand bevat de inhoud van de andere twee bestanden.

Tekst toevoegen aan een Bestaand Bestand

Dat is beter, maar in feite, het is niet het hele gedicht. Het laatste vers ontbreekt. Het laatste vers in Jabberwocky is hetzelfde als het eerste vers.

Als we het eerste vers in een bestand, kunnen we deze toevoegen aan de onderkant van de jabberwocky.txt bestand, en we hebben het volledige gedicht.

In deze opdracht hebben we gebruiken >>, niet alleen >. Als we gebruik maken van een enkele > we gaan overschrijven jabberwocky.txt. We willen niet te doen. We willen toe te voegen tekst aan de onderkant van het.

kat first_verse.txt >> jabberwocky.txt

Kijkt u eens naar de inhoud van de jabberwocky.txt bestand:

kat jabberwocky.txt

En tot slot worden alle onderdelen van het gedicht samen.

Het omleiden van stdin

U kunt omleiden invoer van het toetsenbord in een bestand met de kat. Alles wat je typt wordt omgeleid naar het bestand totdat u drukt u op Ctrl+D. Merk op dat we gebruik maken van een enkele > omdat we het bestand wilt maken (of overschrijven, als dit bestaat).

kat > my_poem.txt

We kunnen beginnen met typen zodra wij de opdracht. We raken Ctrl+D wanneer we klaar zijn. We kunnen dan controleren de inhoud van het nieuwe bestand met:

kat my-poem.txt

Dat klinkt als een ver-uit-de typeturbine is waarschijnlijk Lewis Carroll draaien in zijn graf bij hoge snelheid.

De tac Opdracht

tac is vergelijkbaar met kat, maar het bevat de inhoud van bestanden in omgekeerde volgorde.

Laten we zien dat:

tac my_poem.txt

En het bestand wordt vermeld op de terminal-venster in omgekeerde volgorde. In dit geval heeft het geen invloed op zijn literaire merites.

Met behulp van tac Met stdin

Met behulp van tac zonder een bestandsnaam zorgt ervoor dat het te opereren op de input van het toetsenbord. Ctrl+D zal stoppen met de input fase, en tac zal een lijst in omgekeerde volgorde van wat je had getypt.

tac

Wanneer u op Ctrl+D is geraakt, is de ingang ongedaan gemaakt en vermeld op het terminal venster.

Met behulp van tac Met Log-Bestanden

Afgezien van low-grade melkstal trucs, kan tac iets doen wat nuttig? Ja, dat kan. Veel log-bestanden toevoegen met hun nieuwste items aan de onderkant van het bestand. Met tac (en, tegen de intuïtie in, ga) kunnen we een pop de laatste vermelding in het terminal venster.

Wij maken gebruik van tac om een lijst van de syslog-bestand in omgekeerde volgorde, en de slang in het hoofd. Door het vertellen van kop tot alleen afdrukken van de eerste lijn krijgt (die dankzij tac is de laatste regel in het bestand), zien we de laatste vermelding in het syslog-bestand.

tac /var/log/syslog | head -1

hoofd drukt de laatste vermelding van het syslog-bestand en wordt vervolgens afgesloten.

Merk op dat hoofd is alleen afdrukken op één lijn—als we gevraagd—maar de lijn is zo lang loopt deze ongeveer twee keer. Dat is waarom het lijkt alsof de drie regels van de uitvoer in het terminal-venster.

Met behulp van tac met Tekst Records

De laatste truc tac tot zijn beschikking heeft is een schoonheid.

Meestal, tac werkt op tekst bestanden werkt zijn weg door ze regel voor regel, van beneden naar boven. Een lijn is een opeenvolging van tekens afgesloten door een newline karakter in. Maar we weten tac te werken met andere scheidingstekens. Dit stelt ons in staat om de behandeling van “stukken” van de gegevens in het tekstbestand met gegevens records.

Laten we zeggen dat we een log-bestand van een programma dat we nodig hebben om te beoordelen of analyseren. Laten we eens een kijkje op haar formaat met minder.

minder logfile.dat

Zoals we kunnen zien, er is een herhalend formaat van het bestand. Er zijn reeksen van drie lijnen van hexadecimale waarden. Elke set van drie lijnen van hexadecimale heeft een label regel die begint met “=SEQ”, gevolgd door een reeks cijfers.

Als we scroll naar de onderkant van het bestand, kunnen we zien dat er een heleboel van deze records. De laatste is genummerd 865.

Stel dat om wat voor reden moeten we aan het werk door dit bestand in omgekeerde volgorde, data record, een record. De lijn volgorde van de drie hexadecimale lijnen in elke record moet worden bewaard.

We maken een opmerking die de laatste drie regels in het bestand begint met hexadecimale waarden 93, E7 en B8, in die volgorde.

Laten we gebruik maken van de tac voor het omkeren van het bestand. Het is een heel lange file dus we pijp in minder.

tac logfile.dat | minder

Die keert het bestand, maar het is niet het resultaat dat we willen. We willen het bestand te worden teruggedraaid, maar de lijnen in elke gegevensrecord moeten worden in hun oorspronkelijke volgorde.

We boekten eerder op dat de laatste drie regels in het bestand begint met hexadecimale waarden 93, E7 en B8, in die volgorde. De volgorde van deze lijnen is teruggeboekt. Ook de “=SEQ” de lijnen zijn nu onder elke set van drie hexadecimale lijnen.

tac aan de redding.

tac -b -r -s ^=SEQ.+[0-9]+*$ logfile.dat | minder

Laten we breken die naar beneden.

De -s (separator) optie geeft tac wat we willen gebruiken als scheidingsteken tussen onze administratie. Het vertelt tac niet gebruik te maken van de gebruikelijke newline-character, maar gebruik te maken van onze scheidingsteken voor in de plaats.

De -r (regex) optie geeft de tac voor de behandeling van de tekst als een reguliere expressie.

De -b (voor) optie zorgt ervoor dat het tac aan de lijst scheidingsteken voor elke record in plaats van na (dat is de gebruikelijke positie van het standaard scheidingsteken, het newline-teken).

De -s (separator) string ^=SEQ.+[0-9]+*$ is ontcijferd als volgt:

Het ^ – teken staat voor het begin van de regel. Dit wordt gevolgd door =SEQ.+[0-9]+*$. Dit draagt tac te kijken voor elk exemplaar van “=SEQ.” aan het begin van een regel, gevolgd door een reeks cijfers (hieronder aangeduid met [0-9]), en gevolgd door een andere set van tekens (aangegeven met *$).

We zijn de leidingen heel wat minder, zoals gewoonlijk.

Ons bestand is nu in omgekeerde volgorde met elke “=SEQ” label lijn weergegeven voor de drie lijnen van hexadecimale gegevens. De drie lijnen van hexadecimale waarden worden in hun oorspronkelijke volgorde in elke record.

We kunnen dit gewoon. De eerste waarde van de eerste drie regels van de hexadecimale (die waren de laatste drie regels van het bestand voordat het werd omgekeerd) overeenkomen met de waarden die we namen een record van eerder: 93, E7 en B8, in die volgorde.

Dat is nogal een truc voor een terminal venster one-liner.

Alles Heeft een Doel

In de Linux-wereld, zelfs de schijnbaar eenvoudigste commando ‘s en hulpprogramma’ s kunnen tot verrassende en krachtige eigenschappen.

De design filosofie van eenvoudige hulpprogramma ‘s die één ding goed, en die gemakkelijk interwork met andere hulpprogramma’ s, heeft aanleiding gegeven tot een aantal vreemde kleine opdrachten, zoals het tac. Op het eerste gezicht, het lijkt een beetje een rariteit. Maar als je peer onder de oppervlakte, er is een onverwachte kracht die u kunt gebruiken om uw voordeel.

Of, zoals een andere filosofie zegt, “kijk niet neer op de slang voor het hebben van geen hoorns, voor wie is te zeggen het is niet een draak?”

LEES VERDER

  • “Hoe om te Zien Welke Apps Gebruik van Uw Webcam op Windows 10
  • “Future Tech: Wat We het Meest Enthousiast Over
  • “Hoe Smart Homes Werken?
  • “Wat Gaat er Gebeuren met Uw Huawei of Honor Telefoon?
  • “Zal een Smart Plug Voor Zichzelf te Betalen?