Administrateur Linux - Commande cat

le catLa commande est utilisée pour concaténer les fichiers et imprimer sur la sortie standard. Auparavant, nous avons démontré à la fois des utilisations et des abus avec la commande cat. cat sert les fins distinctes suivantes -

  • Afficher le contenu des fichiers

  • Ecrire le contenu d'un fichier dans un autre fichier

  • Combinez plusieurs fichiers en un seul fichier

  • Prise en charge des fonctionnalités spéciales: ajout de numéros de ligne, affichage de caractères spéciaux, élimination des lignes vides

Commutateur action
-b Nombre de lignes non vides
-E Afficher les extrémités de la ligne
-T Afficher les onglets
-s Appuyez sur le blanc, supprimez les lignes vides répétées

Comme indiqué précédemment, lorsque vous utilisez des utilitaires tels que grep , sort et uniq, nous voulons éviter de rediriger la sortie de cat si possible. Nous l'avons fait pour une simple démonstration des commandes de tuyauterie plus tôt. Cependant, savoir quand effectuer une opération avec un utilitaire comme grep est ce qui sépare les administrateurs Linux des utilisateurs finaux Linux.

Mauvaise habitude

[[email protected] centos]# cat /etc/passwd | sort -t: -k1  | grep ":0" 
halt:x:7:0:halt:/sbin:/sbin/halt 
operator:x:11:0:operator:/root:/sbin/nologin 
root:x:0:0:root:/root:/bin/bash 
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 
sync:x:5:0:sync:/sbin:/bin/sync 
[[email protected] centos]#

Bonne habitude

[[email protected] centos]# grep ":0" /etc/passwd | sort -t: -k 1  
halt:x:7:0:halt:/sbin:/sbin/halt 
operator:x:11:0:operator:/root:/sbin/nologin 
root:x:0:0:root:/root:/bin/bash 
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 
sync:x:5:0:sync:/sbin:/bin/sync 
[[email protected] centos]#

Note - envoyer cat aux commandes secondaires comme sort ou grep ne doit être fait que lorsque cela est nécessaire.

Une utilisation courante de cat concerne les sauts de ligne au format Windows. Linux et Windows de par leur conception interne, utilisent un code de contrôle différent pour représenter End Of Line (EOL) -

* Linux line break is always a Line Feed: LF or depicted as "\n". 
* Windows is Carriage Return followed by a Line Feed: CR LF or depicted as "\r\n".
* Macintosh, in all moderne releases of OS X and now macOS, has adopted the Linux/Unix 
standard of LF or "\n"

Donc, disons que nous ouvrons notre fichier dans un éditeur de texte GUI comme gedit ou que nous rencontrons des problèmes aléatoires lors de l'application des commandes de filtrage. Le texte apparaît sur une seule ligne ou les commandes de filtrage ne fonctionnent pas comme prévu.

Surtout, lorsque le fichier texte a été téléchargé sur Internet, nous voulons vérifier les sauts de ligne. Voici un exemple de sortie de chat montrant des caractères EOL.

[[email protected] centos]# cat -E  ./Desktop/WinNames.txt  
 $ed:Daniel:101 
 $enny:Colon:608 
 $ana:Maxwell:602 
 $arian:Little:903 
 $obbie:Chapman:403 
 $icolas:Singleton:203 
 $ale:Barton:901

Notez le précédent "$"sur chaque ligne? Linux lit le CR" \ n ", cassant le fichier. Puis traduisant un retour chariot sur le premier caractère de chaque fichier.

Lorsqu'il est visualisé sans le commutateur -E, le fichier semble correct -

[[email protected] centos]# cat  ./Desktop/WinNames.txt  
 Ted:Daniel:101 
 Jenny:Colon:608 
 Dana:Maxwell:602 
 Marian:Little:903 
 Bobbie:Chapman:403 
 Nicolas:Singleton:203 
 Dale:Barton:901

Heureusement, avec les commandes de filtrage Linux, c'est une solution facile -

[[email protected] centos]# sed -i 's/\r$//g' ./Desktop/WinNames.txt  
[[email protected] centos]# cat -E ./Desktop/WinNames.txt  
Ted:Daniel:101$ 
Jenny:Colon:608$ 
Dana:Maxwell:602$

Note - Lorsqu'ils sont visualisés avec le commutateur -E, tous les sauts de ligne Linux se terminent par $.

cat peut également être utilisé pour combiner plusieurs fichiers en un seul fichier.

[[email protected] centos]# cat linux.txt  
CentOS 
Ubuntu 
Red Hat 
Suse 
Debian 
[[email protected] centos]# cat windwos.txt  
NT 3.5 
NT 4.0 
Server 2000 
Server 2003 
Server 2008 
Server 2012 
Server 2016 
[[email protected] centos]#

Utilisons maintenant cat pour combiner les deux fichiers.

[[email protected] centos]# cat windwos.txt linux.txt > server_class_operating_sytems.txt 
[[email protected] centos]# cat server_class_operating_sytems.txt  
NT 3.5 
NT 4.0 
Server 2000 
Server 2003 
Server 2008 
Server 2012 
Server 2016 
CentOS 
Ubuntu 
Red Hat 
Suse 
Debian 
[[email protected] centos]#

Enfin, nous pouvons utiliser le -npour numéroter chaque ligne de sortie. Cela nous donnera un total de lignes.

[[email protected] centos]# cat -n ./server_class_operating_sytems.txt  
 1  NT 3.5 
 2  NT 4.0 
 3  Server 2000 
 4  Server 2003 
 5  Server 2008 
 6  Server 2012 
 7  Server 2016 
 8  CentOS 
 9  Ubuntu 
10  Red Hat 
11  Suse 
12  Debian [[email protected] centos]#