13.9. Manipulation de fichiers à l'aide de cat

Red Hat Linux est doté d'un utilitaire qui peut vous aider à maintenir des listes courtes, les regrouper et même vous donner des informations sur votre système.

Cet utilitaire s'appelle cat, une abréviation du mot anglais 'concatenate', qui signifie regrouper des fichiers.

La commande cat permet également d'afficher le contenu d'un fichier entier à l'écran (par exemple, entrez cat filename.txt). Si un fichier est assez long, il défilera rapidement devant vous à l'écran. Pour éviter cela, utilisez la commande cat filename.txt | less.

L'association de la barre verticale (| - aussi appelée tube ou 'pipe' de l'anglais ) et de la commande less permet l'affichage du fichier page par page. Vous pouvez alors utiliser les flèches haut et bas pour vous déplacer en avant et en arrière dans les pages. Pour en savoir plus sur l'utilisation des barres verticales pour séparer deux fonctions, consultez la Section 13.10.

13.9.1. Utilisation du réacheminement

Le réacheminement est l'opération consistant à faire en sorte que le shell change ce qu'il considère être l'entrée standard ou la destination de la sortie standard.

Pour réacheminer la sortie standard, utilisez le symbole >. Lorsque l'on place le symbole > après la commande cat (ou après tout utilitaire ou toute application qui écrit vers la sortie standard), on envoie la sortie vers le nom du fichier suivant le symbole.

Par exemple, l'utilisation de la commande cat seule dirige simplement votre entrée vers l'écran comme si elle répétait la ligne que vous venez de taper. Dans l'exemple suivant, la commande cat répète toutes les lignes saisies:

Figure 13-5. Exemple de commande cat

Pour réacheminer la sortie de cat vers un fichier, tapez la commande suivante à l'invite du shell (pour passer à la ligne vierge suivante, appuyez sur la touche [Entrée]):

cat > sneakers.txt

Figure 13-6. Réacheminement d'une sortie vers un fichier

Appuyez sur la touche [Entrée] pour aller sur une ligne vierge et utilisez les touches [Ctrl]-[D] pour quitter cat.

Remarquez-vous une différence dans Figure 13-6? Aucune entrée n'est répétée. Cela est dû au fait que la sortie standard de cat a été réacheminée. Le réacheminement a eu lieu vers un tout nouveau fichier que vous avez appelé sneakers.txt.

Vous pouvez trouver ce fichier dans le répertoire où vous vous trouviez lorsque vous avez lancé cat (tapez ls si vous voulez le voir dans la liste).

Comme vous l'avez déjà vu, vous pouvez ensuite utiliser cat pour lire le fichier. À l'invite, tapez:

cat sneakers.txt

AttentionAttention
 

Faites attention lorsque vous réacheminez la sortie vers un fichier car vous pourriez facilement écraser un autre fichier par réécriture! Assurez-vous que le nom du fichier que vous créez n'est pas identique au nom d'un fichier existant, sauf bien sûr si vous souhaitez le remplacer.

Utilisez le réacheminement de sortie pour un autre fichier que vous appellerez home.txt. Pour cet exemple, entrez la commande cat > home.txt, puis appuyez sur la touche [Entrée] suivi de:

bring the coffee home
take off shoes
put on sneakers
make some coffee
relax!

Placez-vous ensuite sur une ligne vierge et utilisez à nouveau la combinaison des touches [Ctrl]-[D] pour quitter cat.

Utilisez alors cat pour associer home.txt avec sneakers.txt et réacheminer la sortie des deux fichiers vers un tout nouveau fichier appelé saturday.txt (vous trouverez un exemple dans la Figure 13-7). Entrez les éléments suivants:

cat sneakers.txt home.txt > saturday.txt

Figure 13-7. Association de fichiers et réacheminement de la sortie

Vous voyez que cat a ajouté home.txt là où sneakers.txt se terminait.

13.9.2. Concaténation de la sortie standard

Il est possible d'utiliser le réacheminement de la sortie pour ajouter de nouvelles informations à la fin d'un fichier existant. De façon semblable à l'utilisation du symbole >, vous indiquez au shell d'envoyer les informations à un endroit autre que la sortie standard.

Toutefois, lorsque vous utilisez >>, vous ajoutez des informations à un fichier plutôt que d'en remplacer tout le contenu.

La meilleure façon de comprendre cette fonction est de la mettre en application dans un exemple concret. Prenez les deux fichiers qui ont déjà été créés (sneakers.txt et home.txt) et regroupez-les au moyen du symbole de concaténation de sortie. Si vous souhaitez ajouter les informations contenues dans home.txt à celles qui existent déjà dans sneakers.txt, tapez:

cat home.txt >> sneakers.txt

Vérifiez maintenant le fichier à l'aide de la commande cat sneakers.txt. La sortie finale montre le contenu de home.txt à la fin du fichier:

buy some sneakers
then go to the coffee shop
then buy some coffee
bring the coffee home
take off shoes
put on sneakers
make some coffee
relax!

La commande que vous avez saisie a indiqué au système de concaténer la sortie du fichier home.txt au fichier sneakers.txt.

En utilisant des fichiers existants plutôt qu'en en créant un nouveau, la concaténation de la sortie permet de vous faire économiser du temps (et de réduire l'encombrement du disque).

En comparant maintenant les résultats des fichiers sneakers.txt et saturday.txt vous constaterez qu'ils sont identiques. Pour effectuer une comparaison, entrez:

cat sneakers.txt; cat saturday.txt

Le contenu des deux fichiers s'affichera alors — tout d'abord sneakers.txt, puis saturday.txt (comme le montre la Figure 13-8).

Figure 13-8. Enchaînement de commandes et comparaison de fichiers

13.9.3. Réacheminement de l'entrée standard

Vous pouvez non seulement réacheminer la sortie standard, mais aussi exécuter le même type de réacheminement avec l'entrée standard.

Lorsque vous utilisez le symbole de réacheminement de l'entrée standard <, vous indiquez au shell que vous désirez qu'un fichier soit lu comme entrée d'une commande.

Pour illustrer ce concept, utilisez un fichier que vous avez déjà créé. Tapez:

cat < sneakers.txt

Étant donné que vous avez utilisé le symbole d'infériorité (<) afin de séparer la commande cat du fichier, la sortie de sneakers.txt a été lue par cat.

Figure 13-9. Réacheminement de l'entrée standard