Hur man Använder Linux katt och tac-Kommandon

0
429
Fatmawati Achmad Zaenuri/Shutterstock.kom

Katten och tac-kommandon för att visa innehållet i textfiler, men det är mer för dem än vad som möter ögat. Dyka lite djupare och lära dig några produktiva Linux kommandorad tricks.

Detta är två små enkla kommandon, avfärdas ofta som att vara precis som det för enkelt för att vara till någon verklig användning. Men när du känner till de olika sätt du kan använda dem, kommer du att se att de är fullt kapabla att göra sin beskärda del för att lyfta tungt när det gäller att arbeta med filer.

Katten Kommandot

katt används för att undersöka innehållet i textfiler, och att ansluta sig till delar av filer tillsammans för att bilda en större fil.

En gång i tiden—tillbaka-i en tid präglad av dial-up modem—binära filer var ofta uppdelat i flera mindre filer att ladda ner lättare. Istället för att ladda ner en stor fil, som du drog tillbaka varje mindre fil. Om en enda fil gick inte att hämta rätt, du skulle bara hämta en fil igen.

Naturligtvis, du behövde ett sätt att återskapa den samling av mindre filer tillbaka till den enda som arbetar binär fil. Att processen kallas punktlistor. Och det är där katten kom in och var den har fått sitt namn från.

Bredband och fiber-anslutningar har orsakat att ett särskilt behov av att tona mycket som skrikig dial-ups låter—så vad återstår för katten att göra idag? Ganska mycket faktiskt.

Visa en textfil

Att ha katt lista innehållet i en text-fil till ett terminal-fönster, använd följande kommando.

Se till att filen är en textfil. Om du försöker att lista innehållet i en binär fil till det terminal-fönster, resultaten kommer att vara oförutsägbar. Kan du sluta med en låst terminal session eller värre.

katt poem1.txt

Innehållet i filen poem1.txt visas i terminalfönstret.

Det är bara hälften av den berömda dikt. Var är resten av det? Det är en annan fil som här kallas poem2.txt. Vi kan göra katt-lista innehållet i flera filer med ett kommando. Allt vi behöver göra är att lista filerna i ordning på kommandoraden.

katt poem1.txt poem2.txt

Som ser bättre, vi har hela dikten nu.

Hjälp katt Med mindre

Dikten är alla där, men det sköt förbi fönstret för snabbt att läsa de första verserna. Vi kan pipe output från katt till mindre och rulla ner genom den text som finns i vår egen takt.

katt poem1.txt poem2.txt | mindre

Vi kan nu flytta bakåt och framåt genom texten i en bäck, även om det höll i två separata textfiler.

Numrera Rader i en Fil

Vi kan ha katt antalet rader i filen som den visas. För att göra detta använder vi -n (antal) alternativ.

katt -n poem1.txt

Raderna är numrerade så att de visas i terminalfönstret.

Inte Antalet Tomma Rader

Vi lyckades få den numrerade rader av katt, men den tomma rader mellan verserna är att räknas som bra. Att ha textrader numrerade men att ignorera tomma rader, använder-b (number-nonblank) alternativ.

katt -b poem1.txt

Nu sms: a linjerna är numrerade och tomma rader hoppas över.

Visa inte Flera Tomma Rader

Om det finns delar av på varandra följande tomma rader i en fil, kan vi be katt att ignorera alla men en tom rad. Titta på den här filen.

Nästa kommando kommer att orsaka en katt att visa en tom rad från vart och ett gäng tomma rader. De alternativ som vi behöver för att uppnå detta är det -s (squeeze-blank) alternativ.

cat-s poem1.txt

Detta påverkar inte innehållet i filen på något sätt, det bara ändrar sättet katt visar filen.

Visa Flikar

Om du vill veta om blanktecken orsakas av utrymmen eller flikar, kan du ta reda på med hjälp av T (show-tabs) alternativ.

cat-T poem1.txt

De flikar som representeras av tecknen “^I”.

Visa Ends på Lines

Du kan kontrollera avslutande blanksteg genom att använda-E (show-ends) som alternativ.

cat-E poem1.txt

Den slutar med raderna representeras av ” $ ” – tecken.

Sammanfoga Filer

Det är inte vettigt att ha en dikt som är sparade i två filer, med hälften vardera. Låt oss gå med dem tillsammans och gör en ny fil med hela dikten i det.

katt poem1.txt poem2.txt > jabberwocky.txt

låt oss använda katten att kolla in vår nya filen:

katt jabberwocky.txt

Vår nya filen innehåller innehållet i de andra två filerna.

Lägga till Text till en Befintlig Fil

Det är bättre, men i själva verket, det är inte hela dikten. Den sista versen är som saknas. Den sista versen i Jabberwocky är samma som i den första versen.

Om vi har fått den första versen i en fil, vi kan lägga till detta till botten av den jabberwocky.txt filen, och vi kommer att ha hela dikten.

I nästa kommando, vi har att använda >>, inte bara >. Om vi använder en enda > vi ska skriva över jabberwocky.txt. Vi vill inte göra det. Vi vill lägga till text till botten med det.

katt first_verse.txt >> jabberwocky.txt

Låt oss kolla innehållet i jabberwocky.txt fil:

katt jabberwocky.txt

Och slutligen, alla delar av dikten är tillsammans.

Omdirigering av stdin

Du kan omdirigera en insignal från tangentbord till en fil med katt. Allt du skriver är omdirigerad till filen tills du trycker på Ctrl+D. Notera att vi använder en enda > eftersom vi vill skapa filen (eller att skriva över den, om den finns).

katt my_poem.txt

Vi kan börja skriva så snart vi utfärdar kommandot. Vi trycker Ctrl+D när vi är klar. Vi kan då kontrollera innehållet i den nya filen med:

katt my-poem.txt

Låter som en långt mindre turbin är förmodligen Lewis Carroll snurra i sin grav i hög hastighet.

Tac Kommandot

tac är liknande till katt, men det listar innehållet i filer i omvänd ordning.

Låt oss se till att:

tac my_poem.txt

Och filen är listade till terminal-fönstret i omvänd ordning. I detta fall har det ingen effekt på dess litterära meriter.

Med hjälp av tac Med stdin

Med hjälp av tac utan ett filnamn kommer att få den att fungera på input från tangentbordet. Slå Ctrl+D för att avbryta inmatning fas, och tac kommer listan i omvänd ordning vad du hade skrivit i.

tac

När Ctrl+D är drabbade, ingång är omvänd och anges till terminalfönstret.

Med hjälp av tac Med loggfiler

Bortsett från låggradig parlor tricks, kan tac göra något användbart? Ja, det kan det. Många loggfiler lägga sitt nyaste poster i slutet av filen. Med hjälp av tac (och, counterintuitively, huvud) vi kan springa den sista posten i terminal fönstret.

Vi använder tac att lista syslog-filen i omvänd, och rör det inte i huvudet. Genom att tala om för chefen att bara skriva ut den första raden den får (som tack för att tac är den sista raden i filen), ser vi den senaste posten i syslog-filen.

tac /var/log/syslog | head -1

chefen skriver ut den senaste posten från syslog-filen och sedan avslutas.

Observera att huvudet är bara skriva en rad, som vi begärt, men linjen är så lång tid det sveper runt två gånger. Det är därför det ser ut som tre rader av utmatning i terminalfönstret.

Med hjälp av tac med Text Poster

Den sista trick-tac har i rockärmen är en skönhet.

Vanligtvis, tac fungerar på text-filer genom att arbeta sin väg genom dem rad för rad, från botten och upp. En linje är en sekvens av tecken som avslutas med ett radmatningstecken. Men vi kan berätta för tac att arbeta med andra skiljetecken. Detta tillåter oss att behandla “bitar” av data i en textfil som dataposter.

Låt säga att vi har en loggfil från en del program som vi måste granska och analysera. Låt oss ta en titt på dess format med mindre.

mindre loggfil.dat

Som vi kan se, det är ett återkommande format till filen. Det finns sekvenser av tre rader med hexadecimala värden. Varje uppsättning av tre rader i hexadecimal har en etikett raden som börjar “=SEQ”, följt av en sekvens av siffror.

Om vi rulla ned till slutet av filen, kan vi se att det finns en hel del av dessa poster. Den sista är numrerade 865.

Låt oss anta att av någon anledning som vi måste arbeta sig igenom denna fil i omvänd ordning, som för register data med data record. Linjen för en av de tre hexadecimala linjer i varje post måste bevaras.

Vi ska göra en anteckning om att de tre sista raderna i filen börjar med hexadecimala värden 93, E7 och B8, i den ordningen.

Låt oss använda tac att vända filen. Det är en mycket lång fil så vi får rör det inte i mindre.

tac loggfil.dat | mindre

Som vänder filen, men det är inte det resultat vi vill ha. Vi vill att filen ska vändas, men linjerna i varje post måste vara i sitt ursprungliga syfte.

Vi spelade in tidigare att de tre sista raderna i filen börjar med hexadecimala värden 93, E7 och B8, i den ordningen. Ordningen på dessa linjer har vänt. Även den “=SEQ” linjer är nu under varje uppsättning av tre hexadecimala linjer.

tac till undsättning.

tac -b -r -s ^=F.+[0-9]+*$ loggfil.dat | mindre

Låt oss bryta ner det.

-S (separator) alternativ informerar tac vad vi vill använda som avgränsare mellan våra register. Det berättar tac att inte använda sin vanliga tecknet för ny rad, men för att använda vår separator istället.

-R (regex) alternativet talar om för tac för att behandla separator sträng som ett reguljärt uttryck.

I -b (innan) alternativ medför tac att lista separator före varje post i stället för efter det (vilket är det vanliga position dess standard separator, tecknet för ny rad).

-S (separator) string ^=F.+[0-9]+*$ är dechiffreras enligt följande:

Den ^ tecken representerar början på raden. Detta är följt av =SEQ.+[0-9]+*$. Detta instruerar tac att se för varje förekomst av “=F.” vid början av en rad, följt av en sekvens av siffror som markerats med [0-9]), och följs av någon annan uppsättning av tecken (som indikeras med *$).

Vi är rykande det hela mycket mindre, som vanligt.

Våra arkiv är nu som presenteras i omvänd ordning med alla “=SEQ” label linje anges innan dess tre rader i hexadecimal data. De tre raderna i hexadecimala värden är i sin ursprungliga ordning inom varje datapost.

Vi kan kolla på detta helt enkelt. Det första värdet på de tre första raderna i hexadecimal (som var de tre sista raderna innan filen var ändrad) matcha de värderingar som vi tog en sammanställning av tidigare: 93, E7 och B8, i den ordningen.

Det är ganska trick för ett terminalfönster one-liner.

Allt Har ett Syfte

I Linux-världen, även de till synes enklaste kommandon och verktyg kan ha överraskande och kraftfulla egenskaper.

Design filosofi enkla verktyg att göra en sak bra, och som lätt samarbeten med andra verktyg, har gett upphov till några konstiga små kommandon, som tac. Vid första anblicken verkar det vara en bit av en oddity. Men när du peer under ytan, det är en oväntad kraft som du kan utnyttja till din fördel.

Eller, som en annan filosofi säger, “förakta inte snake för att ha något horn, för vem vill säga det ska inte bli en drake?”

LÄS NÄSTA

  • “Hur för att Se Vilka Appar Använder Din Webbkamera på Windows-10
  • “Future Tech: det Vi är Mest Glada över
  • “Hur Gör Smarta Hem-Arbete?
  • “Vad Kommer att Hända med Din Huawei eller Ära Telefon?
  • “Kommer en Smart Kontakt Betala För sig Själv?