>Parce qu'il existe en shell des mécanismes de substitution, il existe nécessairement des mécanismes permettant d'échapper à ces substitutions : les caractères d'échappement. En effet, comment faites-vous pour afficher `*.?
' grâce à la commande `echo
', sans utiliser de caractères d'échappement ? C'est impossible, car `echo *.?
' liste l'ensemble des fichiers du répertoire courant dont le nom se termine par un point suivi d'un caractère quelconque... `*
' et `?
' sont en effet deux caractères jokers. Les caractères d'échappement sont au nombre de trois :
>
>Le caractère `\
' protège un et un seul caractère : celui qui le suit immédiatement. Ainsi, `echo \*.\?
' affiche `*.?
', le caractère `\
' empêchant le shell d'interpréter les caractères jokers.
>
>Les délimiteurs `''
' protègent tous les caractères qu'ils encadrent, empêchant le shell d'y effectuer une quelconque substitution. `echo '*.?'
' affiche donc également `*.?
'.
>
>Les délimiteurs `""
' protègent tous les caractères qu'ils encadrent, sauf `\
', `$
' et ``
'. Ainsi, `echo "*.?"
' affiche `*.?
', mais `echo "$(who | wc -l)"
' affiche le nombre d'utilisateurs connectés à votre système.
>
>