1 votes

Qu'est-ce que fait echo?

Récemment, j'ai remarqué que les échos dans lesquels j'inclus beaucoup de "!" donnent des résultats étranges. Par exemple: echo !! me donne :

echo rm -r * 1000
rm -r * 1000

(rm -r * était la dernière commande que j'ai exécutée avant de la taper). Pourquoi cela se produit-il et y a-t-il un moyen de le désactiver ?

3voto

Eugen Rieck Points 19064

Vous avez rencontré l'expansion de shell - le shell analysera votre commande et remplacera des caractères spéciaux par d'autres informations. Essayez echo '!!' (guillemets simples) pour comprendre ce que l'expansion de shell et le quoting peuvent faire.

Vous pouvez en savoir plus sur l'expansion de shell dans la page man pour bash. Notez les sections sur l'expansion de l'historique, qui discute des désignateurs d'événements comme !!, et sur l'expansion, qui traite d'autres formes d'expansion de shell. La section sur le quoting explique le comportement des mécanismes de citation de bash et la différence entre la façon dont les chaînes entre guillemets simples et doubles sont évaluées.

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