Con frecuencia me encuentro en este escenario. Estoy a punto de escribir un comando y necesito verificar otra cosa antes de completarlo.
¿Hay alguna manera de abrir una subshell de algún tipo con mi entrada actual hasta ahora recordada, y luego cuando salgo de esta subshell vuelvo a donde estaba?
$ mylongcommand -n -e <SOME KEY COMBINATION WHICH OPENS A SUBSHELL>
$ date
...
$ exit
$ mylongcommand -n -e <BACK TO WHERE I WAS>
Estoy usando zsh
command-line
zsh
Panayiotis
fuente
fuente
screen
otmux
para obtener múltiples terminales virtuales en la consola.Respuestas:
Existe la combinación de teclas EscQque guarda el búfer de comandos y permite ingresar un nuevo comando. Después de ejecutar el comando, el búfer contiene lo que escribió anteriormente. Si tiene que ejecutar otro comando antes de terminar esto, puede EscQvolver a escribir .
(No intenté abrir una subshell después de presionar EscQtodavía).
Consulte http://zsh.sourceforge.net/Intro/intro_10.html y busque "esc-q"
fuente
Normalmente uso Ctrl+ Uque borra la línea actual y la guarda en un búfer. A partir de ahí hago lo que sea que necesitaba antes del
mylongcommand
. Luego, cuando estoy listo, uso Ctrl+ Ypara pegarmylongcommand
en mi indicador.Recuerda un comando medio escrito mientras reviso algo
fuente
Mi solución a esto es decididamente de baja tecnología y torpe, pero se basa en secuencias de teclas con las que probablemente ya estés familiarizado: Hit Ctrl+ A, luego #, entonces ENTER.
Esto tiene el efecto de insertar un
#
al comienzo de la línea, convirtiéndolo en un comentario, luego ejecutándolo, empujándolo así en el historial de comandos. Luego puede ingresar su comando auxiliar, luego desplazarse hacia arriba a través del historial de comandos hasta el comando comentado, eliminar#
y completar el comando según sea necesario.fuente
Escribo Ctrl+ Zpara "suspender" el comando que estoy escribiendo y escribo otro comando. Después de ejecutar ese comando (o abortarlo con Ctrl+ C), el comando suspendido regresa para edición (incluso recordando la posición del cursor). Como conveniencia adicional, si la línea de comando está vacía cuando escribo Ctrl+ Z, la tecla invoca el
bg
incorporado en su lugar (entonces un doble Ctrl+Z envía un comando en ejecución directamente al fondo).(Publicado anteriormente en Recordar un comando medio tipeado mientras reviso algo que principalmente tiene soluciones para bash, donde no se puede hacer nada tan conveniente. Esta es una versión un poco más elegante del enlace incorporado de
M-q
topush-line
.)Esto no ejecuta un subshell: el comando que escribe después de "suspender" el anterior se ejecuta en el mismo shell. Esto le permite hacer cosas como cambiar el directorio actual si se da cuenta después de escribir un comando que pretendía ejecutarlo en un directorio diferente. Si desea ejecutar una nueva instancia de shell, puede ejecutar
zsh
desde un enlace de teclas, pero no creo que sea particularmente útil.fuente