¿Cómo puedo agregar un comando al historial de Bash sin ejecutarlo?

32

De vez en cuando, sería útil agregar un comando directamente al historial en Bash sin ejecutarlo realmente. Hasta ahora, lo cerrado que he encontrado es agregar un #frente y presionar regresar. ¿Hay mejores formas?

Grumbel
fuente

Respuestas:

39

history -s mando

Spiff
fuente
Nunca supe de esa característica. No se me ocurre un uso inmediato, pero es bueno saberlo.
Doug Harris
77
¿Sabes si es posible ejecutar un comando similar a este desde un script? Tengo un script ./resize-images.shcuya línea final indica un comando que debe ejecutar para deshacer los cambios, sería realmente útil si en su lugar el script pudiera agregar el comando a mi historial, así que solo presiono up-entersi necesito deshacer
Ben Page
1
@BenPage: Mira ambas respuestas aquí: unix.stackexchange.com/questions/112354/… .
RustyTheBoyRobot
9

history -s mando

Incluso puede vincular una pulsación de tecla para hacer esto por usted. Puede ingresar esto en un aviso Bash:

bind '"\C-q": "\C-a history -s \C-j"'

o agregue esto a su ~/.inputrc:

"\C-q": "\C-a history -s \C-j"

luego puede escribir algo y presionar Ctrl, qy se agregará al historial sin ejecutarse. El espacio antes de "historial" hace que el historycomando en sí no se agregue al historial si su HISTCONTROLvariable contiene ignorespaceo ignoreboth. Se podría elegir otra pulsación de tecla en lugar de "\ Cq".

Pausado hasta nuevo aviso.
fuente
3

Es difícil encontrar algo más corto que un "comando" de un carácter, por lo que realmente necesitamos ir al nivel de pulsación de tecla. Con mi configuración bash y un teclado de EE. UU., Lo que haces ahora requiere:

  1. Ir al principio de la línea CTRLA: +1 instrucción, +2 pulsaciones de teclas
  2. Agregar #(necesidades SHIFT): +1 instrucción, +2 presionar tecla
  3. Anexándolo al historial con ENTER: +1 instrucción, +1 pulsación de tecla

En total 3 instrucciones, 5 pulsaciones de teclas.

El uso ALT#hace lo mismo en 1 instrucción, 2 pulsaciones de teclas.

YMMV dependiendo de la distribución del teclado y la configuración de bash.

Benjamin Bannier
fuente
3
El problema no es la cantidad de pulsaciones de teclas, sino que el "#comando" se almacena en el historial, en lugar del "comando" deseado.
Grumbel
1
Es bueno que "#command" se almacene en el archivo de historial, ya que le permite saber que el comando no se ejecutó realmente. Esto podría ser bueno si luego quisiera revisar qué comandos ingresó para resolver un problema.
Marnix A. van Ammers
2
@Grumbel, @Marnix: De acuerdo, no respondí la pregunta a la carta, pero mostré cómo hacer que lo que hace ahora sea aún más rápido. Personalmente, creo que usarlo #commandes mucho más rápido que history -s command, y también muy fácil de usar si mapeas history-search-backward/-forwardcorrectamente. Pero es cuestión de gustos.
Benjamin Bannier