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
Running
echo-n$GEDIT_CURRENT_DOCUMENT_URI|tee>(xclip-selectionclipboard)>>~/tmp/fifo
ontheleftterminal
HittingCTRL+SHIFT+V