¿Qué causa que copiar / pegar en la terminal a veces ejecute el comando?

Pregunta:

Cuando pegas algún comando en la terminal, a veces se ejecutará automáticamente el comando (como si se presionara la tecla "Enter"), a veces no.

He estado usando Linux durante años, pegué miles de comandos en varias consolas en muchas distribuciones y todavía no puedo decir si el comando que estoy a punto de pegar se ejecutará automáticamente o no.

¿Qué desencadena este comportamiento?

Respuesta:

Es el carácter de retorno en el texto que está copiando el que activa la ejecución automática.

Tomemos un ejemplo diferente, copie estas líneas todas a la vez y péguelas en su terminal:

echo "Hello";
echo "World";

Si miras en tu terminal, no verás 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, la primera línea se ejecuta (y por la misma razón, la segunda línea puede o no hacerlo también). Esto se debe a que hay un carácter RETURN entre las dos líneas.

Cuando presiona la tecla ENTER en su teclado, todo lo que está haciendo es enviar el carácter con el valor ASCII de 13 . Ese carácter es detectado inmediatamente por su terminal, 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 carácter RETURN es como cualquier otra letra del alfabeto, número o símbolo. Este carácter puede eliminarse con la tecla de retroceso o copiarse al portapapeles como cualquier otro carácter 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 carácter RETURN y el carácter SPACE (ascii 32 ), junto con algunos otros caracteres que se utilizan con poca frecuencia, se conocen como "caracteres que no se imprimen" por esta razón.

A veces, cuando copia texto de un sitio web, es difícil copiar solo el texto y no el retorno al final (y a menudo se dificulta más por el estilo de la página).


¡Experimente el tiempo!

A continuación encontrará dos comandos que ilustrarán el problema y con los que puede "practicar". Inicie el cursor justo antes de 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 con el segundo comando. Inicie el cursor justo antes de echo y arrastre hacia abajo hasta que el cursor esté en la segunda línea, pero justo delante de la flecha <- . Cópialo y pégalo en tu 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ó tenía más de dos líneas. Pero cuando lo pega en la terminal, encontrará que ejecuta la línea, porque encontró un carácter RETURN en el texto copiado.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım