Copie a string para a área de transferência e exiba na janela de saída simultaneamente

1

Estou trabalhando no Ubuntu 14.04 e usando o Gedit.

Agora eu tenho o código abaixo (rodando a partir do menu "External Tools" no Gedit) para obter o caminho do documento atualmente aberto do Gedit para a área de transferência.

echo -n $GEDIT_CURRENT_DOCUMENT_URI | xclip -sel clip;

Agora, também quero exibir o resultado de echo -n $GEDIT_CURRENT_DOCUMENT_URI na janela de saída (com a mesma instrução "echo"), junto com a cópia para a área de transferência.

Como posso conseguir isso?

    
por Vicky Dev 19.10.2015 / 17:54

1 resposta

0

Para copiar a saída para a área de transferência, também enviando para o terminal atual, você pode simplesmente usar tee , que gerará seu stdin para qualquer arquivo passado a ele como um argumento e para stdout ; você pode usar uma substituição de processo executando xclip para "falsificar" um arquivo regular e enviar para ele em vez de para um arquivo normal:

echo -n $GEDIT_CURRENT_DOCUMENT_URI | tee >(xclip -selection clipboard)

Outra opção é a saída para um dos pseudo-terminais livres "padrão" (tty1 para tty6), que possuem um arquivo de dispositivo correspondente em "/ dev" ("/ dev / tty1" para "/ dev / tty6" ):

echo -n $GEDIT_CURRENT_DOCUMENT_URI | tee >(xclip -selection clipboard) >/dev/tty1

Ainda outra opção é a saída para outro pseudo-terminal "escuta" usando um pipe nomeado; isso requer uma configuração para definir o terminal de "escuta":

Primeiro, abra o terminal "listening" e execute este script (para o exemplo, assumirei que o script está sendo executado em ~/tmp ):

#!/bin/bash
mkfifo fifo # creates a named pipe named "fifo" in the current working directory
trap 'rm fifo; exit 0' 1 2 3 13 15 # traps SIGHUP, SIGINT, SIGQUIT, SIGPIPE and SIGTERM; removes "fifo" and exits upon the reception of each of them
while [ 1 ]; do
    cat fifo # outputs the content of "fifo"
done

Isso criará um canal nomeado chamado "fifo" no diretório de trabalho atual e emitirá continuamente seu conteúdo até que a execução do script seja interrompida;

Em seguida, usando as Ferramentas Externas do Gedit, execute essa versão modificada do segundo comando, que, em vez de redirecionar a saída para "/ dev / tty1", redireciona para o canal nomeado:

echo -n $GEDIT_CURRENT_DOCUMENT_URI | tee >(xclip -selection clipboard) >>~/tmp/fifo

Exemplo de saída usando dois gnome-terminal instâncias:

Running the script on the right terminal

Runningecho-n$GEDIT_CURRENT_DOCUMENT_URI|tee>(xclip-selectionclipboard)>>~/tmp/fifoontheleftterminal

HittingCTRL+SHIFT+V

Mais informações sobre pipes nomeados

    
por kos 19.10.2015 / 18:07