Grimoire-
Command
.es

GNU+Linux command memo

Memo_5 : chaînes de caractères et sous-invocation de shells

D’après l’édition 11 des travaux d’Alain Leaper, 2018-04-10
Licence GPL

1. Utilisation des guillemets doubles " ", simples ' ' et de la barre oblique inversée \

Non interprétation des caractères spéciaux.

1.1. Exemple avec les espaces

Exemple non recommandé d’utilisation des espaces dans nom de fichier (ou de répertoire).

$ cat > "mon beau fichier"
salut la compagnie (1)
$ ls
mon beau fichier (2)
$ mv mon beau fichier autre (3)
la cible `autre' n'est pas un répertoire
1 Entrée puis Ctrl+D pour sortir de cat
2 Donc le fichier existe
3 Chaque mot est considéré comme un nom de fichier

1.2. Non interprétation des caractères spéciaux

1.2.1. avec \

Les espaces sont précédés d’un caractère d’échappement.

$ cat mon\ beau\ fichier
salut la compagnie

1.2.2. avec ' '

$ cat 'mon beau fichier'
salut la compagnie

1.2.3. avec " "

$ cat "mon beau fichier"
salut la compagnie

Idem lors de la création.

2. Différence entre guillemets doubles " " et simples ' '

Exemple avec la commande echo :

$ nom=DUPONT (1)
$ echo $nom
DUPONT
$ echo 'bonjour monsieur $nom'
bonjour monsieur $nom
$ echo  "bonjour monsieur $nom"
bonjour monsieur DUPONT
1 Déclaration d’une variable, nommée nom et contenant la chaîne de caractère "DUPONT"

À l’intérieur des guillemets doubles le caractère spécial dollar $ est interprété et remplacé par la valeur de la variable dont le nom suit le $.

C’est également le cas du caractère !.

3. Utilisation des guillemets simples inversés ``

L’expression entre guillemets simples inversés (ou back ticks en anglais), est interprétée par le shell comme une expression a exécuter dans un autre shell et remplacée par le résultat de cette sous exécution.

$ abcd=`pwd`
$ echo $abcd
/home/[…]/

$() a le même effet:

$ efgh=$(pwd)
$ echo $efgh
/home/[…]/

Évaluation d’une expression : $((expression))

$ echo $((25/2))
12
$ var=25/2
$ echo $var
25/2
$ echo $(var)
bash: var : commande introuvable
$ echo $((var))
12
$ maVariable=22
$ valeurVerif=$maVariable (1)
$ echo $valeurVerif
22
1 On extrait la valeur contenue dans maVariable

4. Utilisation des parenthèses simples () pour créer un sous-shell

Cela permet de faire exécuter des commandes, en particulier dans un répertoire autre que le répertoire courant, tout en restant dans ce dernier. Cette technique est plutôt utilisée dans un script qu’en ligne de commande…

$ pwd
/home/alain
$ mkdir newDir
$ (cd $newDir ; cat > newFile) (1)
abc (2)
$ pwd
/home/alain (3)
$ ls ./newDir
newFile
1 Le sous-shell se déplace dans $newDir pour créer un fichier
2 Entrer quelques caractères, puis Entrée puis Ctrl+D pour sortir
3 On est revenu dans le répertoire d’origine

5. Niveau d’imbrication de shells

Le niveau d’imbrication des shells, est donné par la variable SHLVL.

$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2

6. Enchaînement de commandes

$ sh -c echo "A" ; echo "B" ; echo "C"
ABC