Pergunta

Eu quero usar parte da saída de um comando executado a partir da linha de comando em outro xterm, ou como parte de um comando diferente. Por exemplo:

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

e eu quero fazer isso:

>ls ~/<some very long path>/

Eu sei duas maneiras de fazer isso:
1. ~/<some very long path>/ cópia com o mouse.
2. Uso uma combinação de head / tail / awk / sed / perl / cut / etc ... para extrair apenas o que eu preciso da saída e, em seguida, usar que dentro backticks.

Existe alguma maneira de copiar o texto sem usar o mouse? O exemplo que vem à mente é modo visual dentro VIM, mas eu não sei como fazer isso dentro do xterm.

Foi útil?

Solução

Você pode usar a cópia de tela GNU e colar comandos.

tutorial rápido:

  1. Abrir tela: screen (ou screen myprog my args here)
  2. Execute o programa, a saída produzir você deseja copiar
  3. Digite o modo de cópia: Controle + a + [
  4. Mova o cursor para o ponto de início
  5. Hit Enter
  6. Mova o cursor para o ponto final
  7. Hit Enter
  8. Colar: Controle + a + ]

Tela é muito mais poderoso do que isso (eu usá-lo para a guia vários terminais virtuais sem a necessidade de um emulador de terminal especial, e também para que eu não perder minhas sessões quando X trava ou algo assim). Para sair da tela, basta terminar a sessão shell, ou digite Ctrl + a , Ctrl + \ .

Outras dicas

XSEL é útil em situações semelhantes. É uma ferramenta que manipula a seleção X. Por exemplo, este irá armazenar a saída do seu comando para a área de transferência:

grep error error.log | xsel -bi

Você também pode usar tmux que tem semelhantes para screen. Uma vez que você está em tmux e você tem o resultado que você deseja copiar, você pode fazer o seguinte para copiar e depois cole-a:

  1. Digite o modo de cópia com Ctrl + B , [
  2. Mova o cursor com as teclas de seta e, em seguida, iniciar a seleção com Ctrl + Espaço
  3. Mova o cursor para selecionar o texto / região para copiar e copie com Alt + W (este será imediatamente sair-lhe do modo de cópia)
  4. Você pode agora colar (dentro tmux apenas) usando Ctrl + B , ]

Estas instructiuons assumir Emacs teclas estão habilitados. Para o vi ligações de ver este comparação ou apenas siga este guia passo-a-passo.

O OP disse que ele não queria fazer isso, mas aqui é a maneira um unix utils para fazê-lo para a posteridade. Se você aprender esses utilitários pequenos unix que pode ser muito poderosa.

ls $ (dirname $ (error.log erro grep | cabeça -1 | cut -d "" -f 5-))

Nota: sintaxe da memória

Você pode enviar a saída diretamente para o xterm preocupados usando o dispositivo xterm não. Aqui é o comando.

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

(ou watever é o nome do dispositivo, você pode obtê-lo usando o comando 'w' para xterm aberto)

Experimente e espero que isso pode resolver o seu problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top