Différences entre guillemets (" "), apostrophes (' ') et accent grave (` `) en bash

Rédigé par Alain Olivetti - -
Récemment j'ai découvert que les guillemets (" "), apostrophes (' ') et accent grave (` `) ne voulais pas dire la même chose dans un terminal. Voici un petit aide mémoire sur les différences entre eux.
  • Guillemets ou " " : ils empêchent que les caractères spéciaux entre les guillemets soient interprété (sauf $ et ` : accent grave) . Par exemple, un espace ne sera pas considéré comme tel: "Bonne Année" est vu comme une seule chaîne de caractères.
  • Apostrophes ou ' ' : ils fonctionnent de la même manière que les guillemets mais cette fois, $ et ` (accent grave) sont interprétés comme des caractères normaux.
  • Accents graves ou ` ` : ils délimitent une commande à exécuter. Les caractères $ et ' (apostrophe) sont interprétés comme des caractères spéciaux.
Deux apostrophes entre deux guillemets sont considérés comme des caractères normaux et réciproquement. Pour être plus clair, si vous tapez dans un terminal : echo " ' ' " vous verrez affichez ' ' et si vous tapez echo ' " " ' vous verrez " ". Voici quelques exemples que je vous invite à tester pour bien comprendre les différences : echo ls; echo `ls`; echo "`ls`"; echo '`ls`' Lorsque vous utilisez des guillemets, apostrophes et/ou accents graves imbriqués commencé par regarder la paire qui englobe tous les autres et imaginé leur rôle respectif: caractère spéciaux ou non.
Voici un exemple: echo " ' `ls` ' " va afficher la liste des fichiers du répertoire en l'englobant le résultat d'une paire d'apostrophes car le comportement spécial de la paire d'apostrophes est annulée par la paire de guillemets. Sans les guillemets, le résultat aurait été `ls`.