Quando você cola algum comando no terminal, ele às vezes executa automaticamente o comando (como se a tecla "Enter" foi pressionada), às vezes não.
Eu uso o Linux há muito tempo, colei milhares de comandos em vários consoles em muitas distribuições e ainda não consigo saber se o comando que estou prestes a colar será executado automaticamente ou não.
O que desencadeia esse comportamento?
{
(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]Respostas:
É 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:
Se você olhar no seu terminal, não verá o seguinte:
Você verá isso (também pode haver uma linha dizendo
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 de13
. 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 oSPACE
caractere (ascii32
), 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: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: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.fonte
Quando você seleciona texto, se incluir uma nova linha (invisível) no final de uma linha, ela estará no texto colado. Isso é consistente em todos os emuladores de terminal que eu conheço. A nova linha faz o que você está chamando de "validar".
Em alguns sistemas (como aqueles que usam terminais síncronos como o IBM 3270), a Enterchave "validava" a tela copiando todas as alterações no host.
fonte
As outras respostas responderam bem à pergunta, mas pensei em compartilhar uma solução para impedir que isso aconteça acidentalmente se você estiver usando o PuTTY no Windows - consulte /server/731022/prevent-accidental -execução-de-comandos-no-linux-se-colar-texto-contendo-um para obter detalhes.
fonte
O caractere de nova linha.
fonte