Que fait '(guillemet simple) dans le terminal?

8

Si je tape '(guillemet simple, à côté du <enter>bouton) dans le terminal, puis appuyez sur Entrée, il tombe à une >invite. À quoi cela sert-il exactement, à quoi sert-il et quel type de commandes puis-je saisir ici?

Je peux en <Ctrl-C>sortir mais c'est tout ce que j'ai.

Insperatus
la source

Réponses:

6

Un terminal n'accepte pas seulement le code à une ligne. En fait, vous pouvez écrire du code (car le script bash est un langage de programmation) sur plusieurs lignes.

Par exemple, si vous écrivez:

while true; do <enter>

il montrera également exactement la même chose >que votre cas. Il vous permet de saisir plus de commandes. Maintenant, si vous tapez:

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

il commencera à exécuter votre code (qui, dans ce cas, est simplement une boucle while qui produira une chaîne toutes les 1 seconde). Cela vous permet de créer de petits programmes sans avoir à les écrire dans du code sur une seule ligne, comme ceci:

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

ce qui, dans ce cas, n'est pas un tel problème, mais il pourrait l'être, dans d'autres occasions (avec plus de code à écrire).

Ainsi, il est généralement utilisé pour écrire plusieurs lignes de code. Dans votre cas, le shell reconnaît que vous n'avez pas un nombre pair de l' 'intérieur de votre code, et cela ne pourrait en aucun cas fonctionner (la même chose s'applique pour "). Donc, cela vous permet d'écrire plus de code afin de terminer ce que vous avez laissé.

Par exemple, si vous donnez comme commande:

echo "Cake is a <enter>

alors il vous permettra de continuer. Et en effet, vous pouvez:

lie"            <enter>

Il produira normalement:

Cake is a
lie
hytromo
la source
Je vois, donc au lieu de me donner un message d'erreur, ça me donne une chance de terminer la commande de manière intelligible. Y a-t-il un nom pour ce "mode"?
Insperatus
2
Je ne pense pas qu'il ait un nom spécial, il est généralement appelé «invite secondaire»
hytromo