====== cat ======
* Objet : cat, commande permettant d'afficher le contenu d'un fichier
* Commentaires : //affichez le contenu d'un ou plusieurs fichiers sélectionnés, et bien plus encore...//
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :
* Suivi :
* Création par [[user>mattux]] le 03/06/2007
* Testé par [[user>smolski]] le 19/08/2013
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=2608 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
* Niveau requis : {{tag>débutant avisé}}
===== Présentation =====
Cette commande permet d'afficher le contenu d'un ou des fichiers sélectionnés, de plus, comme nous le verrons dans ce tuto, elle reste tellement simple et efficace que son emploi est très large et très étalé dans le temps avec très peu de modification.
//Merci à //**Haricophile**// pour cette indication !// 8-)
===== Syntaxe =====
cat
==== Exemple ====
cat test.txt
Grâce à cette commande je peux voir le contenu du fichier test.txt
Si vous avez un fichier plus long que la taille de votre écran, alors je vous conseille d'utiliser l'option [[:doc:editeurs:less]], cette option vous permettra de stopper la lecture du fichier dans les limites de votre écran. \\
==== Exemple ====
cat test.txt | less
La commande ''cat'' contient d'autres options mais j'ai mis juste l’essentiel.
Vous pouvez aussi obtenir la page de ''man'' de la commande avec
man cat
==== Exemple ====
cat permet d'afficher le contenu de plusieurs fichiers, les uns à la suite des autres, c'est-à-dire de les //concaténer// !
==== Exemple ====
Créez 3 fichiers avec la [[:doc:systeme:echo | Commande Echo]].
echo salut > test1.txt
echo mon > test2.txt
echo coco > test3.txt
D'une seule commande ''cat'', vous pouvez afficher le contenu des trois fichiers ''.txt'' les uns à la suite des autres ainsi :
cat test1.txt test2.txt test3.txt
Vous obtenez :
salut
mon
coco
Intéressant ! :-)
=== Exemples pratiques ===
* [[doc:media:ffmpeg#encoder-la-video-vob-en-mkv | Encoder des VOB en MKV]]
===== cat - recherche dans de multiples fichiers ====
cat test1.txt test2.txt test3.txt | grep sa
Vous obtenez :
salut
===== cat - édition de fichier =====
La commande ''cat'', combinée avec la [[:doc:systeme:echo | commande Echo]] et la [[:doc:programmation:shell:chevrons | commande Chevron " > "]], permet de créer un seul fichier rassemblant les informations d'un ou de plusieurs fichiers d'informations ou de sécurité.
**Exemple :**
cat /proc/cpuinfo > info_cpu.txt
Le fichier ''info_cpu.txt'' sera créé et rempli des informations concernant le ''cpu'' à fin de communication par réseau ou autres utilisations nécessitant de s'y référer.
===== cat - éditeur de texte =====
==== un exemple en user ====
Ces commandes sont à faire en session user.
On tape :
cat > ~/test4.txt <
**ATTENTION !** Le > (chevron) de début de ligne indique un retour chariot (aller à la ligne).
**Nota :**
À l'intérieur de la ligne de commande ''cat'', ''EOF'' est utilisée pour __encadrer__ le début et la fin de "la partie //rédactionnelle// du texte".
Les termes ''EOF'' (//**E**nd **O**f **F**ile//) sont conventionnels. \\
Vous pouvez tout aussi bien utiliser n'importe quoi comme chaîne_de_caractère, pourvu qu'elle soit répétée au début et à la fin de l'écrit proprement dit. \\
''FDP'' par exemple (//**F**in **D**u **P**oteau//)... :-) \\
Mais en ce cas, vous risquez de se faire pas mal interroger sur vos intentions d'écriture une personne contemplant la rédaction d'un de vos script :?: :?: :?:
//Toutefois, un peu d'humour ne nuit pas, hein ?// ;-)
Le fichier sera créé dans mon ''/home/user'' grâce au signe((//tilde//)) ''~'' placé après le signe((''chevron'')) ''>''.
Voir les tutos ''tilde'' et ''chevron'' par ces liens :
* https://debian-facile.org/doc:programmation:shell:tilde
* https://debian-facile.org/doc:programmation:shell:chevrons
Nous visionnons le contenu de ce nouveau fichier avec [[:doc:editeurs:less | la Commande less]] :
less test4.txt
On obtient :
Salut
mon
coco !
Et voilà, magique !
Par la suite, pour rajouter des lignes supplémentaires __sans effacer__ :!: le contenu déjà rédigé, après la commande ''cat'' il faut ''doubler le chevron'' devant ''cat'' comme ceci :
cat >> ~/test4.txt <
Et nous obtenons :
less test4.txt
Donne :
Salut
mon
coco !
Comment vas-tu
'yau d'poële ?
//Hop !// :-)
L'exercice fini, la destruction de ce moment de poésie se fera par la [[:doc:systeme:rm | Commande rm]] ainsi :
rm test4.txt
//Ouf !// :-D
==== Un exemple en root ====
On peut utiliser la commande cat et le chevron pour réécrire son sources.list :
cat > /etc/apt/sources.list.d/test.list <
Le signe ">" ([[/doc:programmation:shell:chevrons|chevron]]) indique au shell courant de rediriger la sortie standard de la commande dans un fichier. \\
Si vous utilisez [[/doc:systeme:sudo|sudo]] pour administrer le système la commande :
sudo cat > /etc/apt/sources.list.d/test.list < ne fonctionnera pas car le shell courant, c'est celui de l'utilisateur courant, donc sans les droits root.
Le moyen le plus simple est d'utiliser d'abord la commande sudo -i
qui permet de passer en root avec le shell courant de root puis de faire la commande en commençant directement avec cat ...
===== cat - concaténation verticale =====
"Concaténation verticale" : drôle d'expression, mais c'est facile !
Il s'agit de fusionner le contenu de deux (ou plus) fichiers dans un nouveau fichier.
Reprenons l'exemple précédent :
cat > ~/test4.txt < Salut
> mon
> coco !
> EOF
Faisons de même pour un fichier "test5.txt :
cat > ~/test5.txt < Comment
> ça
> va?
> EOF
Concaténons-les en un fichier "test4-et-5.txt" :
cat ~/test4.txt ~/test5.txt > test4-et-5.txt
Et voilà :
less ~/test4-et-5.txt
Salut
mon
coco !
Comment
ça
va?
//Et Encore Hop !// :-)
==== cat et video ====
Combiné avec ffmpeg, cat permet de convertir les fichiers vidéo.
Exemple :
cat fichier video_test.vob | ffmpeg -i - 1.mp4
Bien sûr, la qualité du résultat sera limitée par le fait qu'on ne puisse ajouter des options particulières.
Voir le tuto ffmpeg :
[[doc:media:ffmpeg#encoder-en-mkv|encoder-en-mkv]]