2008-11-23 14 views
25

Quiero usar parte de la salida de un comando ejecutado desde la línea de comando en otro xterm, o como parte de un comando diferente. Por ejemplo:¿Cómo copio texto de mi xterm sin un mouse?

> grep error error.log 
error: can't find file ~/<some very long path>/thisfile 

y yo quiero hacer esto:

>ls ~/<some very long path>/ 

Conozco dos maneras de hacer esto: 1.
copia ~/<some very long path>/ con el ratón.
2. El uso de una combinación de head/tail/awk/sed/perl/cut/etc ... para extraer sólo lo que necesito de la salida y luego usar que los acentos abiertos en el interior.

¿Hay alguna forma de copiar texto sin usar el mouse? El ejemplo que me viene a la mente es el modo visual dentro de VIM, pero no sé cómo hacerlo dentro de xterm.

+0

Preguntas relacionadas/idénticas en otros lugares: http://superuser.com/q/555886/128768; http://stackoverflow.com/q/1536757/1172302; http://superuser.com/q/228236/128768 –

Respuesta

37

Puede usar los comandos copiar y pegar de la pantalla GNU.

rápido tutorial:

  1. pantalla abierta: screen (o screen myprog my args here)
  2. ejecutar el programa, la salida de la producción que desea copiar
  3. Entre en el modo de copia:^A [
  4. Mover el cursor a el punto de inicio
  5. Presione enter
  6. Mueva el cursor al punto final
  7. pulsa enter
  8. Pegar:^A]

pantalla es mucho más potente que eso (lo uso para pestaña varios terminales virtuales sin necesidad de un emulador de terminal especial, y también para que yo no' pierdo mis sesiones cuando X se cuelga o algo así). Para salir de la pantalla, simplemente finalice su sesión de shell o escriba^A ^.

+2

¿Hay alguna manera de pegar en otros lugares fuera de la terminal? –

2

El OP dijo que no quería hacer esto, pero aquí hay una forma de utilidades de Unix para hacerlo para la posteridad. Si aprendes estas pequeñas utilidades de Unix, pueden ser bastante poderosas.

ls $ ($ nombredir (error.log error grep | head -1 | cut -d "" -f 5-))

nota: la sintaxis de la memoria

11

Encuentro XSel es útil en situaciones similares. Es una herramienta que manipula la selección X. Por ejemplo, esto va a almacenar la salida de su comando en el portapapeles:

grep error error.log | xsel -bi 
1

Usted puede enviar la salida directamente a la cuestión que usa el dispositivo de xterm xterm no. Aquí está el comando.

xyz$ls /home/ankit/documents/etc/x/y/z > /dev/pts/0 

(o watever es el nombre del dispositivo, se puede obtener con el comando 'w' para xterm abierta)

Inténtelo & esperanza esto puede resolver su problema.

+3

Esto no hace que la salida esté disponible para su reutilización. –

5

También puede usar tmux que tiene similar capabilities a screen. Una vez que estés en tmux y tiene la salida que desea copiar, puede hacer lo siguiente para copiar y pegar:

  1. Entre en el modo de copia con Ctrl + B, [
  2. mover el cursor con las teclas de flecha y luego comenzar la selección con Ctrl + Espacio
  3. mover el cursor para seleccionar el texto/región para copiar y copiar con Alt + W (esto será inmediatamente salir del modo de copia)
  4. Ahora puede pegar (dentro de tmux solamente) utilizando Ctrl + B, ]

Estos instructiuons asumen emacs asociaciones de teclas están activados. Para los enlaces vi, consulte este comparison o simplemente siga la guía paso a paso this.

Cuestiones relacionadas