Diferença entre o clique triplo para selecionar texto e o mouse seleciona e copia uma palavra no terminal

2

Eu notei que quando eu clico com triplo (com o mouse) para selecionar texto (ou um comando) de um site, e colo no meu terminal usando Ctrl + Alt + v , o comando é executado imediatamente (isto é, insere automaticamente a tecla Enter ), mas se eu selecione (com o mouse) e copie o mesmo comando e use Ctrl + Alt + v para colá-lo no terminal, ele não executa automaticamente o código, mas apenas o cola e aguarda entrada de mim antes que o código seja executado.

Qual mecanismo faz isso? Porque eu preferiria primeiro olhar para o comando a ser executado antes de executá-lo, mas notei que isso será feito para mim sempre que eu usar clique triplo para selecionar uma palavra.

    
por George Udosen 13.08.2017 / 20:00

2 respostas

2

Clique triplo seleciona toda a linha, que inclui o feed de linha no final 1 . Um caractere de alimentação de linha (Unicode U + 0A) é o que insere Enter , então o shell interpreta isto para significar que deve executar o comando 2 .

Quando você clica e arrasta para selecionar a linha, normalmente não seleciona o feed de linha no final, a menos que você arraste o mouse para a próxima linha ou a menos que selecione várias linhas (o que obviamente inclui vários feeds de linha entre eles).

A melhor solução que eu sei é copiar e colar o comando em um editor de texto (por exemplo, o Gedit), revisá-lo e copiá-lo e colá-lo no terminal.

Aqui estão alguns comandos inofensivos que você pode tentar copiar e colar de diferentes maneiras:

echo 1
echo 2
echo 3
true true
echo hello world
echo "$(whoami)"

Notas de rodapé

  1. Pelo que entendi, uma linha é definida como uma string terminada por um feed de linha.
  2. Na minha experiência, a maioria dos shells não pode dizer a diferença entre uma string sendo digitada e uma string sendo colada.
por wjandrea 14.08.2017 / 04:45
3

Ambos foram selecionados arrastando e não triplicando o clique. A diferença é que, no segundo, eu arrastei para a próxima linha. Você pode ver a nova linha sendo representada como um espaço extra que realmente não existe no texto. Com o triplo clique, você sempre verá o último.

Você pode querer fazer uma das seguintes opções:

  • edite a linha de comando atual em um editor ( Ctrl X Ctrl E é o atalho padrão do bash), depois cole no editor.
  • alterna para um shell como zsh, que não executa um comando ao colar, mesmo que tenha novas linhas. Este é um texto colado, ainda não executado:

por muru 14.08.2017 / 05:09