Identification et utilisation des types de fichier

Si vous débutez avec Linux, vous ne tarderez pas à voir des fichiers dont les extensions vous sont étrangères. L'extension d'un fichier est la dernière partie de son nom située derrière le point final (pour le fichier tennis.txt, "txt" est l'extension).

Voici une courte liste des extensions et de leur signification :

Fichiers compressés/archivés

Formats de fichier

Fichiers système

Fichiers de programmation et de script

Mais les extensions de fichier ne sont pas forcément utilisées ou utilisées de façon incohérente. Dès lors, que se passe-t-il si un fichier ne porte pas d'extension, ou lorsqu'il semble ne pas correspondre à ce qu'indique l'extension ?

C'est alors que la commande file peut s'avérer utile.

Dans le Chapitre 15, nous avons créé un fichier appelé samedi, sans extension. La commande file nous permet de connaître le type de ce fichier en entrant :

file samedi
	    

Nous constatons qu'il s'agit d'un fichier texte. Tout fichier désigné comme fichier texte doit être lisible à l'aide de la commande cat, more ou less.

TuyauLisez la page de manuel
 

Pour plus de détails sur la commande file, consultez la page de manuel file en entrant man file.

A propos de la lecture des fichiers…

Il y a de nombreuses façons de lire des fichiers dans Linux. Dans le Chapitre 15, par exemple, nous avons évoqué les "pagers" more et less (on les appelle "pagers" parce qu'ils permettent de feuilleter des documents "page à page"). Nous avons également appris non seulement à afficher, mais aussi à manipuler des fichiers à l'aide de la commande cat.

Mais il existe bien d'autres options applicables à la lecture de fichiers README, de pages de manuel ou de documents créés.

Plusieurs outils vous aident à lire des fichiers texte, parmi lesquels les éditeurs de texte pico, emacs et vim, les "pagers" more et less, ainsi que les utilitaires de visualisation head, tail, cat et grep.

Examinons certaines fonctions de ces outils.

Commande less

Dans le Chapitre 15, nous avons présenté le "pager" less. Less est utilisé pour afficher des pages de manuel.

Examinons la page de manuel less pour voir less en action.

man less
	      

Pour avancer d'un écran, appuyez sur la barre d'espacement ; pour reculer d'un écran, appuyez sur B et pour quitter, appuyez sur Q.

La commande less offre également d'autres fonctions performantes, notamment la possibilité de faire défiler un texte horizontalement en spécifiant le nombre de lignes à faire défiler.

Commande more

Curieusement, la commande more offre moins de possibilités que la commande less (en réalité, la commande less est inspirée de la commande more).

Examinons la page de manuel pour la commande more, mais cette fois, ouvrons la page à l'aide de more (en redirigeant la sortie de la commande man vers more).

man more | more
	      

A première vue, le résultat ne semble pas très différent, mais la commande more est moins riche que la commande less. La différence la plus frappante est peut-être l'impossibilité de revenir en arrière dans un document (alors que les fonctions permettant d'avancer à l'aide de la barre d'espacement et de quitter en appuyant sur Q sont identiques).

Commande head

Vous pouvez utiliser la commande head simplement pour afficher le début d'un fichier. La commande est :

head nom-du-fichier
	      

Head peut être utile, mais étant donné qu'elle est limitée aux quelques premières lignes du fichier, elle ne permet pas d'en connaître la longueur réelle. Par défaut, vous pouvez uniquement lire les 10 premières lignes d'un fichier, bien qu'il soit possible de spécifier le nombre de lignes supplémentaires à afficher en entrant :

head -20 nom-du-fichier
            

Lisez la page de manuel de la commande head (man head) pour plus de détails. Les commandes less ou more vous sembleront probablement plus utiles parce qu'elles permettent de "feuilleter" le fichier si vous réalisez que les informations recherchées se situent plus loin dans le fichier que vous ne le pensiez.

Commande tail

La commande tail a la fonction inverse de la commande head. La commande (tail) permet de consulter les 10 dernières lignes d'un fichier.

Commande cat

La commande cat, acronyme de concaténation, affiche le contenu de tout le fichier à l'écran. cat peut s'avérer utile si le fichier est très court, comme dans le cas du fichier tennis.txt que nous avons créé. Mais si un fichier est assez long, il risque de défiler très rapidement à l'écran car la commande cat affiche le fichier tout entier.

Commande grep

La commande grep est très utile pour rechercher des chaînes de caractère particulières dans un fichier. Imaginons que nous recherchions chaque occurrence du mot "café" dans le fichier tennis.txt, créé dans notre répertoire de connexion. Nous pourrions entrer :

grep café tennis.txt
          

Nous obtiendrions alors toutes les lignes contenant le mot "café".

TuyauPensez à la casse
 

Sauf spécification contraire, les recherches de la commande grep sont sensibles à la casse. Cela signifie que si vous recherchez Café, vous n'obtiendrez pas le même résultat qu'en recherchant le mot café. L'une des options de la commande grep, -i, permet aussi d'effectuer une recherche dans un fichier sans tenir compte de la casse. Pour plus d'informations sur cette commande, reportez-vous à la page de manuel grep .

Redirection E/S et "pipes"

N'oubliez pas d'utiliser des "pipes" et la redirection de sortie lorsque vous voulez stocker et/ou imprimer des informations à lire ultérieurement.

Vous pouvez par exemple utiliser la commande grep pour effectuer une recherche sur le contenu d'un fichier particulier, puis enregistrer les résultats ou les envoyer à une imprimante.

Pour imprimer les informations relatives aux occurrences du mot "café" dans le fichier tennis.txt, entrez simplement :

grep café tennis.txt | lpr
	      

Cette commande a le même effet que la commande ls -al /etc | more. Vous l'avez peut-être déjà utilisée au Chapitre 15 pour afficher le contenu du répertoire /etc, puis envoyer les résultats à l'aide de la commande more afin de les afficher à l'écran.

TuyauIl est plus sûr d'utiliser >>
 

N'oubliez pas la distinction entre l'utilisation de > et de >> : le signe > entraîne l'écrasement du fichier, tandis que le signe >> ajoute des informations au fichier. Habituellement (sauf si vous êtes certain de ce que vous voulez), il est plus sûr d'utiliser >> pour éviter tout risque de perte d'informations précieuses (même s'il vous faudra peut-être éditer ensuite le fichier si vous ne souhaitez pas y ajouter d'informations).

Caractères génériques et expressions régulières

Que se passe-t-il si vous avez oublié le nom du fichier recherché ? Vous ne pouvez pas dire à votre ordinateur : rechercher un fichier nommé "tenn" ou "tenn-quelque chose".

Et pourtant si, en quelque sorte. Les caractères génériques ou les expressions régulières permettent d'agir sur un ou plusieurs fichiers sans en connaître le nom complet. Il suffit de saisir les caractères que vous connaissez et de remplacer les autres par un caractère générique.

TuyauInformations complémentaires sur les caractères génériques et les expressions régulières
 

Pour en savoir plus sur les caractères génériques et les expressions régulières, consultez la page de manuel bash (man bash). N'oubliez pas que vous pouvez enregistrer le fichier sous la forme d'un fichier texte en entrant man bash | col -b > bash.txt. Ensuite, vous pouvez l'ouvrir et le lire à l'aide de less ou de pico (pico bash.txt). Si vous voulez imprimer le fichier, prenez garde à sa longueur.

Vous savez que le fichier s'appelle "tenn-quelque chose.txt". Entrez simplement :

ls tenn*.txt
	      

Le nom du fichier s'affiche :

tennis.txt
	      

Il est probable que vous utiliserez très fréquemment l'astérisque (*) pour effectuer de telles recherches. L'astérisque permet de rechercher tout ce qui correspond au modèle recherché. Vous pouvez donc même entrer :

ls *.txt
	      

ou :

ls sn*
	      

Vous trouverez également tennis.txt ; la différence est que la liste contiendra davantage de fichiers correspondant au modèle recherché.

Il est donc utile de limiter la recherche au maximum.

Une façon de limiter la recherche consiste à utiliser le point d'interrogation (?). Tout comme l'astérisque, le signe ? peut vous aider à retrouver un fichier correspondant à un certain modèle de recherche.

Dans ce cas, cependant, le signe ? permet de remplacer un seul caractère inconnu ; ainsi, si vous recherchez tenni?.txt, vous trouverez tennis.txt, de même que tenniz.txt s'il existe un fichier de ce nom.

Si un astérisque fait partie du nom du fichier, comme ce serait le cas si le fichier tennis.txt s'appelait plutôt tenn*.txt, les expressions régulières s'avèrent utiles.

Les expressions régulières sont plus complexes que l'astérisque ou le point d'interrogation.

La barre oblique inverse (\) permet de spécifier que vous ne voulez pas rechercher tout ce que remplace l'astérisque, mais plutôt un fichier dont le nom contient une astérisque.

Si le fichier s'appelle tenn*.txt, entrez :

tenn\*.txt
	      

Voici une courte liste des caractères génériques et des expressions régulières :

  • * -- Correspond à tous les caractères

  • ? -- Correspond à un caractère dans une chaîne (par exemple tenni?.txt)

  • \* -- Correspond au caractère *

  • \? -- Correspond au caractère ?

  • \) -- Correspond au caractère )

Vous pouvez également utiliser les caractères génériques pour d'autres fonctions que la recherche : ils s'avèrent utiles pour déplacer ou renommer des fichiers. Les expressions régulières peuvent également vous aider à renommer des fichiers contenant des caractères tels que * et ?.

Pour en savoir plus à ce sujet, poursuivez la lecture.