¿Hay alguna manera de guardar un comando en el historial de bash sin ejecutarlo? p.ej
$ cmd [a long list of arguments]
y ahora, mientras escribo, recuerdo que me gustaría hacer otra cosa primero. ¿Puedo tener algo como
$ cmd [a long list of arguments][some-key-strokes]
y esto en realidad no se ejecuta, pero entra en el historial de bash para que pueda usarlo más tarde.
#
, y luego presiono Enter.Respuestas:
Puede haber una mejor manera, pero puede usar el
:p
modificador de expansión de historial para imprimir la línea de comentarios actual sin ejecutar.!#
es la línea actual, y%
por sí sola no coincidirá con nadafuente
ls -al
1Use la
-s
opción para elhistory
comando:La llamada a
history -s
sí mismo, convenientemente, no se agrega al historial de comandos, por lo que en su historial parece que se ejecutócmd
sin hacerlo realmente.fuente
Por lo general, esto se hace por
Tenga en cuenta que el nombre del historial puede diferir en su sistema. Por lo tanto, puede usar el
HISTFILE
entorno varque hace:
fuente
Normalmente solo agrego un # al comienzo de la línea para transformar la línea en un comentario:
Prefiero esta forma porque puedes hacerlo con solo 3 [4 si necesitas SHIFT para insertar #] pulsaciones de teclas
^ a va al comienzo de la línea actual
# agrega el comentario
ENTER ejecuta el comentario
fuente
... o usa la combinación de teclas:
ESC #
Ver también: Bash - guardar comando sin ejecutarlo
fuente
Puede intentar agregar un espacio y | (tubería) al final de la línea, presionando enter, y luego Ctrl-C'ing.
( Space, |, Enter, Ctrl+ C)
El comando estará en tu historial con un | al final (simplemente puede eliminar con retroceso) en lugar de un # al principio (potencialmente más tedioso de eliminar).
DESCARGO DE RESPONSABILIDAD: ¡No sé si esto siempre funciona! ¡Úselo bajo su propio riesgo!
fuente
Puedes intentar usar esta línea:
history -s -p $COMMAND
De
help
:Esto significa que puede expandir cosas como
!!
y almacenar el resultado al final de la historia.fuente
history -s
fue dada en una respuesta hace dos años. ¿-p
Mejora eso? ¿Qué-p
hacer? (En la medida en que tiene sentido hacerlo, debe modificar su respuesta para que sea mejor, y no responde a mi comentario con otro comentario.)Otra opción es ir al comienzo de la línea y hacer lo que iba a hacer seguido de &&, como
Entonces, si lo que desea hacer tiene éxito, su comando se ejecutará inmediatamente después, y si falla, su comando no se ejecutará, pero estará en la historia. También podrías hacer
Dado que la prueba sin args fallará, pero esto es un puñado de pulsaciones de teclas adicionales en comparación con el
#
método.fuente
Creo que las "pulsaciones de teclas" que desea son Ctrl-U y Ctr-Y, que almacenan una línea en el anillo de cierre, y luego la retiran más tarde. No entra en la historia, pero creo que no debería, ya que no lo hiciste.
Comandos de matanza de Readline
Matar y tirar
Lo aprendí hace años, luego lo olvidé y también busqué esos golpes clave.
También se trata aquí: /unix/140741/how-to-save-a-command-you-entered-without-executing-it
fuente