È il carattere di ritorno nel testo che stai copiando che sta innescando l'esecuzione automatica.
Facciamo un esempio diverso, copiamo queste righe tutte in una volta e incolliamole nel tuo terminale:
echo "Hello";
echo "World";
Se guardi nel tuo terminale, non vedrai questo:
$ echo "Hello";
echo "World";
Vedrai questo (potrebbe anche esserci una riga che dice World
):
$ echo "Hello";
Hello
$ echo "World";
Invece di attendere che tutti gli input vengano incollati, la prima riga viene eseguita (e per lo stesso motivo, anche la seconda riga può farlo o meno). Questo perché c'è un RETURN
carattere tra le due linee.
Quando premi il ENTER
tasto sulla tastiera, tutto ciò che stai facendo è inviare il carattere con il valore ASCII di 13
. Quel personaggio viene rilevato immediatamente dal tuo terminale e sa che ha istruzioni speciali per eseguire ciò che hai digitato finora.
Se memorizzato sul tuo computer o stampato sullo schermo, il RETURN
personaggio è proprio come qualsiasi altra lettera dell'alfabeto, numero o simbolo. Questo personaggio può essere cancellato con backspace o copiato negli appunti proprio come qualsiasi altro personaggio normale.
L'unica differenza è che, quando il tuo browser vede il personaggio, sa che invece di stampare un personaggio visibile, dovrebbe trattarlo in modo diverso e ha istruzioni speciali per spostare il prossimo set di testo sulla riga successiva. Il RETURN
personaggio e il SPACE
personaggio (ascii 32
), insieme ad alcuni altri caratteri usati raramente, sono noti come "caratteri non stampabili" per questo motivo.
A volte quando si copia il testo da un sito Web, è difficile copiare solo il testo e non il ritorno alla fine (e spesso è reso più difficile dallo stile sulla pagina).
Tempo dell'esperimento!
Di seguito troverai due comandi che illustreranno il problema e su cui puoi "esercitarti". Avvia il cursore subito prima echo
e trascina fino a quando l'evidenziazione si trova proprio prima della freccia:
echo "Wait for my signal...";<- End cursor here right after the semicolon
E ora prova il secondo comando. Avvia il cursore subito prima echo
e trascina verso il basso fino a quando il cursore si trova sulla seconda riga, ma si trova proprio davanti alla <-
freccia. Copialo, quindi incollalo nel tuo terminale:
echo 'Go go go!';
<- End cursor here right before the arrow
A seconda del browser, potrebbe non essere nemmeno visibile che il testo selezionato sia passato su due righe. Ma quando lo incolli nel terminale, scoprirai che esegue la linea, perché ha trovato un RETURN
carattere nel testo copiato.
{
(w / spazio) prima di incollare, quindi termina con}
. Non ha alcun effetto sul funzionamento dei comandi incollati, ma impedisce alla shell di eseguirlo fino alla chiusura del blocco. Descritto qui [ gnu.org/software/bash/manual/html_node/Command-Grouping.html]