C'est le caractère de retour dans le texte que vous copiez qui déclenche l'exécution automatique.
Prenons un autre exemple, copions ces lignes d'un coup et collez-les dans votre terminal:
echo "Hello";
echo "World";
Si vous regardez dans votre terminal, vous ne verrez pas ceci:
$ echo "Hello";
echo "World";
Vous verrez ceci (il peut aussi y avoir une ligne disant World
):
$ echo "Hello";
Hello
$ echo "World";
Au lieu d'attendre que toutes les entrées soient collées, la première ligne s'exécute (et pour la même raison, la deuxième ligne peut également le faire). C'est parce qu'il y a un RETURN
caractère entre les deux lignes.
Lorsque vous appuyez sur la ENTER
touche de votre clavier, tout ce que vous faites est d'envoyer le caractère avec la valeur ASCII de 13
. Ce caractère est immédiatement détecté par votre terminal et sait qu'il dispose d'instructions spéciales pour exécuter ce que vous avez tapé jusqu'à présent.
Lorsqu'il est stocké sur votre ordinateur ou imprimé sur votre écran, le RETURN
caractère est comme n'importe quelle autre lettre de l'alphabet, du chiffre ou du symbole. Ce caractère peut être supprimé avec un retour arrière, ou copié dans le presse-papiers comme n'importe quel autre caractère normal.
La seule différence est que lorsque votre navigateur voit le caractère, il sait qu'au lieu d' imprimer un caractère visible, il doit le traiter différemment et dispose d'instructions spéciales pour déplacer l'ensemble de texte suivant vers la ligne suivante. Le RETURN
caractère et le SPACE
caractère (ascii 32
), ainsi que quelques autres caractères rarement utilisés, sont appelés "caractères non imprimables" pour cette raison.
Parfois, lorsque vous copiez du texte à partir d'un site Web, il est difficile de copier uniquement le texte et non le retour à la fin (et cela est souvent rendu plus difficile par le style de la page).
Expérimentez le temps!
Ci-dessous, vous trouverez deux commandes qui illustreront le problème et sur lesquelles vous pourrez vous "entraîner". Commencez votre curseur juste avant echo
et faites glisser jusqu'à ce que la surbrillance soit juste avant la flèche:
echo "Wait for my signal...";<- End cursor here right after the semicolon
Et maintenant, essayez la deuxième commande. Commencez votre curseur juste avant echo
et faites glisser vers le bas jusqu'à ce que le curseur se trouve sur la deuxième ligne, mais juste devant la <-
flèche. Copiez-le, puis collez-le dans votre terminal:
echo 'Go go go!';
<- End cursor here right before the arrow
En fonction de votre navigateur, il peut même ne pas être visible que le texte que vous avez sélectionné soit sur deux lignes. Mais lorsque vous le collez dans le terminal, vous constaterez qu'il exécute la ligne, car il a trouvé un RETURN
caractère dans le texte copié.
{
(w / espace) avant de coller, puis terminez par}
. Cela n'a aucun effet sur le fonctionnement des commandes collées, mais empêche le shell de l'exécuter jusqu'à ce que vous fermiez le bloc. Décrit ici [ gnu.org/software/bash/manual/html_node/Command-Grouping.html]