Cat - Tree - Tutoriel linux

Mise à jour : Debian 10.3

Sommaire

1 - Cat

1.1 - Utilisation standard

$ cat exemple
# Ceci est un fichier avec 3 lignes
Ligne 2 : {a,b,c}, ",',#,~,....
Ligne 3 : $(date)

Tous les caractères sont transmis, les métacaractères ne sont pas interprétés

$ cat -n exemple
1 # Ceci est un fichier avec 3 lignes
2 Ligne 2 : {a,b,c}, ",',#,~,....
3 Ligne 3 : $(date)

1.2 - Redirections - Création de fichier

$ cat > Fichier_démo
Utiliser la redirection simple et taper le contenu, Bla bla bla,
Terminer en tapant Ctrl d

$ cat Fichier_démo Utiliser la redirection simple et taper le contenu, Bla bla bla,
Terminer en tapant Ctrl d

Note : il est également possible d'utiliser la notation cat - (où - représente l'entrée normale) à la place de cat

$ cat - > Fichier_démo
- représente l'entrée normale
Terminer en tapant Ctrl D
$ cat >>Fichier_démo
Pour ajouter du contenu à un fichier existant :         
Utiliser la redirection double >>
Taper le texte et
Terminer en tapant Ctrl d

$ cat Fichier_démo Utiliser la redirection simple et taper le contenu, Bla bla bla,
Terminer en tapant Ctrl d
Taper le contenu du fichier
Utiliser la redirection double >>
Taper le texte et
Terminer en tapant Ctrl d
$ echo Contenu fichier 1 >file1
$ echo Contenu fichier 2 >file2
$ echo Contenu fichier 3 >file3

$ cat file1 file2 file3 >total

$ cat total
Contenu fichier 1
Contenu fichier 2
Contenu fichier 3
$ cat file1 - file2 >total
ajouté depuis le clavier
Ctrl D pour terminer la saisie

$ cat total
Contenu fichier 1
ajouté depuis le clavier
Ctrl D pour terminer la saisie
Contenu fichier 2

1.3 - "Here document" - Création de fichier entre deux délimiteurs

Avec here document( >>), seuls les caractères $ et \ sont expansés :

cat <<EOF
> Ce contenu a 3 lignes
> Ligne2 : {a,b,s}, ",',#,~,...
> Ligne 3 : $(date)
> EOF
Ce contenu a 3 lignes
Ligne2 : {a,b,s}, ",',#,~,...
Ligne 3 : samedi 21 octobre 2017, 23:36:28 (UTC+0200)
$ cat <<EOF>Fichier_créé
>...
>contenu
>....
>EOF

La première ligne peut-être aussi écrite :

$ cat >Fichier_créé <<EOF
$ cat <<EOF>>Ficher_prolongé
> ....
> contenu
> ....
> EOF

Le script suivant :

$ cat script
#! /usr/bin/bash

cat <<EOF
Seuls les métacaractères $ et \ sont expansés :
\$(date) devient $(date)
{a,b,c}, ",',~,#, ... sont inchangés
EOF

affiche lorsqu'il est exécuté :

$ bash script
Seul les métacaractères $ et \ sont expansés :
$(date) devient samedi 21 octobre 2017, 22:54:43 (UTC+0200)
{a,b,c}, ",',~,#, ... sont inchangés

1.4 - Récupération du contenu d'un fichier dans une variable

$ cat démo
Ligne 1

Ligne 3
Ligne 5
$ echo $(cat démo)
Ligne1 Ligne3 Ligne5

Les passages à la ligne, les tabulations et les lignes blanches sont supprimées

2 - Tee

2.1 - Utilisation standard

$ tee demo1 demo2 demo3 
première ligne
première ligne
deuxième ligne
deuxième ligne
troisième ligne
troisième ligne
Ctrl D

Vérification :

$ cat demo1 demo2 demo3
première ligne
deuxième ligne
troisième ligne
première ligne
deuxième ligne
troisième ligne
première ligne
deuxième ligne
troisième ligne
$ tee demo1 demo2 >/dev/null
La sortie affichage de tee est redirigée vers /dev/null
En conséquence, la saisie n'est plus répétée à l'écran
$ tee -a demo1 demo2 >/dev/null
Ceci sera rajouté à la fin des fichiers demo1 et demo2
Ctrl D

2.2 - Utilisation en pipeline

tee est utilisable comme élément de pipeline

$ cat démotee 
Utilisation de tee
pour recopier un fichier
et en même temps afficher son contenu

$ cat démotee |tee copie_démotee
Utilisation de tee
pour recopier un fichier
et en même temps afficher son contenu
$ lsmod |wc -l |tee demo
108

2.3 - sudo et tee

Utilisation de | sudo tee ou | sudo -a tee pour créer ou modifier un fichier dans un répertoire nécessitant un accès super-utilisateur

$ cat démotee |sudo tee /root/copie
$ cat démotee |sudo tee -a /root/copie >0
$ cat - |sudo tee -a /root/copie
Utilisation de cat : nous sommes le $(date), dans le répertoire ~
Ctrl D
$ cat <<EOF |sudo tee -a /root/copie
Utilisation de here document: nous sommes le $(date), dans le répertoire ~
EOF
$ echo "Utilisation de echo : nous sommes le $(date), dans le répertoire ~" |sudo tee -a /root/copie

Contenu du fichier /root/copie résultant

$ sudo cat /root/copie
Utilisation de cat : nous sommes le $(date), dans le répertoire ~
Utilisation de here document : nous sommes le dimanche 22 octobre 2017, 17:01:07 (UTC+0200), dans le répertoire ~
Utilisation de echo : nous sommes le dimanche 22 octobre 2017, 17:04:33 (UTC+0200), dans le répertoire /home/philipp
$ sudo wpa_passphrase SSID Phrase_de_passe |sudo tee /etc/wpa_supplicant.conf2
network={
ssid="SSID"
# psk="Phrase_de_passe"
psk=29af2cfc18f283c4f8cb739d6356c5189d9b4c6d0b7cc564485505dc5edb1682
}
$ echo "Démonstration" |sudo tee /dev/sdb1
$ for i in {0000000..0009999}; do echo "$i *******"; 
done |sudo tee /dev/sdb &>2