command-line – Entendiendo el signo de exclamación (!) En bash

Pregunta:

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 que se repita (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 averiguar 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:

! invoca la expansión del historial, una función que apareció originalmente en el shell C , en los días anteriores a que se pudiera contar con que los terminales tuvieran teclas de flecha. Es especialmente útil si agrega el número de comando actual al indicador ( 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 ! ! Ingrese más rápido que solo Enter , pero puede ser útil cuando se combina en un comando más grande.

Ejemplo: un error piloto común en los sistemas basados ​​en sudo es olvidar el prefijo sudo 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 escribe sudo !! .

Procesando ! de esta manera está habilitado en Bash por defecto en shells interactivos y se puede deshabilitar con set +o histexpand o set +H Puede deshabilitarlo en Zsh con set -K .

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım