Les caractères de protection

Les caractères de protection servent à utiliser les caractères spéciaux du shell comme n'importe quels caractères.

Les simples quotes

Les simples quotes désactivent tous les caractères spéciaux du shell. Ils doivent être utilisés en nombre pair sur une ligne de commande.

$ echo $PWD
/home/toto

Avec les simples quotes, la fonction du caractère '$' est désactivée :

$ echo '$PWD'
$PWD
$

Afficher tous les fichiers d'un dossier à l'aide de la fonction 'echo' et du caractère spécial '*'

$ echo *
1coucou cOucou Coucou coucou.r ...

Avec les simples quotes, la fonction du caractère '*' est désactivée :

$ echo '*'
*
$

$ echo Bonjour $(logname)
Bonjour toto
$ echo 'Bonjour $(logname)'
Bonjour $(logname)
$

La quote ne se protège pas elle-même.
Tant que les quotes ne sont pas par pair, le shell affiche le prompt secondaire

$ echo 'J'affiche un quote supplémentaire'
>

L'antislash '\'

L'antislash désactive la fonctionnalité du caractère qui le suit.

$ echo La liste des fichiers * du dossier $PWD
La liste des fichiers 1coucou cOucou Coucou coucou.r du dossier /volume1/home/ronan/atuer/toto
$ echo La liste des fichiers \* du dossier \$PWD
La liste des fichiers * du dossier $PWD
$

L'antislash se protège lui-même

$ echo \\
\
$

$ echo L\'antislash protège la quote
L'antislash protège la quote
$

Le premier antislash protège le second, le troisième protège le '$'

$ echo \\\$PWD
\$PWD
$

Les guillemets

Les guillemets protège tous les caractères spéciaux du shell à l'exception du dollar $, des quotes inversés ``, du dollar et des parenthèses $( ), de l'antislash \ et des guillemets ".

$ echo "
> La variable \$HOME est substituée par $HOME
> La commande \$(logname) est exécutée : $(logname)
> Je peux afficher des > et des |
> Et même des guillemets \"."
La variable $HOME est substituée par /home/toto
La commande $(logname) est exécutée : toto
Je peux afficher des > et des |
Et même des guillemets ".
$

En règle générale, il est préférable d'utiliser la commande echo avec des guillemets