Gestion efficace des fichiers à l’aide des commandes head, tail et cat dans Linux

Il existe plusieurs commandes et programmes fournis par Linux pour afficher le contenu d’un fichier. Travailler avec des fichiers est l’une des tâches redoutables que la plupart des utilisateurs d’ordinateurs, qu’ils soient débutants, utilisateurs réguliers, utilisateurs avancés, développeurs, administrateurs, etc., effectuent. Travailler de manière efficace et efficiente avec des fichiers est un art.

Manage Files in Linux

Aujourd’hui, dans cet article, nous discuterons des commandes les plus populaires appelées head, tail et cat, la plupart d’entre nous connaissent déjà de telles commandes, mais très peu les mettent en œuvre lorsqu’elles sont nécessaires.

1. Commande head

La commande head lit les dix premières lignes de n’importe quel fichier donné. La syntaxe de base de la commande head est :

head [options] [file(s)]

Par exemple, la commande suivante affichera les dix premières lignes du fichier nommé « /etc/passwd ».

# head /etc/passwd 

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
mail:x:8:8:mail:/var/mail:/bin/sh 
news:x:9:9:news:/var/spool/news:/bin/sh

Si plusieurs fichiers sont spécifiés, head affichera les dix premières lignes de chaque fichier séparément. Par exemple, la commande suivante affichera dix lignes de chaque fichier.

# head /etc/passwd /etc/shadow

==> /etc/passwd <== root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin ==> /etc/shadow <==
root:$6$85e1:15740:0:99999:7:::
bin:*:15513:0:99999:7:::
daemon:*:15513:0:99999:7:::
adm:*:15513:0:99999:7:::
lp:*:15513:0:99999:7:::
sync:*:15513:0:99999:7:::
shutdown:*:15513:0:99999:7:::
halt:*:15513:0:99999:7:::
mail:*:15513:0:99999:7:::
uucp:*:15513:0:99999:7:::

S’il est souhaité de récupérer plus de lignes que les dix par défaut, alors l’option « -n » est utilisée avec un entier spécifiant le nombre de lignes à récupérer. Par exemple, la commande suivante affichera les 5 premières lignes du fichier « /var/log/yum.log ».

# head -n5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

En fait, il n’est pas nécessaire d’utiliser l’option « -n ». Il suffit d’utiliser le tiret et de spécifier l’entier sans espaces pour obtenir le même résultat que la commande ci-dessus.

# head  -5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

La commande head peut également afficher n’importe quel nombre d’octets désiré en utilisant l’option ‘-c‘ suivie du nombre d’octets à afficher. Par exemple, la commande suivante affichera les premiers 45 octets du fichier donné.

# head -c45 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el

2. Commande tail

La commande tail vous permet d’afficher les dix dernières lignes de n’importe quel fichier texte. Tout comme la commande head ci-dessus, la commande tail prend également en charge les options ‘n’ nombre de lignes et ‘n’ nombre de caractères.n‘ nombre de lignes et ‘n‘ nombre de caractères.

La syntaxe de base de la commande tail est :

# tail [options] [filenames]

Par exemple, la commande suivante affichera les dix dernières lignes d’un fichier appelé ‘access.log‘.

# tail access.log 

1390288226.042      0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html
1390288226.198      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.210   1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html
1390288226.284     70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 -
1390288226.362    570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg 
1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

Si plus d’un fichier est fourni, tail affichera les dix dernières lignes de chaque fichier comme indiqué ci-dessous.

# tail access.log error.log

==> access.log <== 1390288226.042      0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html 1390288226.198      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.210   1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html 1390288226.284     70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 - 1390288226.362    570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg  1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html ==> error_log <==
[Sun Mar 30 03:16:03 2014] [notice] Digest: generating secret for digest authentication ...
[Sun Mar 30 03:16:03 2014] [notice] Digest: done
[Sun Mar 30 03:16:03 2014] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations

De même, vous pouvez également afficher les dernières lignes en utilisant l’option ‘-n‘ comme indiqué ci-dessous.

# tail -5 access.log

1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

Vous pouvez également afficher le nombre de caractères en utilisant l’argument ‘-c’ comme indiqué ci-dessous.

# tail -c5 access.log

ymantec.com:443 - NONE/- text/html

3. Commande cat

La commande ‘cat‘ est l’outil le plus largement utilisé et universel. Elle copie l’entrée standard vers la sortie standard. La commande prend en charge le défilement, si le fichier texte ne tient pas sur l’écran actuel.

La syntaxe de base de la commande cat est :

# cat [options] [filenames] [-] [filenames]

L’utilisation la plus fréquente de cat est de lire le contenu des fichiers. Il suffit d’ouvrir un fichier pour lecture en tapant cat suivi d’un espace et du nom du fichier.

# cat /etc/passwd 

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
…

La commande cat est également utilisée pour concaténer plusieurs fichiers ensemble.

# echo 'Hi Tecmint-Team' > 1 
# echo 'Keep connected' > 2 
# echo 'Share your thought' > 3 
# echo 'connect us [email protected]' > 4
# cat 1 2 3 4 > 5
# cat 5 

Hi Tecmint-Team 
Keep connected 
Share your thought 
connect us [email protected]

Il peut également être utilisé pour créer des fichiers. Cela est réalisé en exécutant cat suivi de l’opérateur de redirection de sortie et du nom du fichier à créer.

# cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

Nous pouvons avoir un marqueur de fin personnalisé pour la commande ‘cat’. Voici comment il est implémenté.

# cat > test.txt << end 

I am Avishek 
Here i am writing this post 
Hope your are enjoying 
end
# cat test.txt 

I am Avishek 
Here i am writing this post 
Hope your are enjoying

Ne sous-estimez jamais la puissance de la commande ‘cat’ qui peut être utile pour copier des fichiers.

# cat avi.txt

I am a Programmer by birth and Admin by profession
# cat avi.txt > avi1.txt
# cat avi1.txt

I am a Programmer by birth and Admin by profession

Maintenant, quelle est l’opposé de ‘cat’? Oui, c’est ‘tac‘. ‘tac‘ est une commande sous Linux. Il vaut mieux montrer un exemple de ‘tac’ que d’en parler.

Créez un fichier texte avec les noms de tous les mois, de telle sorte qu’un mot apparaisse sur une ligne.

# cat month

January
February
March
April
May
June
July
August
September
October
November
December
# tac month

December
November
October
September
August
July
June
May
April
March
February
January

Pour plus d’exemples d’utilisation de la commande cat, consultez l’article ‘13 Utilisations de la commande cat‘.

C’est tout pour le moment. Je reviendrai bientôt avec un autre article intéressant, qui vaut la peine d’être connu. Jusque-là, restez à l’écoute et connecté à Tecmint. N’oubliez pas de nous fournir vos précieux commentaires dans la section dédiée.

Source:
https://www.tecmint.com/view-contents-of-file-in-linux/