Como exportar para a área de transferência e colar no bash tty?

3

Como eu colocaria a saída ls dentro da prancheta bash tty e como eu a colaria no prompt de comando? Alternativamente, como eu coloco a saída de um comando no prompt de comando diretamente, então estou livre para editá-lo?

    
por ChiseledAbs 25.07.2016 / 11:04

2 respostas

4

Você pode, talvez, fazer o que quiser usando a linha de leitura de bash com -i , que fornece uma entrada inicial para -e edit. Por exemplo, usando date em vez de ls , pois é mais simples de ver:

$ read -ei "$(date)" && $REPLY
Mon Jul 25 13:42:47 CEST 2016

Agora você tem a string Mon Jul 25 13:42:47 CEST 2016 como mostrado com o cursor no final. Você pode editar isso usando as teclas de cursor habituais e assim por diante. Por exemplo, você pode editar a data 25 a 20 e, em seguida, adicionar echo ao início, dando

echo Mon Jul 20 13:42:47 CEST 2016

Quando você pressiona return, a linha read é colocada na variável REPLY , que você executa. Isso é um pouco frágil, pois a resposta é dividida em espaços e assim por diante. Você pode adicionar citações e um eval:

$ read -ei "$(date)" && eval "$REPLY"

Então, se você editar a linha, alterando 25 como antes, insira um comando que precise de um argumento com espaços, por exemplo:

date +%s -d 'Mon Jul 20 13:42:47 CEST 2016'

você receberá a resposta correta 1469014967 . Como sempre, cuidado com eval.

    
por 25.07.2016 / 13:54
1

How would I put the ls output inside the bash tty clipboard?

Se estiver executando em um ambiente de desktop, prefiro usar a área de transferência do X11:

somecommand | xclip -i

Dessa forma, a saída pode ser colada na linha de comando com os meios do emulador de terminal, usando xclip -o e em todos os outros aplicativos.

Se você estiver executando dentro de um multiplexador de terminal como tmux ou screen , ambos oferecem copiar e colar. Isso é muito útil, se você estiver em um servidor.

Por fim, existem maneiras de manipular o anel de yline readline ou até mesmo sincronizá-lo com a área de transferência do X11 / OSX . A vantagem é que você pode usar Ctrl-Y no prompt para colar. A desvantagem é que é uma solução apenas para a sessão bash-session.

how do I put the output of a command in the command prompt directly so I am free to edit it?

Se você quiser usar a saída de um comando como um argumento , use um subshell:

echo "ls output: $(somecommand)"

Em seguida, antes de pressionar Enter , pressione <Alt-Ctrl-e> . Isso expandirá o subshell dentro do prompt para que você possa editá-lo ao seu gosto.

Se você quiser executar a saída de um comando , redirecione-o para um arquivo, edite-o e execute-o. Interpretar entradas como comandos do shell pode ser muito perigoso (por exemplo, rm -rf /$var quando $var está vazio), então é melhor verificar o arquivo novamente e mantê-lo por perto.

somecommand > exec.sh
$EDITOR exec.sh
bash exec.sh
    
por 25.07.2016 / 11:42