Recherche de site Web

Gérer efficacement les fichiers à l'aide des commandes head, tail et cat sous Linux


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

Aujourd'hui, dans cet article, nous allons discuter des commandes les plus populaires appelées head, tail et cat, la plupart d'entre nous connaissent déjà ces commandes, mais très peu d’entre nous le mettent en œuvre lorsque cela est nécessaire.

1. Commande principale

La commande head lit les dix premières lignes d'un nom de 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 donné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:::

Si l'on souhaite récupérer plus de lignes que les dix par défaut, alors l'option '-n' est utilisée avec un nombre entier indiquant 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 ». Juste le trait d'union et spécifiez 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 souhaité en utilisant l'option '-c' suivie du nombre d'octets à afficher. Par exemple, la commande suivante affichera les 45 premiers octets du fichier donné.

head -c45 /var/log/yum.log

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

2. Commande de queue

La commande tail vous permet d'afficher les dix dernières lignes de n'importe quel fichier texte. Semblable à la commande head ci-dessus, la commande tail prend également en charge les options « n » nombre de lignes et « n » nombre de caractères.

La syntaxe de base de la commande tail est la suivante :

tail [options] [filenames]

Par exemple, la commande suivante imprimera 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 plusieurs fichiers sont fournis, tail imprimera 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 imprimer 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 imprimer 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 chat

La commande « cat » est l’outil universel le plus largement utilisé. Il copie l'entrée standard vers la sortie standard. La commande prend en charge le défilement si le fichier texte ne correspond pas à 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. Pour ouvrir un fichier en lecture, il suffit de taper 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 un certain nombre de fichiers ensemble.

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

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

Il peut également être utilisé pour créer des fichiers. Ceci 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 créateur final personnalisé pour la commande « chat ». Ici, il est mis en œuvre.

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 » et 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, quel est le contraire de chat ? Ouais, c'est du « 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, reportez-vous à la section 13 Utilisation de la commande cat.

C'est tout pour le moment. Je serai de nouveau ici avec un autre article intéressant, qui mérite d'être connu. D'ici là, restez à l'écoute et connecté à Tecmint. N'oubliez pas de nous faire part de vos précieux commentaires dans notre section commentaires.