GNU/Linux >> Tutoriales Linux >  >> Linux

Qué es -bash:!:evento no encontrado

Solución 1:

! es un carácter especial para bash, se usa para referirse a comandos anteriores; por ejemplo,

!rm

recuperará y ejecutará el último comando que comenzó con la cadena "rm", y

!rm:p

recordará pero no ejecutará el último comando que comenzó con la cadena "rm". bash está interpretando el signo de exclamación en echo "reboot your instance!" como "sustituya aquí el último comando que comenzó con los caracteres que siguen inmediatamente al signo de exclamación ", y se queja de que no puede encontrar un evento (comando) en su historial que comience con una sola comilla doble.

Prueba

echo reboot your instance\!

para proteger (escapar) el signo de exclamación de bash.

Solución 2:

Puedes desactivar la sustitución del historial usando set +H .

Solución 3:

Para resolver su problema original, intente usar comillas simples, en lugar de comillas dobles. Con este último, bash intentará expandir ciertos caracteres antes de pasar el resultado al comando (echo en este caso). Con comillas simples, bash pasa la cadena completa, sin cambios.

! se utiliza en los comandos para hacer referencia al historial de la línea de comandos. Consulte:http://tldp.org/LDP/abs/html/abs-guide.html#HISTCOMMANDS para obtener un conjunto completo. Con el ejemplo anterior, bash intenta expandir !" como referencia a un evento antes de que echo eche un vistazo, de ahí el error.

Tenga en cuenta que en los scripts, todos de los comandos de historial están deshabilitados, ya que solo tienen sentido en un shell interactivo.

El único que uso regularmente es !$ . Se expande hasta el último argumento del comando anterior. Es una abreviatura útil en algunos lugares.

Solución 4:

Solo pon un espacio entre ! y " de lo que funcionará.

Solución 5:

Sí, ! es un carácter especial para bash, se usa para referirse a comandos anteriores.

Algunas de las formas en que puedes manejar la situación

Lo siguiente generará la cadena tal como es

echo 'Reboot your instance!'

Lo siguiente ejecutará el comando y concatenará la cadena

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

Linux
  1. administrador de suscripciones:comando no encontrado

  2. dnf:comando no encontrado

  3. rm:comando no encontrado

  4. mv:comando no encontrado

  5. ln:comando no encontrado

Solución de problemas del error "Bash:Comando no encontrado" en Linux

Comando no encontrado en Bash arreglado

nc:comando no encontrado

aws-shell:comando no encontrado

bash sh - comando no encontrado

bash - comando make no encontrado