GNU/Linux >> Znalost Linux >  >> Linux

Příkazy hlavy a ocasu v Linuxu vysvětleny s příklady

Získání části textu ze vstupních souborů v systému Linux je běžnou operací. Někdy nás však zajímá zobrazení pouze několika řádků souboru. Linux nám poskytuje příkazy head a tail pro tisk pouze řádků, které nás zajímají.

Obsah

  • Příkaz Head v Linuxu
    • Vydejte konkrétní počet řádků pomocí příkazu head
    • Vydání určitého počtu bajtů pomocí příkazu head
    • Výstup více souborů pomocí příkazu head
    • Jak používat head Command s Pipes
  • Příkaz Tail v Linuxu
    • Vydejte konkrétní počet řádků pomocí příkazu tail
    • Jak používat tail Command s Pipes
    • Sledování změn v souboru pomocí příkazu tail
  • Jak společně používat příkazy hlavy a paty v systému Linux
  • Závěr

Linux head a tail příkazy jsou velmi podobné. Jsou standardně nainstalovány ve všech distribucích Linuxu. Nejprve si ujasněme, co jsou a k čemu se používají.

Stručně řečeno, jak jejich názvy napovídají, head příkaz vytiskne řádky od začátku souboru a tail příkaz vytiskne řádky od konce souborů. Oba příkazy zapisují výsledek na standardní výstup.

Nyní se na příkladech naučíme, jak je používat.

Příkaz Head v Linuxu

Syntaxe head příkaz je docela jednoduchý:

head [OPTIONS] FILES

Ve výchozím nastavení bez možnosti , head zobrazí prvních 10 řádků ze souboru. Přesně takhle.

head /etc/passwd
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
mail:x:8:12::/var/spool/mail:/usr/bin/nologin
ftp:x:14:11::/srv/ftp:/usr/bin/nologin
http:x:33:33::/srv/http:/usr/bin/nologin
nobody:x:65534:65534:Nobody:/:/usr/bin/nologin
dbus:x:81:81:System Message Bus:/:/usr/bin/nologin
systemd-journal-remote:x:982:982:systemd Journal Remote:/:/usr/bin/nologin
systemd-network:x:981:981:systemd Network Management:/:/usr/bin/nologin

Samozřejmě existují možnosti, které můžeme definovat při provádění příkazu, abychom získali přizpůsobený výstup.

Vydání určitého počtu řádků pomocí příkazu head

Pokud chcete načíst jiný počet řádků než výchozích 10, pak -n volba se používá spolu s celým číslem udávajícím počet řádků, které mají být načteny.

Například následující příkaz zobrazí první 3 řádky z /etc/passwd soubor.

head -n 3 /etc/passwd
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin

Vydání určitého počtu bajtů pomocí příkazu head

Kromě toho head příkaz může také tisknout obsah souboru po bytech. Stačí předat -c možnost k příkazu. Mějte na paměti, že nový řádek se počítá jako jeden znak, takže pokud head vytiskne nový řádek, bude to počítat jako bajt.

Například následující příkaz zobrazí prvních 8 bajtů z /etc/passwd soubor.

head -c 8 /etc/passwd
root:x:0

Výstup více souborů pomocí příkazu head

Samozřejmě, head příkaz také zvládne více souborů. Například následující příkaz zobrazí první 3 řádky /etc/passwd a /etc/group soubory.

head -n 3 /etc/passwd /etc/group
==> /etc/passwd <==
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin

==> /etc/group <==
root:x:0:brltty,root
sys:x:3:bin
mem:x:8:

Přidání -q volba k výše uvedenému příkladu odstraní záhlaví s názvy souborů.

head -q -n 3 /etc/passwd /etc/group
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
root:x:0:brltty,root
sys:x:3:bin
mem:x:8:

Jak používat příkaz head s potrubím

 head příkaz lze převést na jiné příkazy. V následujícím příkladu je výstup ls příkaz je přesměrován do head zobrazit pět naposledy upravených souborů nebo složek v /etc adresář.

ls -t /etc | head -n 5
ld.so.cache
resolv.conf
systemd
libreoffice
profile.d

Nyní byste měli dobře rozumět tomu, jak používat Linux head příkaz. Nyní se podívejme na tail příkaz.

Příkaz Tail v Linuxu

Příkaz Tail v Linuxu je stejný jako head příkaz. Na rozdíl od head příkaz, ale tail příkaz vytiskne několik posledních řádků (standardně 10 řádků) určitého souboru.

Základní syntaxe příkazu tail je:

tail [OPTIONS] FILES

Například následující příkaz vytiskne posledních 10 řádků z /etc/locale.gen soubor.

tail /etc/locale.gen
#zh_HK.UTF-8 UTF-8
#zh_HK BIG5-HKSCS
#zh_SG.UTF-8 UTF-8
#zh_SG.GBK GBK
#zh_SG GB2312
#zh_TW.EUC-TW EUC-TW
#zh_TW.UTF-8 UTF-8
#zh_TW BIG5
#zu_ZA.UTF-8 UTF-8
#zu_ZA ISO-8859-1

Vydání určitého počtu řádků pomocí příkazu tail

Podobně jako head můžete také vytisknout několik posledních řádků pomocí -n možnost, jak je uvedeno níže.

tail -n 3 /etc/locale.gen
#zh_TW BIG5
#zu_ZA.UTF-8 UTF-8
#zu_ZA ISO-8859-1

Jak používat příkaz tail s potrubím

Dříve jsme výstup převedli z head do ls . Do tail můžeme také převést výstup z jiných příkazů .

Například k identifikaci pěti souborů nebo složek v /etc adresář s nejstaršími časy úprav a výstup převede do tail :

ls -t /etc/ | tail -n 5
wpa_supplicant
libpaper.d
papersize
mdadm.conf
gssapi_mech.conf

Sledování změn v souboru pomocí příkazu tail

V tail je ještě jedna mocná funkce příkaz. Někdy se vstupní soubor, který chceme zkontrolovat, mění. Například spuštěná aplikace může připojit svůj výstup k souboru protokolu. Pokud spustíme tail pomocí -f na měnícím se souboru budou všechny nově přidané řádky připojeny ke standardnímu výstupu. Toto může být zdaleka nejužitečnější a běžně používaná možnost pro tail příkaz.

Můžete například vidět nové řádky, které jsou přidány na konec souboru protokolu Nginx, když jsou přidávány, takto:

tail -f /var/log/nginx/access.log
172.16.1.122 - - [08/Apr/2021:08:15:32 +0000] "POST /wp-admin/admin-ajax.php HTTP/1.1" 200 109 "https://linuxwizard.com/wp-admin/post.php?post=18254&action=edit" "Mozilla/5.0 (X11; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0" 
172.16.1.122 - - [08/Apr/2021:08:19:27 +0000] "GET /feed/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1" 
172.16.1.122 - - [08/Apr/2021:08:19:49 +0000] "HEAD /feed/ HTTP/1.1" 200 0 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" 

Když je do souboru protokolu přidán každý nový záznam, tail aktualizuje své zobrazení v okně terminálu.

Jak společně používat příkazy hlavy a paty v Linuxu

Jako tail a head příkazy tisknou různé části souborů, můžeme tyto dva kombinovat a vytisknout pokročilé filtrování obsahu souboru. Pokud například chcete číst obsah ze středu libovolného souboru, musíte oba příkazy použít společně.

Řekněme, že se chceme dostat z 5. na 10. řádek z /etc/passwd soubor. Nejprve head příkaz načte prvních 10 řádků a tail příkaz načte posledních 5 řádků z výstupu head příkaz.

head -n 10 /etc/passwd | tail -n 5
http:x:33:33::/srv/http:/usr/bin/nologin
nobody:x:65534:65534:Nobody:/:/usr/bin/nologin
dbus:x:81:81:System Message Bus:/:/usr/bin/nologin
systemd-journal-remote:x:982:982:systemd Journal Remote:/:/usr/bin/nologin
systemd-network:x:981:981:systemd Network Management:/:/usr/bin/nologin

Závěr

To je prozatím vše. V tomto článku jsme se na příkladech naučili některá typická použití obou příkazů. Jak vidíte, oba tailhead Příkazy jsou velmi užitečné pro přesné ovládání toho, jaký obsah souboru se vytiskne na obrazovku. Jistě, jsou to flexibilní příkazy, které mohou výrazně zlepšit správu vašich souborů. Vyzkoušejte je.

Potřebujete více podrobností? Zkontrolujte head a tail příkazy manuálových stránek.


Linux
  1. Jak používat příkazy „cat“ a „tac“ s příklady v Linuxu

  2. Linuxové příkazy – přehled a příklady

  3. Příkaz linuxové hlavy s příklady

  1. 19 Běžné příkazy SSH v Linuxu s příklady

  2. Příkaz Linux Traceroute, vysvětlený s příklady

  3. 20 základních Linuxových příkazů pro začátečníky vysvětlených s příklady

  1. Cheat Sheet pro příkazy Linuxu:S příklady

  2. Příkaz Netstat v Linuxu - 28 příkazů s příklady

  3. Linux cut Command Vysvětlení pomocí 6 příkladů