GNU/Linux

Publié le 25 juin, 2017 | par Loulou De Gueyo

0

Linux, afficher le contenu d’un fichier

Avec Linux, vous aurez à manipuler des fichiers qui contiennent du texte lisible et d’autres fichiers qui contiennent des données binaires que vous auriez aimé lire de façon claire.
Il existe plusieurs commandes qui permettent de voir le contenu d’un fichier et dans ce tutoriel nous allons voire quelques unes de ces commandes.
cat: afficher entièrement le contenu d’un fichier.
less: afficher le contenu d’un fichier texte page par page.
nl: afficher le contenu d’un fichier texte en numérotant les lignes.
head: afficher les premières lignes d’un fichier.
tail: afficher les dernières ligne d’un fichier.
strings: affiche le texte adjoint au contenu d’un fichier binaire.

La commande cat affiche le contenu d’un fichier à la sortie standard (l’écran). Si le fichier est volumineux le résultat de cat va défiler à l’écran. Si vous désirez lire progressivement le contenu du fichier, il serait intéressant d’utiliser la commande less par exemple.

loulou@server:~/fichiers$ ls
gpl_full.txt  gpl_part.txt

Nous allons travailler avec le fichier gpl.txt qui contient les termes de la licence GNU GPL. Vous pouvez le télécharger à l’adresse suivante: adresse.
J’ai renommé le fichier gpl.txt en gpl_full.txt et j’ai extrait un contenu (les premières lignes de gpl.txt) pour créer le fichier gpl_part.txt. Nous travaillerons dans un premier temps avec ses deux fichiers.

loulou@server:~/fichiers$ cat gpl_full.txt
.......................................................................
The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

Le fichier gpl_full.txt est volumineux. En affichant son contenu avec cat, le résultat défile à l’écran jusqu’aux
derniers paragraphes. Cependant lorsque nous utilisons cat pour afficher un fichier moins volumineux, nous pouvons
bien voir le contenu entier du fichier.

loulou@server:~/fichiers$ cat gpl_part.txt 
 The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.
loulou@server:~/fichiers

La commande cat est donc adaptée pour les fichiers moins volumineux.
Si vous voulez passez le contenu d’un fichier dans un pipeline (pour traitement avec d’autres commandes), cat s’avère être une bonne option.

loulou@server:~/fichiers$ cat  gpl_full.txt | wc
    674    5644   35147

La commande wc (Word Count) utilisée sans option et appliquée à un fichier nous donne le nombre de lignes, la nombre de mots et la taille du fichier.
Ici notre fichier contient 674 lignes, 5644 mots et à une taille d’environs 36ko. Bien entendu on aurait pu utiliser wc directement
sur le fichier gpl_full.txt pour avoir le même résultat. Mais l’idée ici était de montrer l’utilisation de cat avec un pipe.
Voyons quelques options de cat.
L’option -n permet de numéroter les lignes du fichier lors de l’affichage.
L’option -b permet de numéroter les lignes du fichier lors de l’affichage en ignorant la numérotations des ligne vide.
Avant de tester ces deux options, ajoutons quelques lignes vides dans le fichiers gpl_part.txt.


  GNU nano 2.5.3            Fichier : gpl_part.txt                              

 The licenses for most software and other practical works are designed

to take away your freedom to share and change the works.  By contrast,

the GNU General Public License is intended to guarantee your freedom to

share and change all versions of a program--to make sure it remains free
........................................................................
                            [ Lecture de 11 lignes ]
^G Aide      ^O Écrire    ^W Chercher  ^K Couper    ^J Justifier ^C Pos. cur.
^X Quitter   ^R Lire fich.^\ Remplacer ^U Coller    ^T Orthograp.^_ Aller lig.

Ceci fait, essayons maintenant nos options.

loulou@server:~/fichiers$ cat -n gpl_part.txt 
     1	 The licenses for most software and other practical works are designed
     2	
     3	to take away your freedom to share and change the works.  By contrast,
     4	
     5	the GNU General Public License is intended to guarantee your freedom to
     6	
     7	share and change all versions of a program--to make sure it remains free
     8	software for all its users.  We, the Free Software Foundation, use the
     9	GNU General Public License for most of our software; it applies also to
    10	any other work released this way by its authors.  You can apply it to
    11	your programs, too.
loulou@server:~/fichiers$ cat -b gpl_part.txt 
     1	 The licenses for most software and other practical works are designed

     2	to take away your freedom to share and change the works.  By contrast,

     3	the GNU General Public License is intended to guarantee your freedom to

     4	share and change all versions of a program--to make sure it remains free
     5	software for all its users.  We, the Free Software Foundation, use the
     6	GNU General Public License for most of our software; it applies also to
     7	any other work released this way by its authors.  You can apply it to
     8	your programs, too.

Vous voyez très bien que dans le premier cas nous avons 11 lignes alors que dans le deuxième cas nous avons 8 lignes,
les 3 lignes vides ont été ignorées.

La commande less est utilisée si nous voulons afficher le contenu d’un fichier texte page par page, c’est à  dire écran
par écran. Essayez de voire le contenu de gpl_full.txt avec less. Le résultat ne défilera pas jusqu’à la dernière page comme avec cat. La première page sera affichée et le programme attendra une commande de votre part pour naviguer dans le texte.
L’une des choses à faire d’abord pour ceux qui ne sont pas familiers à la commande less est de tapez la lettre h une fois que less
est lancée. En appuyant sur h, vous aurez l’aide de la commande qui vous montrera comment l’utiliser.

                          SUMMARY OF LESS COMMANDS
      Commands marked with * may be preceded by a number, N.
      Notes in parentheses indicate the behavior if N is given.
      A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K.

  h  H                 Display this help.
  q  :q  Q  :Q  ZZ     Exit.
 ---------------------------------------------------------------------------
                           MOVING
  e  ^E  j  ^N  CR  *  Forward  one line   (or N lines).
  y  ^Y  k  ^K  ^P  *  Backward one line   (or N lines).

Utilisez la touche ENTRER (ligne suivante) ou ESPACE(page suivante) pour lire la suite de l’aide. Ces même touches sont utilisées aussi pour lire votre texte.
Utilisez la touche q pour quitter l’aide. Cette même touche est utilisée pour quitter le programme less.
Prenez la peine de parcourir l’aide pour apprendre à utiliser less de façon efficace.

La commande nl numérote les lignes d’un fichier lorsqu’il les affiche à la sortie standard. Cette commande est vraiment
le spécialiste de la numérotation des lignes. Elle est mieux adaptée pour cette tâche et offre plus de flexibilité
que cat avec ses option -n et -b.

loulou@server:~/fichiers$ nl gpl_part.txt 
     1	 The licenses for most software and other practical works are designed
       
     2	to take away your freedom to share and change the works.  By contrast,
       
     3	the GNU General Public License is intended to guarantee your freedom to
       
     4	share and change all versions of a program--to make sure it remains free
     5	software for all its users.  We, the Free Software Foundation, use the
     6	GNU General Public License for most of our software; it applies also to
     7	any other work released this way by its authors.  You can apply it to
     8	your programs, too.

Vous voyez qu’elle numérote non seulement les lignes, mais elle ne prends pas en compte les lignes vides.

Voyons quelques options intéressantes de nl.
L’option -vN , commence à numéroter les lignes à partir de de l’entier N , la valeur par défaut de N est 1.

loulou@server:~/fichiers$ nl -v1 gpl_part.txt 
     1	 The licenses for most software and other practical works are designed
       
     2	to take away your freedom to share and change the works.  By contrast,
       
     3	the GNU General Public License is intended to guarantee your freedom to
       
     4	share and change all versions of a program--to make sure it remains free
     5	software for all its users.  We, the Free Software Foundation, use the
     6	GNU General Public License for most of our software; it applies also to
     7	any other work released this way by its authors.  You can apply it to
     8	your programs, too.
loulou@server:~/fichiers$ nl -v2 gpl_part.txt 
     2  The licenses for most software and other practical works are designed
       
     3	to take away your freedom to share and change the works.  By contrast,
       
     4	the GNU General Public License is intended to guarantee your freedom to
       
     5	share and change all versions of a program--to make sure it remains free
     6	software for all its users.  We, the Free Software Foundation, use the
     7	GNU General Public License for most of our software; it applies also to
     8	any other work released this way by its authors.  You can apply it to
     9	your programs, too.

L’option -iN permet d’incrémenter les lignes avec l’entier N en les numérotant.
La valeur par défaut de N est 1.

loulou@server:~/fichiers$ nl -i2 gpl_part.txt 
     1	 The licenses for most software and other practical works are designed
       
     3	to take away your freedom to share and change the works.  By contrast,
       
     5	the GNU General Public License is intended to guarantee your freedom to
       
     7	share and change all versions of a program--to make sure it remains free
     9	software for all its users.  We, the Free Software Foundation, use the
    11	GNU General Public License for most of our software; it applies also to
    13	any other work released this way by its authors.  You can apply it to
    15	your programs, too.

Et si nous voulions par exemple des nombres paire dans la numérotation; il suffirait de
fixer N à 2 au départ et donner une valeur de 2 à l’incrément.

loulou@server:~/fichiers$ nl -v2 -i2 gpl_part.txt 
     2	 The licenses for most software and other practical works are designed
       
     4	to take away your freedom to share and change the works.  By contrast,
       
     6	the GNU General Public License is intended to guarantee your freedom to
       
     8	share and change all versions of a program--to make sure it remains free
    10	software for all its users.  We, the Free Software Foundation, use the
    12	GNU General Public License for most of our software; it applies also to
    14	any other work released this way by its authors.  You can apply it to
    16	your programs, too.

La commande head permet d’afficher les 10 premières lignes d’un fichier texte. Ce qui est très
pratique pour avoir un aperçu du contenu d’un fichier.

loulou@server:~/fichiers$ head gpl_full.txt 
            GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license fo

Comptons le nombre de lignes avec cette commande:

loulou@server:~/fichiers$ head gpl_full.txt | wc -l
10

La première commande nous affiche les 10 premières lignes du fichier gpl_full.txt et la seconde commande nous confirme
que head nous donne effectivement les 10 premieres lignes (ligne vides comprises). En effet la commande wc avec l’option -l
nous donne le nombre de lignes d’un fichier.

Il est même possible en une seule commande de voir les aperçus de plusieurs fichiers.

loulou@server:~/fichiers$ head gpl_* | less
==> gpl_full.txt <==
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
==> gpl_part.txt <==
 The licenses for most software and other practical works are designed

to take away your freedom to share and change the works.  By contrast,

Dans la commande head gpl_* | less (équivalente à head gpl_full.txt gpl_part.txt | less
), nous appliquons head aux fichiers gpl_full.txt et gpl_pat.txt; ensuite nous utilisons la commande less pour voir les aperçus.

Voyons maintenant quelques options de la commande head.
L’option -nN affiche les N premières lignes au lieu des 10 premières lignes.
L’option -N affiche aussi les N premières lignes au lieu des 10 premières lignes.

loulou@server:~/fichiers$ head -n3 gpl_part.txt 
 The licenses for most software and other practical works are designed

to take away your freedom to share and change the works.  By contrast,
loulou@server:~/fichiers$ head -3 gpl_part.txt 
 The licenses for most software and other practical works are designed

to take away your freedom to share and change the works.  By contrast,

Les deux commandes ci-dessus nous donnent les trois premières lignes (lignes vides comprises) du fichiers gpl_part.txt

La commande tail permet d’afficher les 10 dernières lignes d’un fichier texte (lignes vides comprises). Ce qui est très
pratique pour avoir un aperçu du contenu d’un fichier journal (fichier log).

loulou@server:~/fichiers$ tail gpl_part.txt 

to take away your freedom to share and change the works.  By contrast,

the GNU General Public License is intended to guarantee your freedom to

share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

L’une des option de tail que j’aime beaucoup pour voir en temps réel les
nouvelles informations écrites dans un fichier journal est l’optionf Je la trouve vraiment puissante et utile.

loulou@server:~/fichiers$ tail -f /var/log/syslog

Vous pouvez utiliser cette option pour surveillez les logs de votre système, les logs d’un serveur web, serveur d’application, etc.
en temps réel.

Voyons quelques options utiles de tail
L’option -nN , affiche les N dernières lignes d’un fichier.
L’option -N , affiche également les N dernières lignes d’un fichier.
L’option -n +N , affiche toutes les lignes d’un fichier excepté les N premières lignes.

La commande strings extrait du texte d’un fichier binaire et l’affiche à la sortie standard. Par exemple,
les fichiers exécutables de certains programmes sont des fichiers binaires. Ils contiennent souvent du texte.

cat /usr/bin/who | less

^?ELF^B^A^A^@^@^@^@^@^@^
@^@^@^B^@>^@^A^@^@^@<A0>
^]@^@^@^@^@^@@^@^@^@^@^
@^@^@0<B4>^@^@^@^@^@^@^@^@^@^@@^@8^@     ^@@^@^]^@^\^@^F^@^@^@^E^@^@^@@^@^@^@^@^@^@^@@^@@^@^@^@^@^@@^@@^@^@^@^@^@<F8>^A^@^@^@^@^@^@<F8>^A^@^@^@^@^@^@^H^@^@^@^@^@^@^@^C^@^@^@^D^@^@^@8^B^@^@^@^@^@^@8^B@^@^@^@^@^@8^B@^@^@^@^@^@^\^@^@^@^@^@^@^@^\^@^@^@^@^@^@^@^A^@^@^@^@^@
loulou@server:~/fichiers$ strings /usr/bin/who | less

/lib64/ld-linux-x86-64.so.2
libc.so.6
fflush
strcpy
__printf_chk
setlocale
mbrtowc
gai_strerror
strncmp
optind
strrchr
__strdup

Vous voyez qu’avec la commande cat, nous avons un texte quasiment illisible, alors que le commande strings nous rapporte des
informations que nous pouvons lire.
Si nous combinons d’autres commandes nous pouvons avoir des informations précises.
Par exemple si nous recherchons des adresses mail dans notre fichier binaire, nous pouvons exécuter la commande
suivante:

loulou@server:~/fichiers$ strings -n 10 /usr/bin/who | grep '@'
bug-coreutils@gnu.org

Cette commande veut dire recherche moi les chaînes de caractère contenant ‘@’ dont la longueur minimale est de 10 caractères
dans le fichier binaire who.

Voilà nous sommes à la fin de ce long  tutoriel  mais cela valait vraiment la peine et vous avez maintenant dans votre trousse un bon nombre d’outils pour afficher les informations contenues dans un fichier. A très bientôt dans un nouveau tutoriel dédié à la création et à l’édition des fichiers. 🙂




Laisser un commentaire

Vers le haut ↑