====== 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]]