Récupérer une portion de texte à partir de fichiers d'entrée sous Linux est une opération courante. Cependant, parfois, nous sommes intéressés à afficher seulement quelques lignes d'un fichier. Linux nous fournit les commandes tête et queue pour imprimer uniquement les lignes qui nous intéressent.
Table des matières
- Commande principale sous Linux
- Sortir un nombre spécifique de lignes à l'aide de la commande head
- Sortir un nombre spécifique d'octets à l'aide de la commande head
- Sortir plusieurs fichiers à l'aide de la commande head
- Comment utiliser la commande head avec les canaux
- Commande Tail sous Linux
- Sortir un nombre spécifique de lignes à l'aide de la commande tail
- Comment utiliser la commande tail avec les tuyaux
- Surveiller un fichier pour les modifications à l'aide de la commande tail
- Comment utiliser les commandes head et tail ensemble sous Linux
- Conclusion
Linux head
et tail
les commandes sont très similaires. Ils sont installés par défaut dans toutes les distributions Linux. Commençons par comprendre ce qu'ils sont et à quoi ils servent.
En bref, comme leur nom l'indique, le head
La commande imprime les lignes depuis le début d'un fichier, et la tail
La commande imprime les lignes à partir de la fin des fichiers. Les deux commandes écrivent le résultat sur la sortie standard.
Maintenant, apprenons à les utiliser à travers des exemples.
Commande principale sous Linux
La syntaxe du head
la commande est assez simple :
head [OPTIONS] FILES
Par défaut, sans aucune option , le head
La commande affichera les 10 premières lignes du fichier. Juste comme ça.
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
Bien sûr, il existe des options que nous pouvons définir lors de l'exécution de la commande pour obtenir la sortie personnalisée.
Sortir un nombre spécifique de lignes à l'aide de la commande head
Si vous souhaitez récupérer un nombre de lignes différent des 10 par défaut, alors -n
L'option est utilisée avec un entier indiquant le nombre de lignes à récupérer.
Par exemple, la commande suivante affichera les 3 premières lignes de /etc/passwd
fichier.
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
Sortir un nombre spécifique d'octets à l'aide de la commande head
En plus de la head
La commande peut également imprimer le contenu du fichier par octet. Passez simplement le -c
option à la commande. Gardez à l'esprit que la nouvelle ligne compte comme un seul caractère, donc si head
imprime un retour à la ligne, il le comptera comme un octet.
Par exemple, la commande suivante affichera les 8 premiers octets de /etc/passwd
fichier.
head -c 8 /etc/passwd
root:x:0
Sortir plusieurs fichiers à l'aide de la commande head
Bien sûr, la head
La commande peut également gérer plusieurs fichiers. Par exemple, la commande suivante affichera les 3 premières lignes de /etc/passwd
et /etc/group
fichiers.
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:
Ajout du -q
l'option de l'exemple ci-dessus supprimera les en-têtes donnant les noms de fichiers.
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:
Comment utiliser la commande head avec des tuyaux
La head
La commande peut être redirigée vers d'autres commandes. Dans l'exemple suivant, la sortie de ls
la commande est redirigée vers head
pour afficher les cinq derniers fichiers ou dossiers modifiés dans /etc
répertoire.
ls -t /etc | head -n 5
ld.so.cache
resolv.conf
systemd
libreoffice
profile.d
Vous devriez maintenant avoir une bonne compréhension de l'utilisation de Linux head
commande. Maintenant, regardons la tail
commande.
Commande Tail sous Linux
La commande Tail sous Linux est identique à head
commande. Contrairement à la head
commande, cependant, la tail
commande imprime le dernier nombre de lignes (10 lignes par défaut) d'un certain fichier.
La syntaxe de base de la commande tail est :
tail [OPTIONS] FILES
Par exemple, la commande suivante imprimera les 10 dernières lignes de /etc/locale.gen
fichier.
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
Sortir un nombre spécifique de lignes à l'aide de la commande tail
Similaire à la head
commande, vous pouvez également imprimer les dernières lignes en utilisant le -n
comme indiqué ci-dessous.
tail -n 3 /etc/locale.gen
#zh_TW BIG5
#zu_ZA.UTF-8 UTF-8
#zu_ZA ISO-8859-1
Comment utiliser la commande tail avec des tuyaux
Auparavant, nous avons canalisé la sortie de head
en ls
. Nous pouvons également diriger la sortie d'autres commandes vers tail
.
Par exemple, pour identifier les cinq fichiers ou dossiers dans /etc
répertoire avec les heures de modification les plus anciennes et dirigez la sortie vers tail
:
ls -t /etc/ | tail -n 5
wpa_supplicant
libpaper.d
papersize
mdadm.conf
gssapi_mech.conf
Surveiller un fichier pour les modifications à l'aide de la commande tail
Il y a une fonctionnalité plus puissante dans tail
commande. Parfois, le fichier d'entrée que nous voulons vérifier change. Par exemple, une application en cours d'exécution peut ajouter sa sortie à un fichier journal. Si nous exécutons la tail
commande avec -f
option sur le fichier changeant, toutes les lignes nouvellement ajoutées seront ajoutées à la sortie standard. Cela pourrait être de loin l'option la plus utile et la plus couramment utilisée pour tail
commande.
Par exemple, vous pouvez voir les nouvelles lignes ajoutées à la fin d'un fichier journal Nginx, au fur et à mesure de leur ajout, comme ceci :
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"
Au fur et à mesure que chaque nouvelle entrée de journal est ajoutée au fichier journal, tail
mettra à jour son affichage dans la fenêtre du terminal.
Comment utiliser les commandes head et tail ensemble sous Linux
Comme tail
et head
commandes impriment différentes parties de fichiers, nous pouvons combiner ces deux pour imprimer un filtrage avancé du contenu du fichier. Par exemple, si vous souhaitez lire le contenu au milieu d'un fichier, vous devez utiliser les deux commandes ensemble.
Disons que nous voulons passer de la 5ème à la 10ème ligne du /etc/passwd
dossier. Au début, head
la commande récupérera les 10 premières lignes et tail
la commande récupérera les 5 dernières lignes de la sortie de head
commande.
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
Conclusion
C'est tout pour le moment. Dans cet article, nous avons appris quelques utilisations typiques des deux commandes à travers des exemples. Comme vous pouvez le voir, la tail
et la head
Les commandes sont très utiles pour contrôler exactement le contenu du fichier qui s'affichera à l'écran. Certes, ce sont des commandes flexibles qui peuvent grandement améliorer la gestion de vos fichiers. Essayez-les.
Besoin de plus de détails ? Vérifiez la head
et la tail
pages de manuel des commandes.