La commande Cat est l'une des commandes de base que vous avez apprises lorsque vous avez commencé dans le monde Unix/Linux.
Vous savez déjà que cat affiche le contenu d'un fichier. Que pourrait faire de plus cette commande ?
Ce tutoriel donne 10 exemples pratiques d'utilisation de la commande cat. Probablement peu de ces exemples pourraient être nouveaux pour vous. Ou, cela pourrait simplement être un rappel pour vous, si vous connaissiez déjà ces exemples.
1. Afficher le contenu d'un fichier
Lorsque vous passez le nom du fichier en argument à cat, il affiche le contenu du fichier comme indiqué ci-dessous.
$ cat program.pl #!/usr/bin/perl if( 2 ge 3) { print "greater\n"; }else { print "lesser\n"; }
Vous pouvez également afficher le contenu de plusieurs fichiers, comme indiqué ci-dessous.
$ cat program.pl program2.pl #!/usr/bin/perl if( 2 ge 3) { print "greater\n"; }else { print "lesser\n"; } #!/usr/bin/perl @arr = qw(1 2 3); $ref = \@arr; print ref $ref;
2. Créer un nouveau fichier
À l'aide de la commande cat, les lignes reçues de stdin peuvent être redirigées vers un nouveau fichier à l'aide de symboles de redirection.
Lorsque vous tapez simplement la commande cat sans aucun argument, il reçoit simplement le contenu stdin et l'affiche dans la stdout. Ainsi, après avoir tapé la ligne une fois, lorsque vous appuyez sur Entrée, la même ligne est imprimée dans la ligne suivante, comme indiqué ci-dessous.
$ cat cat command for file oriented operations. cat command for file oriented operations. cp command for copy files or directories. cp command for copy files or directories.
Vous pouvez également rediriger la sortie standard vers un nouveau fichier comme indiqué ci-dessous.
$ cat >cmd_usage.txt cat command for file oriented operations. cp command for copy files or directories. $ cat cmd_usage.txt cat command for file oriented operations. cp command for copy files or directories.
Parfois, vous devrez peut-être ajouter le contenu à un fichier, utilisez>> le symbole de redirection comme indiqué ci-dessous.
$ cat >>cmd_usage.txt ls command to list out file and directory with its attributes. $ cat cmd_usage.txt cat command for file oriented operations. cp command for copy files or directories. ls command to list out file and directory with its attributes.
3. Copier le contenu du fichier
Les symboles de redirection sous Unix jouent un rôle important dans le traitement du contenu du descripteur de fichier standard. En l'utilisant, vous pouvez copier le contenu d'un fichier dans un autre comme indiqué ci-dessous.
$ cat program.pl >backup_prgm.pl
Comme vu ci-dessus, puisque nous avons utilisé la redirection de sortie, le contenu affiché dans la sortie standard est dirigé vers un nouveau fichier appelé backup_pgrm.pl. Afficher le contenu de backup_pgrm.pl :
$ cat backup_pgrm.pl #!/usr/bin/perl if( 2 ge 3) { print "greater\n"; }else { print "lesser\n"; }
4. Concaténer le contenu de plusieurs fichiers
Grâce à la commande cat, vous pourrez concaténer le contenu de plusieurs fichiers dans un nouveau fichier.
Par exemple, les codes de program.pl et program2.pl sont combinés dans un nouveau fichier all_pgrm.pl.
$ cat program.pl program2.pl >all_pgrm.pl
Comme vu ci-dessus, stdout est redirigé et le nouveau fichier a été créé avec le contenu de program.pl et program2.pl. Vérifiez le contenu de all_pgrm.pl :
$ cat all_pgrm.pl #!/usr/bin/perl if( 2 ge 3) { print "greater\n"; }else { print "lesser\n"; } #!/usr/bin/perl @arr = qw(1 2 3); $ref = \@arr; print ref $ref;
5. Afficher les numéros de ligne
Pour afficher le contenu d'un fichier avec le numéro de ligne devant chaque ligne, utilisez l'option -n. L'exemple suivant imprime le numéro de ligne pour les lignes de program.pl,
$ cat -n program.pl 1 #!/usr/bin/perl 2 3 4 if( 2 ge 3) { 5 print "greater\n"; 6 } else { 7 print "lesser\n"; 8 } 9 10
Comme vous l'avez remarqué ci-dessus, même les lignes vides sont numérotées. En cas de numérotation uniquement des lignes non vides, utilisez l'option -b comme suit,
$ cat -b program.pl 1 #!/usr/bin/perl 2 3 if( 2 ge 3) { 4 print "greater\n"; 5 } else { 6 print "lesser\n"; 7 }
Notez que les lignes qui contiennent des espaces blancs ne sont pas considérées comme des lignes vides et il en va de même pour la ligne numérotée 2.
6. Concaténer le contenu du fichier avec l'entrée de Stdin
Il est possible de lire les lignes de stdin avec la concaténation d'autres fichiers. Par conséquent, l'utilisateur peut saisir son propre contenu chaque fois que cela est nécessaire.
Dans l'exemple suivant, vous pouvez insérer quelques lignes (à partir de stdin) au début tout en combinant des fichiers ensemble.
$ cat - program.pl program2.pl >all_pgrm.pl Contents from file : program.pl, program2.pl
Comme vu ci-dessus, - est l'endroit où vous pouvez lire à partir de stdin, en conséquence 1 ligne de stdin a été insérée au début d'un nouveau fichier appelé all_pgrm.pl avec le dernier contenu des fichiers program.pl et program2.pl :
$ cat -n all_pgrm.pl 1 Contents from file : program.pl, program2.pl 2 #!/usr/bin/perl 3 4 5 if( 2 ge 3) { 6 print "greater\n"; 7 } else { 8 print "lesser\n"; 9 } 10 11 12 #!/usr/bin/perl 13 14 @arr = qw(1 2 3); 15 $ref = \@arr; 16 print ref $ref;
7. Ne pas afficher les lignes de sortie vides répétées
Parfois, le fichier contient des lignes vides répétées que vous ne souhaitez pas afficher dans le stdout tout en le répertoriant. La commande cat fournit une option appelée -s qui supprimera les lignes de sortie vides consécutives en une seule et s'affichera.
Comme remarqué dans le premier exemple d'utilisation 5 (c'est-à-dire:Afficher avec le numéro de ligne devant chaque ligne), il y a deux lignes de sortie vides consécutives dans le fichier program.pl numérotées 9 et 10. Peut-être que vous ne voulez pas afficher ces lignes de sortie vides répétées. Cela peut être supprimé comme indiqué ci-dessous :
# cat -sn program.pl 1 #!/usr/bin/perl 2 3 4 if( 2 ge 3) { 5 print "greater\n"; 6 } else { 7 print "lesser\n"; 8 } 9
Respectivement, les lignes 9 et 10 sont supprimées dans une ligne vide dans la sortie ci-dessus (c'est-à-dire la ligne 9).
8. Afficher les caractères de fin de ligne et de tabulation
Vous pouvez faire en sorte que le chat affiche le caractère $ à la fin de chaque ligne. Normalement, en listant le contenu du fichier, les utilisateurs ne peuvent pas identifier les espaces à la fin de chaque ligne, en utilisant l'option cat -e.
Par exemple, utilisez l'option -e sur le fichier program.pl. Comme indiqué ci-dessous, la troisième ligne de ce fichier (c'est-à-dire program.pl) n'est en fait pas une ligne vide et la ligne 7 se termine respectivement par des espaces blancs.
$ cat -ne program.pl 1 #!/usr/bin/perl$ 2 $ 3 $ 4 if( 2 ge 3) {$ 5 print "greater\n";$ 6 } else {$ 7 print "lesser\n"; $ 8 }$ 9 $ 10 $
Utilisez l'option -T pour afficher les caractères de tabulation. Il affiche ^I pour le caractère TAB. Comme indiqué ci-dessous, line5 et line7 commencent par un caractère TAB.
$ cat -neT program.pl 1 #!/usr/bin/perl$ 2 $ 3 $ 4 if( 2 ge 3) {$ 5 ^Iprint "greater\n";$ 6 } else {$ 7 ^Iprint "lesser\n"; $ 8 }$ 9 $ 10 $
9. Lire le contenu jusqu'à un modèle spécifique
Le document here peut être utilisé avec la commande cat. Par exemple, lorsque vous lisez à partir de stdin, vous pouvez lire jusqu'à une ligne contenant un modèle spécifique. Dans l'exemple ci-dessous, le bloc de lignes est lu depuis stdin (jusqu'à EOF) et imprimé sur la sortie standard.
$ cat <<EOF > mv command to move files and directories > top command to display linux tasks > EOF mv command to move files and directories top command to display linux tasks
10. Afficher le contenu du fichier à l'envers
Cet exemple est un tricheur. Ce n'est vraiment pas un exemple de commande cat, mais c'est lié.
tac est l'inverse de chat. Comme vous pouvez l'imaginer, tac affichera simplement le contenu d'un fichier dans l'ordre inverse (les lignes du bas sont affichées en premier). Si vous souhaitez simplement inverser les caractères de la ligne, vous devez utiliser la commande rev.
Par exemple, le fichier program.pl est affiché à l'envers comme :
$ tac program.pl } print "lesser\n"; } else { print "greater\n"; if( 2 ge 3) { #!/usr/bin/perl