Когда я набираю
cd `
в терминал, я получаю следующее:
>
Даже ls
или cd
не работают. Попытка запустить такую команду в приглашении >
просто дает еще одно приглашение >
.
Пожалуйста, объясните значение приведенной выше команды. И как мне выйти из него?
Обратные пометки создают среду выполнения, называемую подстановкой команд. Используется так, например:
echo "The date today is `date`"
Здесь команда date
выполняется первой, а ее вывод заменяет часть между обратными галочками, поэтому в конце вы получаете строку с текущим Дата.
Подстановка команд может занимать несколько строк, поэтому при вводе:
cd `
и нажатии Enter kbd> bash ожидает, что вы завершите подстановку команд перед выполнением cd
команда. Это может быть нарушено либо закрытием обратной черты и нажатием Enter kbd>, либо нажатием CTRL kbd> - c kbd> (Это приведет к прерыванию команды без выполнения чего-либо ).
Обратите внимание, что современные руководящие принципы предпочитают избегать синтаксиса обратного удара для подстановки команд и использовать вместо него $( )
, поэтому первым примером будет:
echo "The date today is $(date)"
Бэктикс работает в парах. Bash ждет, когда вы предоставите еще одну обратную галочку для завершения команды / выражения.
>
- это просто запрос новой строки, которая определяется значением PS2
, обычно определяемым в .bashrc.
Всякий раз, когда вы нажимаете Enter kbd> (если команда / выражение неполная, т. Е. Обратная связь не закрыта), bash ожидает, что вы завершите команду / выражение либо в одну, либо в несколько строк. Например, вы хотите оценить значение «а», используя expr
. Вы можете сделать
$ a=`
> expr 1 + 3`
будет интерпретироваться как
$ a=`expr 1 + 3`
Итак, если вы хотите выполнить какую-либо команду, либо завершите требуемое выражение, либо если между ними не требуется команда / выражение backticks, воздержитесь от использования этого. Другой способ - использовать Ctrl kbd> + C kbd>, но это будет Keyboard Interrupt и заставит вашу команду немедленно завершиться.
Чтобы узнать больше о обратных галочках, прочитайте эти вопросы на U & amp; L: Понимание обратных галочек и Что означает `(обратная цитата / обратная связь) в командах?
>
запрос на более вход.
В этом случае название команды, как ожидают, будет введено. Это вызвано тем, что Вы нажали, 'который говорит оболочке, что название команды собирается следовать.
Самый легкий выход из этого несчастного случая состоит в том, чтобы нажать Ctrl+C.