Remove a nova linha à direita de 'clipboard' para impedir a execução no terminal?

7

Existe alguma maneira de executar o que você copia para o 'clipboard' através de algum tipo de filtro? O ideal é remover a nova linha de algo que você copia, para que ela não seja executada automaticamente no terminal?

Isto é o que parece quando copio o teste em questão, e às vezes esqueço que esta é uma nova linha.

    
por Pureferret 16.10.2013 / 21:28

3 respostas

3

Você pode definir uma função de shell que cole sem a nova linha à direita.

No zsh, o seguinte comando recupera o conteúdo da área de transferência, menos as novas linhas à direita e a exibe para edição (mesmo se houver várias linhas):

print -z 'xsel -b'

No bash, você pode empurrar o conteúdo da área de transferência menos arrastar novas linhas para a pilha do histórico. Depois disso, pressione Up para ativar o comando para edição.

history -s 'xsel -b'
    
por 17.10.2013 / 02:33
3

Sim, use cat para colar em um arquivo, faça o que quiser e, em seguida, execute-o.

Para este caso:

$ cat > tmp
[paste][Ctrl+D]
$ tr -d '\n' <tmp | xclip # this remove all "new line" characters 
                          #  and copy back to clipboard
    
por 16.10.2013 / 22:27
1

Isso faz com que \ev insira a área de transferência sem novas linhas no bash 4.0 e posterior:

pasteline() {
  local input=$(xsel -b)
  input=${input//$'\n'}
  READLINE_LINE=${READLINE_LINE:0:$READLINE_POINT}$input${READLINE_LINE:$READLINE_POINT}
  READLINE_POINT=$((READLINE_POINT+${#input}))
}

bind -x '"\ev": pasteline'

Substitua xsel -b por pbpaste e instale a bash 4 no OS X.

    
por 17.06.2014 / 21:41