230 votes

En bash, comment puis-je échapper à un point d'exclamation ?

Je veux faire quelque chose comme bzr commit -m "It works!" . Je peux en quelque sorte échapper au point d'exclamation en faisant bzr commit -m "It works\!" . Cependant, alors mon message commit inclut le backslash. Comment puis-je échapper au point d'exclamation, tout en ignorant la barre oblique inverse ?

2voto

jwd Points 3222

J'ai trouvé un autre moyen de le faire, récemment.

Il s'agit d'un moyen général d'obtenir que Bash fasse l'échappement pour vous, ce qui est pratique pour les cas arbitraires.

De cet article :

Entrez une ligne de Bash commençant par un commentaire #, puis exécutez !:q sur la ligne suivante pour voir > ce que cela donnerait avec un échappement Bash approprié.

bash-3.2$ # This string 'has single' "and double" quotes and a $
bash-3.2$ !:q
'# This string '\''has single'\'' "and double" quotes and a $'
bash: # This string 'has single' "and double" quotes and a $: command not found

Vous pouvez également ajouter le p modificateur (donc : !:q:p pour éviter l'erreur "commande non trouvée")

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X