Что делает (одинарная кавычка) в терминале?


8

Если я набираю '(одинарная кавычка рядом с <enter>кнопкой) в терминале, а затем нажимаю ввод, он падает до >приглашения. Что это такое, для чего оно используется и какие типы команд я могу вводить здесь?

Я могу <Ctrl-C>из этого, но это все, что я получил.

Ответы:


6

Терминал принимает не только однострочный код. На самом деле, вы можете написать код (поскольку bash-скриптинг является языком программирования) в несколько строк.

Например, если вы напишите:

while true; do <enter>

он покажет точно то же, >что показал и ваш случай. Это позволяет вводить больше команд. Теперь, если вы введете:

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

он запустит ваш код (который в данном случае представляет собой просто цикл while, который выводит строку каждую 1 секунду). Это позволяет создавать небольшие программы без необходимости писать их в однострочный код, например так:

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

что, в данном случае, это не такая проблема, но может быть и в других случаях (с большим количеством кода, который будет написан).

Таким образом, он обычно используется для написания нескольких строк кода. В вашем случае оболочка распознает, что 'внутри вашего кода нет четного числа , и это не может работать ни в коем случае (то же самое относится и к "). Итак, это позволит вам написать больше кода, чтобы завершить то, что вы оставили.

Например, если вы даете в качестве команды:

echo "Cake is a <enter>

тогда это позволит вам продолжить. И действительно, вы можете:

lie"            <enter>

Это будет нормально выводить:

Cake is a
lie

Я вижу, поэтому вместо того, чтобы выдавать мне сообщение об ошибке, он дает мне возможность закончить команду вразумительно. Есть ли название для этого «режима»?
Insperatus

2
Я не думаю, что у него есть специальное имя, его обычно называют «вторичным приглашением»
hytromo
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.