Mise à jour : Debian 10.3
Cat : Visualisation et concaténation de fichier
Tee : Lire depuis l'entrée standard et écrire sur la sortie standard et dans les fichiers
Affichage du contenu d'un fichier
$ 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
Avec option -n : Affichage avec numérotation des lignes
$ cat -n exemple
1 # Ceci est un fichier avec 3 lignes
2 Ligne 2 : {a,b,c}, ",',#,~,....
3 Ligne 3 : $(date)
Création de fichier à partir du contenu saisi sur l'entrée standard : Redirection simple >
$ 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
Ajout d'un contenu à la fin d'un fichier existant : Redirection double >>
$ 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
Concaténation de fichiers
$ 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
Concaténation de fichiers et d'entrée standard, le signe - représente l'entrée standard :
$ 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
Avec here document( >>), seuls les caractères $ et \ sont expansés :
Affichage et saisie en console
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)
Au lieu d'afficher le contenu, pour créer (>) un fichier avec ce contenu
$ cat <<EOF>Fichier_créé
>...
>contenu
>....
>EOF
La première ligne peut-être aussi écrite :
$ cat >Fichier_créé <<EOF
Au lieu de créer un fichier, pour prolonger (>>)un fichier existant
$ cat <<EOF>>Ficher_prolongé
> ....
> contenu
> ....
> EOF
Here document est utilisable dans un script
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
Fichier de départ
$ cat démo
Ligne 1
Ligne 3
Ligne 5
Variable avec le contenu du fichier
$ echo $(cat démo)
Ligne1 Ligne3 Ligne5
Les passages à la ligne, les tabulations et les lignes blanches sont supprimées
Créer trois fichiers identiques, demo1, demo2 et demo3 à partir de l'entrée standard et afficher la sortie standard, à partir de l'entrée console. Pour sortir du mode saisie, saisir : Ctrl D
$ 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
Ne pas afficher la sortie standard sur l'écran pour éviter le doublage des lignes :
$ 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
tee est utilisable comme élément de pipeline
Recopie d'un fichier et affichage simultané de son contenu |tee
$ 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
Utilisation du résultat de commandes, ici création d'un fichier avec le nombre de modules chargés
$ lsmod |wc -l |tee demo
108
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
Utilisation avec cat, head, tail, ....: Recopie d'un fichier ou partie de fichier dans un répertoire à accès privilégié
$ cat démotee |sudo tee /root/copie
$ cat démotee |sudo tee -a /root/copie >0
Ajout d'une saisie dans un fichier situé dans un répertoire à accès privilégié
avec cat
$ cat - |sudo tee -a /root/copie
Utilisation de cat : nous sommes le $(date), dans le répertoire ~
Ctrl D
avec here document
$ cat <<EOF |sudo tee -a /root/copie
Utilisation de here document: nous sommes le $(date), dans le répertoire ~
EOF
avec echo
$ 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
Combinaison avec un résultat de commande
$ 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