GNU/Linux >> Tutoriels Linux >  >> Linux

Qu'est-ce que -bash:!:événement introuvable

Solution 1 :

! est un caractère spécial à bash, il est utilisé pour faire référence aux commandes précédentes ; par exemple,

!rm

rappellera et exécutera la dernière commande commençant par la chaîne "rm", et

!rm:p

rappellera mais n'exécutera pas la dernière commande commençant par la chaîne "rm". bash interprète le point d'exclamation dans echo "reboot your instance!" comme "remplacez ici la dernière commande commençant par le(s) caractère(s) suivant immédiatement le point d'exclamation ", et vous grogne qu'il ne peut pas trouver un événement (commande) dans votre historique qui a commencé par un simple guillemet double.

Essayez

echo reboot your instance\!

pour protéger (échapper) le point d'exclamation de bash.

Solution 2 :

Vous pouvez désactiver la substitution d'historique en utilisant set +H .

Solution 3 :

Pour résoudre votre problème d'origine, essayez d'utiliser des guillemets simples plutôt que des guillemets doubles. Avec ce dernier, bash tentera de développer certains caractères avant de transmettre le résultat à la commande (echo dans ce cas). Avec des guillemets simples, bash passe la chaîne entière, inchangée.

! est utilisé dans les commandes pour faire référence à l'historique de la ligne de commande. Voir :http://tldp.org/LDP/abs/html/abs-guide.html#HISTCOMMANDS pour un ensemble complet. Avec l'exemple ci-dessus, bash essaie d'étendre !" en tant que référence à un événement avant que echo ne soit consulté, d'où l'erreur.

Notez que dans les scripts, tous des commandes d'historique sont désactivées, car elles n'ont de sens que dans un shell interactif.

Le seul que j'utilise régulièrement, c'est !$ . Il se développe jusqu'au dernier argument de la commande précédente. C'est un raccourci utile par endroits.

Solution 4 :

Mettez juste un espace entre ! et " que ça marchera.

Solution 5 :

Oui, ! est un caractère spécial à bash, il est utilisé pour faire référence aux commandes précédentes.

Peu de façons de gérer la situation

Ce qui suit affichera la chaîne telle quelle

echo 'Reboot your instance!'

Ce qui suit exécutera la commande et concaténera la chaîne

echo 'escaping #'" adding `which python` to the string"
echo '#!'`which python`

Linux
  1. Commande introuvable dans Bash corrigé

  2. ifrename :commande introuvable

  3. id :commande introuvable

  4. w :commande introuvable

  5. df :commande introuvable

[Corrigé] bash :sudo :commande introuvable

Dépannage de l'erreur "Bash :Commande introuvable" sous Linux

aws-shell :commande introuvable

ln :commande introuvable

bash sh - commande introuvable

bash - commande make introuvable