Linoux

  Accueil

Zoom   

Accueil > Administration > Shell > Echo - Cat - Tee
Echo - Cat - Tee
LinuxInfo
Dezoom

Echo - Cat - Tee


Echo : Afficher une ligne de texte

Tee : Lire depuis l'entrée standard et écrire sur la sortie standard et dans les fichiers

Cat : Visualisation et concaténation de fichiers

Head : Affichage des premières lignes d'un fichier

Tail : Affichage des dernières lignes d'un fichier

Mise à jour : Debian 9.0

1 - Echo

1.1 - Utilisation standard  :

$ echo Afficher une ligne de texte
Afficher une ligne de texte
$ echo -n Afficher une ligne de texte
Afficher une ligne de textenom_utilisateur@nom_hôte
$ echo 'première ligne
> deuxième ligne
> troisième ligne'
première ligne
deuxième ligne
troisième ligne

Les guillemets influencent la prise en compte de l'expansion (voir ci-dessous) : voir Expansion de la ligne de commande

cat << (voit ci-dessous here document) ne présente pas cette limitation.

1.3 - Caractères déspécifiés : option -e

$ echo -e "Première ligne \nDeuxième ligne\nTroisième ligne"
Première ligne
Deuxième ligne
Troisième ligne
$ echo -e 'Une tabulation \tUne tabulation \tUne tabulation'
Une tabulation Une tabulation Une tabulation
$ echo -e '\0101 \0102 \0103'
A B C
$ echo -e '\x41 \x42 \x43'
A B C

1.4 - Redirections

$ echo "La redirection > redirige la sortie standard (console) vers un fichier">démo.txt
$ cat démo.txt
La redirection > redirige la sortie standard (console) vers un fichier
$ echo "La redirection >> ajoute la sortie standard à la fin d'un fichier existant, ou le crée s'il n'existe pas" >> démo.txt 
$ cat démo.txt
La redirection > redirige la sortie standard (console) vers un fichier
La redirection >> ajoute la sortie standard à la fin d'un fichier existant, ou le crée s'il n'existe pas

2 - Cat

2.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)

3.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

3.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
Seul 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

3.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

4 - Tee

4.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

4.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

4.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
}