Utilitário de área de transferência para colar várias linhas uma a uma

5

Eu preciso de uma ferramenta ou utilitário que possa pegar um arquivo de texto e copiar cada linha na área de transferência de forma que eu possa colar o texto linha por linha pressionando continuamente o Ctlr-V.

Por exemplo, se o texto contiver essas linhas

line 1
line 2
line 3

Então eu vou pegar:

Ctlr-v: line 1
Ctlr-v: line 2
Ctlr-v: line 3

Eu preciso dele para colar linhas no terminal ao depurar as sessões de telnet. É muito tedioso copiar e colar as linhas uma por uma.

Existe tal ferramenta, ou pode ser criada usando xclip ou similar?

É para distribuições baseadas no Debian se isso faz alguma diferença.

Nota: Veja o comentário de don_chrissti para uma variação da solução aceita que funcionou para mim.

Adição:

Este é o script que acabei com. Observe o uso de barras invertidas duplas para manter as novas linhas a partir do arquivo de texto.

while IFS= read -r line; do
  printf %s\n "$line" |
  xclip -l 1 -quiet -selection primary
done < telnet

Funciona muito bem para testar conexões SMTP sobre telnet, que é o meu uso.

    
por marlar 25.06.2013 / 23:36

1 resposta

5

com xclip :

while IFS= read -r line; do
  printf %s "$line" |
    xclip -l 1 -quiet -selection clipboard -in
done < file.txt

Substitua %s por %s\n se você precisar incluir a nova linha.

Com -l 1 xclip contém a seleção CLIPBOARD para uma solicitação (por outros aplicativos que fazem Ctrl-V por exemplo) e, em seguida, sai. Você precisa de -quiet para xclip para fazer isso em primeiro plano.

Isso não funcionará se você tiver um aplicativo como xclipboard em execução. Esses aplicativos tentam sempre ser os proprietários da seleção CLIPBOARD , portanto, eles serão roubados continuamente de xclip .

Se você tiver esse aplicativo em execução, poderá suspendê-lo ou eliminá-lo ou usar a seleção PRIMARY ( -selection primary ou omitir -selection como primary é o padrão) e colar usando o botão do meio do mouse. Muitos emuladores de terminal podem colar a seleção PRIMARY em Shift-Insert , outros em cima de Ctrl-Shift-Insert .

Se você quiser saber quem está roubando a seleção CLIPBOARD de xclip , isso pode funcionar:

xwininfo -id "$(xclip -selection clipboard -o -t CLIENT_WINDOW | od -vAn -tu8)" -wm

contanto que o aplicativo ofereça o destino CLIENT_WINDOW (execute xclip -selection clipboard -o -t TARGETS para ver se funciona).

Veja também expect (e dejagnu para uma estrutura de teste baseada em expect ) e GNU screen para automatizar a inserção de texto em aplicativos de terminal.

    
por 26.06.2013 / 00:37

Tags