Como faço para copiar texto do meu xterm sem um rato?
-
10-07-2019 - |
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.
Solução
Você pode usar a cópia de tela GNU e colar comandos.
tutorial rápido:
- Abrir tela:
screen
(ouscreen myprog my args here
) - Execute o programa, a saída produzir você deseja copiar
- Digite o modo de cópia: Controle + a + [
- Mova o cursor para o ponto de início
- Hit Enter
- Mova o cursor para o ponto final
- Hit Enter
- 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:
- Digite o modo de cópia com Ctrl + B , [
- Mova o cursor com as teclas de seta e, em seguida, iniciar a seleção com Ctrl + Espaço
- 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)
- 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.