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.

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/