Cosa fa "(virgoletta singola) nel terminale?


8

Se digito "(virgoletta singola, accanto al <enter>pulsante) nel terminale e quindi premo Invio, viene >visualizzato un messaggio . Che cos'è esattamente, a cosa serve e che tipo di comandi posso inserire qui?

Posso <Ctrl-C>uscirne, ma è tutto quello che ho.

Risposte:


6

Un terminale non accetta solo un codice di una riga. In realtà, puoi scrivere il codice (poiché lo script bash è un linguaggio di programmazione) su più righe.

Ad esempio, se scrivi:

while true; do <enter>

mostrerà esattamente lo stesso >che ha mostrato anche al tuo caso. Ti permette di inserire più comandi. Ora, se si digita:

echo "Cake is a lie" <enter>
sleep 1              <enter>
done                 <enter>

inizierà l'esecuzione del codice (che, in questa occasione, è semplicemente un ciclo while che genererà una stringa ogni 1 secondo). Ciò ti consente di creare piccoli programmi senza doverli scrivere nel codice di una riga, come questo:

while true; do echo "Cake is a lie"; sleep 1; done

che, in questo caso, non è un tale problema, ma potrebbe esserlo, in altre occasioni (con più codice da scrivere).

Quindi, viene generalmente utilizzato per scrivere più righe di codice. Nella tua occasione, la shell riconosce che non hai un numero pari 'all'interno del tuo codice e questo non può funzionare in nessun caso (lo stesso vale per "). Quindi, ti consente di scrivere più codice per completare ciò che ti rimane.

Ad esempio, se si dà come comando:

echo "Cake is a <enter>

allora ti permetterà di continuare. E infatti puoi:

lie"            <enter>

Normalmente produrrà:

Cake is a
lie

Vedo, quindi invece di darmi un messaggio di errore, mi dà la possibilità di finire il comando in modo intelligente. C'è un nome per questa "modalità?"
Insperatus,

2
Non penso che abbia un nome speciale, di solito viene chiamato 'prompt secondario'
hytromo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.