Pregunta

Quiero usar una parte de la salida de un comando a ejecutar desde la línea de comandos en otro xterm, o como parte de un comando diferente.Por ejemplo:

> 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 necesita, desde la salida y, a continuación, utilizar que dentro de comillas simples inclinadas.

Hay alguna forma de copiar el texto sin utilizar el ratón?El ejemplo que viene a la mente es el modo visual dentro de VIM, pero no sé cómo hacer que el interior de la xterm.

¿Fue útil?

Solución

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

Tutorial rápido:

  1. Pantalla abierta: screen (o screen myprog my args here)
  2. Ejecute su programa, produciendo la salida que desea copiar
  3. Ingrese al modo de copia: Control+a+[
  4. Mueva el cursor al punto de inicio
  5. Hit Enter
  6. Mueva el cursor al punto final
  7. Hit Enter
  8. Pegar: Control+a+font>

La pantalla es mucho más poderosa que eso (lo uso para tabular varios terminales virtuales sin la necesidad de un emulador de terminal especial, y también para no perder mis sesiones cuando X falla o algo así). Para salir de la pantalla, simplemente finalice su sesión de shell o escriba Ctrl + a , Ctrl + \ .

Otros consejos

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

grep error error.log | xsel -bi

Usted también podría usar tmux que ha capacidades similares a screen.Una vez que estás en tmux y usted tiene la salida que se desea copiar, puede hacer lo siguiente para copiar y pegar:

  1. Entrar en modo de copia con Ctrl + B, [
  2. Mueva el cursor con las teclas de flecha y, a continuación, iniciar la selección con Ctrl + Espacio
  3. Mueva el cursor para seleccionar el texto/región para copiar y, a continuación, copia con Alt + W (esto va a salir inmediatamente de usted de modo de copia)
  4. Ahora puede pegar (dentro de tmux solamente) utilizando Ctrl + B, ]

Estos instructiuons asumir emacs la asignación de teclas activado.Para el vi enlaces de ver esto comparación o simplemente seguir este paso a paso guía.

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

  

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

nota: sintaxis de la memoria

Puede enviar la salida directamente al xterm en cuestión utilizando el dispositivo xterm no. Aquí está el comando.

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

(o sea cual sea el nombre del dispositivo, puede obtenerlo usando el comando 'w' para xterm abierto)

Pruébalo & amp; Espero que esto pueda resolver su problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top