Usando texto de la salida de comandos anteriores

Usando texto de la salida de comandos anteriores

EDITAR abril de 2015: si tiene la misma pregunta, le recomiendo que consulte tambiénhttp://xiki.org/


Sé que no es así como funcionan las terminales, pero a menudo me encuentro deseando que hubiera una manera fácil de usar texto (copiarlo, modificarlo, etc.) que ya está en el historial de la ventana de mi terminal a partir de algún comando anterior.

Me lo he imaginado así:

Estoy en mi shell bash a punto de ingresar un comando y me doy cuenta de que necesito escribir algo que ya está en la pantalla unas líneas arriba. Puedo alcanzar el mouse y seleccionarlo, pero odio eso. Lo que realmente deseo en este momento es que toda mi terminal se convierta en un búfer de Vim gigante, todo: las indicaciones, los comandos que he escrito y el resultado de esos comandos. Todo. Y luego podría saltar algunas líneas, tal vez editar un poco y extraer algo de texto. Luego, regrese al modo bash shell y pegue lo que haya agregado en la línea de comando actual.

Sé que hay algunas opciones:

  • Naturalmente, canalice el texto que necesito directamente desde la salida de algún comando a un archivo, o directamente al siguiente comando. Pero para eso debe planificar con anticipación o volver a ejecutar el comando desde su historial (suponiendo que la salida no cambie entre invocaciones).

  • Para alcanzar el mouse y seleccionar el texto a copiar. Es aburrido, molesto, desearía no tener que hacer eso (este no es el sitio de intercambio de pila de GUI, ¿verdad? =)

  • Para utilizar la opción "Exportar texto como..." de mi aplicación Terminal (Mac OS X) y guardar el texto del terminal en un archivo. Luego abra el archivo y trabaje con él. Casi, pero ¿por qué pasar por el paso de guardar en un archivo en el disco?

Entonces la pregunta es: ¿Qué haces en esta situación? ¿Existe algún truco, herramienta o función de shell que pueda ser útil en este escenario? ¿Te resignas a usar el mouse o volver a escribir lo que necesites escribir?

Puede ser que el problema sea que no estoy haciendo las cosas "a la manera Unix", pero vamos, estamos en 2010 y no puedo copiar fácilmente un texto a unas pocas líneas de mi cursor.

Respuesta1

En emacs,concha mxmanejar la edición de la salida anterior. Puede copiar y pegar fácilmente la salida de los comandos anteriores, o cualquier parte de su búfer, como un búfer normal. Estoy bastante seguro de que debería haber un equivalente de vim.

Respuesta2

En tmux (un multiplexor de terminal) puede presionar Ctrl+A-[ para cambiar al modo de búfer Vi donde puede navegar por la pantalla, desplazarse por el búfer hacia adelante y hacia atrás, copiar texto, etc. El acceso directo predeterminado es en realidad Ctrl+B- [pero eso obviamente estaba destinado a ser reconfigurado. Además, el modo de búfer predeterminado es Emacs pero puede configurarlo para que sea Vi.

Echa un vistazo a tmux, realmente es un gran multiplexor de terminal moderno. Además de trabajar con buffer, puedes dividir la pantalla en múltiples ventanas, conectarte a la misma sesión desde múltiples terminales, etc. Para mayor comodidad, puedes incluso convertirlo en tu shell de inicio de sesión si le dices cuál es tu shell real.

En OpenBSD, tmux incluso pasó a formar parte del sistema base.

Consulte la página de manual de tmux para obtener más detalles. Vea también capturas de pantalla enhttp://tmux.sourceforge.net/

Respuesta3

Puede usar un script (use -f para asegurarse de que se vacíe cada vez) y puede tener todo el resultado en un archivo.

Utilice un multiplexor de terminal (pantalla, tmux, etc.). Por ejemplo, para la pantalla http://web.mit.edu/gnu/doc/html/screen_11.html#

Comando: copiar Ingrese al modo de copia/desplazamiento hacia atrás. Esto le permite copiar texto de la ventana actual y su historial al búfer de pegado. En este modo está activo un editor de pantalla completa similar a vi, con controles como se describe a continuación.

Otros multiplexores de terminales seguramente tienen capacidades más avanzadas.

Respuesta4

Yo uso urxvt (rxvt-unicode) y hay un paquete llamado urxvt-keyboard-select que puede ser exactamente lo que desea, si puede instalar urxvt. La información del paquete Archlinux (que contiene punteros) está aquí:

https://aur.archlinux.org/packages.php?ID=39950

Fuente original: http://www.github.com/muennich/urxvt-perls

información relacionada