Yo solía
history | less
para obtener las líneas de los comandos anteriores y de los números en el lado izquierdo encontré la línea que quería repetir (por ejemplo, 22) y lo hice
!22
en el símbolo del sistema y funcionó, ejecutando el conjunto de comandos en la línea que hice en ese momento. No puedo entender dónde se usa el signo de exclamación, qué representa en términos de acciones realizadas por bash y dónde usarlo. De la documentación no veo una explicación que sea 'tangible'.
Respuesta aceptada:
!
invoca la expansión del historial, una característica que apareció originalmente en el shell C, en los días antes de que pudieras contar con terminales que tuvieran teclas de flecha. Es especialmente útil si agrega el número de comando actual al aviso (PS1="!$ "
) para que pueda mirar rápidamente su pantalla para obtener números de comandos anteriores.
Ahora que puede usar las teclas de flecha y cosas como Ctrl-R para buscar en el historial de comandos, no veo mucho uso para la función.
Una variante que aún puede resultarle útil es !!
, que vuelve a ejecutar el comando anterior. Por sí solo, no encuentro ! ! Entrar más rápido que solo ↑ Entrar , pero puede ser útil cuando se combina en un comando más grande.
Ejemplo: Un error piloto común en sudo
sistemas basados es olvidar el sudo
prefijo en un comando que requiere privilegios adicionales. Un novato vuelve a escribir todo el comando. El estudiante diligente edita el comando del historial de comandos del shell. El iluminado teclea sudo !!
.
Procesando !
de esta manera está habilitado en Bash por defecto en shells interactivos y puede deshabilitarse con set +o histexpand
o set +H
. Puede deshabilitarlo en Zsh con set -K
.