É o caractere de retorno no texto que você está copiando que está acionando a execução automática.
Vamos dar um exemplo diferente, copie essas linhas de uma só vez e cole-as no seu terminal:
echo "Hello";
echo "World";
Se você olhar no seu terminal, não verá o seguinte:
$ echo "Hello";
echo "World";
Você verá isso (também pode haver uma linha dizendo World
):
$ echo "Hello";
Hello
$ echo "World";
Em vez de esperar que toda a entrada seja colada, a primeira linha é executada (e pelo mesmo motivo, a segunda linha pode ou não fazê-lo também). Isso ocorre porque há um RETURN
caractere entre as duas linhas.
Quando você pressiona a ENTER
tecla do teclado, tudo o que você está fazendo é enviar o caractere com o valor ASCII de 13
. Esse personagem é detectado imediatamente pelo seu terminal e sabe que possui instruções especiais para executar o que você digitou até o momento.
Quando armazenado no computador ou impresso na tela, o RETURN
caractere é igual a qualquer outra letra do alfabeto, número ou símbolo. Esse caractere pode ser excluído com backspace ou copiado para a área de transferência como qualquer outro caractere comum.
A única diferença é que, quando o navegador vê o caractere, ele sabe que, em vez de imprimir um caractere visível, deve tratá-lo de maneira diferente e possui instruções especiais para mover o próximo conjunto de texto para a próxima linha. O RETURN
caractere e o SPACE
caractere (ascii 32
), juntamente com alguns outros caracteres raramente usados, são conhecidos como "caracteres não imprimíveis" por esse motivo.
Às vezes, quando você copia texto de um site, é difícil copiar apenas o texto e não o retorno no final (e geralmente é dificultado pelo estilo na página).
Hora da experiência!
Abaixo, você encontrará dois comandos que ilustram o problema e que você pode "praticar". Inicie o cursor logo antes echo
e arraste até que o realce esteja logo antes da seta:
echo "Wait for my signal...";<- End cursor here right after the semicolon
E agora tente o segundo comando. Inicie o cursor logo antes echo
e arraste para baixo até que o cursor esteja na segunda linha, mas está bem na frente da <-
seta. Copie-o e cole-o no seu terminal:
echo 'Go go go!';
<- End cursor here right before the arrow
Dependendo do seu navegador, talvez nem seja visível que o texto que você selecionou passou por duas linhas. Mas quando você colá-lo no terminal, verá que ele executa a linha, porque encontrou um RETURN
caractere no texto copiado.
{
(com espaço) antes de colar e termine com}
. Não tem efeito no funcionamento dos comandos colados, mas impede que o shell o execute até você fechar o bloco. Descrito aqui [ gnu.org/software/bash/manual/html_node/Command-Grouping.html]