Es el carácter de retorno en el texto que está copiando lo que desencadena la ejecución automática.
Tomemos un ejemplo diferente, copie todas estas líneas de una vez y péguelas en su terminal:
echo "Hello";
echo "World";
Si mira en su terminal, no verá esto:
$ echo "Hello";
echo "World";
Verá esto (también puede haber una línea que diga World
):
$ echo "Hello";
Hello
$ echo "World";
En lugar de esperar a que se pegue toda la entrada, se ejecuta la primera línea (y por la misma razón, la segunda línea puede o no hacerlo también). Esto se debe a que hay un RETURN
carácter entre las dos líneas.
Cuando presiona la ENTER
tecla en su teclado, todo lo que está haciendo es enviar el carácter con el valor ASCII de 13
. Su terminal detecta ese carácter inmediatamente y sabe que tiene instrucciones especiales para ejecutar lo que ha escrito hasta ahora.
Cuando se almacena en su computadora o se imprime en su pantalla, el RETURN
carácter es como cualquier otra letra del alfabeto, número o símbolo. Este personaje puede eliminarse con retroceso o copiarse al portapapeles como cualquier otro personaje normal.
La única diferencia es que, cuando su navegador ve el carácter, sabe que en lugar de imprimir un carácter visible, debe tratarlo de manera diferente y tiene instrucciones especiales para mover el siguiente conjunto de texto a la siguiente línea. El RETURN
carácter y el SPACE
carácter (ascii 32
), junto con algunos otros caracteres rara vez utilizados, se conocen como "caracteres no impresos" por este motivo.
A veces, cuando copia texto de un sitio web, es difícil copiar solo el texto y no la devolución al final (y el estilo de la página a menudo lo dificulta).
¡Experimente el tiempo!
A continuación encontrará dos comandos que ilustrarán el problema y en los que puede "practicar". Inicie el cursor justo antes echo
y arrastre hasta que el resaltado esté justo antes de la flecha:
echo "Wait for my signal...";<- End cursor here right after the semicolon
Y ahora prueba el segundo comando. Inicie el cursor justo antes echo
y arrastre hacia abajo hasta que el cursor esté en la segunda línea, pero esté justo delante de la <-
flecha. Cópielo y luego péguelo en su terminal:
echo 'Go go go!';
<- End cursor here right before the arrow
Dependiendo de su navegador, es posible que ni siquiera sea visible que el texto que seleccionó haya pasado por dos líneas. Pero cuando lo pegue en el terminal, encontrará que ejecuta la línea, porque encontró un RETURN
carácter en el texto copiado.
{
(w / space) antes de pegar, luego termine con}
. No tiene ningún efecto sobre el funcionamiento de los comandos pegados, pero evita que Shell lo ejecute hasta que cierre el bloque. Descrito aquí [ gnu.org/software/bash/manual/html_node/Command-Grouping.html]