9 viktiga kommandorörledningar som förenklar vardagen i Linux

9 viktiga kommandorörledningar som förenklar vardagen i Linux
Index
  1. grep | less
    1. Filtrera data och paginera resultaten
  2. tail | grep
  3. history | grep
    1. Snabbt tillgång till kommandon du tidigare kört
  4. sort | uniq
    1. Enkla sammanfattningar från strukturerad data
  5. df | tee
    1. Få diskutrymmesrapporter på skärmen och i en fil
  6. echo | xargs
    1. Kopiera en fil till flera kataloger
  7. curl | jq
    1. Bearbeta data som hämtats från en webb-API
  8. du -sh * | sort -h
    1. Hitta dina största filer och kataloger
  9. date | md5sum
    1. Det snabbaste sättet att generera ett bra lösenord
    2. Med träning blir vanliga pipeliner en andra natur

Upptäck kraften i Linux-pipeliner: lär dig hur du effektivt kedjar kommandon för att strömlinjeforma ditt arbete och förbättra produktiviteten med användbara exempel.

Pipeline-funktionen är en av de drivande krafterna bakom Linux-filosofin, ett enda tecken som förändrar allt om hur du arbetar. Genom att koppla utdata från ett kommando till indata för ett annat kan du kedja ihop små program och skapa ett verktyg som är mycket större än summan av dess delar.

Om du har svårt att se värdet i pipor, eller bara vill förstå deras praktiska användning bättre, finns det inget bättre ställe att börja än dessa vanliga, effektiva exempel.

grep | less

Filtrera data och paginera resultaten

Ett typiskt grep-kommando kan returnera många resultat, särskilt om du använder trial and error för att förfina ett reguljärt uttryck. Ett kommando som grep '[Qq]' /usr/share/dict/words kommer att producera fler än en skärm av utdata:

För att se mer än bara den sista sidan av resultaten behöver du använda en pager. Grep-kommandot stöder inte direkt en sådan, men du kan pipetta vilken uppsättning utdata som helst till en pager och visa den sida för sida:

grep '[Qq]' /usr/share/dict/words | less 

tail | grep

Tail-kommandot är användbart varje gång du vill utforska de senaste raderna i en fil, oftast en loggfil. Dess -f-alternativ ger en live-visning av en fil (eller standardinmatning) och fortsätter att skriva ut rader som läggs till filen. Det är perfekt för att övervaka loggfiler, som apache access-loggen:

[enlazatom_show_links]

Du kommer förmodligen vilja filtrera sådana loggrader, och leta efter specifik information som matchar URL:er, specifika meddelanden, svarskoder, och så vidare. Grep-verktyget är utmärkt för detta och passar perfekt med tail i en pipeline som tail -f fil | grep mönster.

Du kanske glömmer ordningen på dessa kommandon och förväntar dig att de ska fungera baklänges. Men att pipetta grep till tail -f kommer att få pipelinen att avslutas omedelbart eftersom tail ignorerar -f när indata är en pip.

history | grep

Snabbt tillgång till kommandon du tidigare kört

History-kommandot är otroligt användbart och ger dig tillgång till kommandon du har kört tidigare. Men din historik innehåller mycket detaljer; som standard, i bash, är det de senaste 500 kommandona. Och det kan vara ännu mer, särskilt om du har ställt in obegränsad historik.

Detta är en annan perfekt möjlighet för grep att filtrera bort endast de rader som du verkligen är intresserad av:

history | grep ls 

sort | uniq

Enkla sammanfattningar från strukturerad data

Sort och uniq-filter är så användbara när de kombineras med andra kommandon att du kommer att se dem använda i pipelines gång på gång. uniq är en förkortning för "unik", och båda kommandona gör i stort sett exakt vad du skulle förvänta dig, baserat på deras namn.

Här är ett exempel på en pipeline som visar vilka IP-adresser som har besökt en webbplats och hur många gånger varje enskild har skickat en förfrågan:

</var/log/apache2/access_log cut -f1 -d' ' | sort | uniq -c 

Denna pipeline involverar tre kommandon, det första av dem—cut—extraherar IP-adressfältet från en standard Apache access-logg. Sort kommer att ordna alla inmatningsrader som piped till den, medan uniq tar bort dubbletter och, med -c-alternativet, räknar det totala antalet. Du får en trevlig sammanfattning:

df | tee

Få diskutrymmesrapporter på skärmen och i en fil

Tee-kommandot är gjort för pipelinen; dess kärnfunktion är att kopiera sin standardinmatning till standardutmatning. Det kan verka onödigt, förutom den extra funktionalitet det erbjuder: att spara den samma inmatningen till en eller flera filer.

Normalt, för att spara utdata från ett kommando, kan du använda omdirigering:

echo "Hello world" > myfile.txt 

Men att omdirigera den utdata förhindrar dig från att visa den på skärmen eller pipetta den någon annanstans:

Med tee-kommandot kan du spara utdata till en fil, men ändå ha den i pipelinen, för vidare bearbetning eller utmatning på skärmen:

echo "Hello world" | tee myfile.txt 

Du kan till och med ange flera argument till tee, ifall du vill spara utdata till mer än en fil åt gången.

Tee är ett utmärkt val om du någonsin vill kontrollera utdata från ett kommando, men samtidigt hålla en kopia av det.

rapport om diskanvändning:

df -h | tee diskusage.txt 

Att sätta pipen till tee betyder att det fortfarande visas på skärmen, men du får också ett permanent register lagrat i en fil.

echo | xargs

Kopiera en fil till flera kataloger

xargs-kommandot fungerar lite som tee; det är ett "metakommandot" som ändrar hur kommandoraden själv fungerar. xargs låter dig injicera sin inmatning som argument till ett annat kommando, så det används ofta som en del av mer komplicerade pipeliner.

Som standard konverterar xargs varje värde som är avgränsat med mellanslag till ett argument, som läggs till ett kommando som du skickar till det. Du kan också använda -n-alternativet för att anropa kommandot mer än en gång, där du skickar en skiva med argument varje gång, som i det här exemplet:

echo "dir1 dir2" | xargs -n 1 cp -v myfile.md 

cp-kommandot kommer inte att kopiera en fil till flera kataloger, så denna pipeline instruerar xargs att tillhandahålla ett argument i taget, vilket expanderar till:

cp -v myfile.md dir1 cp -v myfile.md dir2 

curl | jq

Bearbeta data som hämtats från en webb-API

Om du någonsin har använt curl för att komma åt en webb-API från kommandoraden, har du förmodligen stått inför ett långt svar som innehåller JSON som du behöver bearbeta ytterligare:

curl-kommandot är bra på att hantera alla typer av webbförfrågningar, men ytterligare bearbetning kräver andra kommandon, som i det här fallet jq, kommandorads-JSON-bearbetaren. Med jq kan du skriva filter för att transformera JSON-data till mer läsbara eller passande former. Till exempel, det enklaste du kan göra är att använda identitetsoperatören (.) för att kopiera inmatningen, men validera och formatera den också:

curl -s https://catfact.ninja/fact | jq '.' 

Du kan skriva alla typer av filter för att dela och bearbeta datan hur du vill. Exemplen ovan returnerar ett enda objekt med egenskaperna fact och length, som du kan extrahera med ett enkelt filter:

curl -s https://catfact.ninja/fact | jq -r '.fact' 

du -sh * | sort -h

Hitta dina största filer och kataloger

du-programmet rapporterar den totala storleken av filer och kataloger som du skickar till det:

Detta är bra, men du letar förmodligen efter de filer som tar upp mest diskutrymme. Tyvärr erbjuder du inget inbyggt sätt att sortera sin utdata. Lyckligtvis finns det det gamla hederliga sort-kommandot.

sort är ett filterkommando som ordnar sin inmatning och skriver ut den som utdata. Du kan använda det för att sortera standardutdata från du:

du -s * | sort 

Detta är okej, men utdata är i block, vilket inte är mest läsbart. För att göra samma sak, med mer läsbara storlekar, använd -h-alternativet för båda kommandona:

du -sh * | sort -h 

Även om utdata inte sorteras naturligt, är sort tillräckligt smart för att känna igen formatet och sortera kilobyte före megabyte, osv.

date | md5sum

Det snabbaste sättet att generera ett bra lösenord

Jag använder alltid detta för att generera lösenord; det är snabbt, effektivt och lätt att komma ihåg. md5sum kommer att hash sin inmatning med MD5-algoritmen och skriva ut resultatet:

När jag behöver en slumpmässig uppsättning hexadecimala tecken är detta mitt förstahandsval. Du kan använda det för en mängd olika ändamål, inklusive att generera slumpmässiga CSS-färger, men det är också ganska praktiskt för lösenordsgenerering.

Detta kanske inte är det mest säkra sättet att välja ett lösenord. Vänligen konsultera säkerhetsråd innan du väljer ett lösenord, särskilt för hög-risk användningar!

Med träning blir vanliga pipeliner en andra natur

Om det finns en pipeline som du inte har använt tidigare kan det ta lite tid att bli bekant med den. Öva på alla som verkar användbara och, efter en kort tid, kommer du att börja pipla till grep eller sort så ofta att du kommer att undra hur du någonsin klarade dig utan dem.

Nu när du har läst klart 9 viktiga kommandorörledningar som förenklar vardagen i Linux, inbjuder vi dig att utforska kategorin Linux ytterligare. Där hittar du fler intressanta artiklar som kommer att utöka dina kunskaper och hålla dig informerad. Sluta inte läsa och upptäcka mer!

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Go up