Команда «cd` »(обратный апостроф) приводит к«> », почему и как мне выйти из нее?

Когда я набираю

cd `

в терминал, я получаю следующее:

>

Даже ls или cd не работают. Попытка запустить такую ​​команду в приглашении > просто дает еще одно приглашение > .

Пожалуйста, объясните значение приведенной выше команды. И как мне выйти из него?

5
задан 7 May 2019 в 05:36

3 ответа

Обратные пометки создают среду выполнения, называемую подстановкой команд. Используется так, например:

echo "The date today is `date`"

Здесь команда date выполняется первой, а ее вывод заменяет часть между обратными галочками, поэтому в конце вы получаете строку с текущим Дата.

Подстановка команд может занимать несколько строк, поэтому при вводе:

cd `

и нажатии Enter bash ожидает, что вы завершите подстановку команд перед выполнением cd команда. Это может быть нарушено либо закрытием обратной черты и нажатием Enter , либо нажатием CTRL - c (Это приведет к прерыванию команды без выполнения чего-либо ).

Обратите внимание, что современные руководящие принципы предпочитают избегать синтаксиса обратного удара для подстановки команд и использовать вместо него $( ), поэтому первым примером будет:

echo "The date today is $(date)"
0
ответ дан 7 May 2019 в 05:36

Бэктикс работает в парах. Bash ждет, когда вы предоставите еще одну обратную галочку для завершения команды / выражения.

> - это просто запрос новой строки, которая определяется значением PS2, обычно определяемым в .bashrc.

Всякий раз, когда вы нажимаете Enter (если команда / выражение неполная, т. Е. Обратная связь не закрыта), bash ожидает, что вы завершите команду / выражение либо в одну, либо в несколько строк. Например, вы хотите оценить значение «а», используя expr. Вы можете сделать

$ a=`
> expr 1 + 3`

будет интерпретироваться как

$ a=`expr 1 + 3`

Итак, если вы хотите выполнить какую-либо команду, либо завершите требуемое выражение, либо если между ними не требуется команда / выражение backticks, воздержитесь от использования этого. Другой способ - использовать Ctrl + C , но это будет Keyboard Interrupt и заставит вашу команду немедленно завершиться.

Чтобы узнать больше о обратных галочках, прочитайте эти вопросы на U & amp; L: Понимание обратных галочек и Что означает `(обратная цитата / обратная связь) в командах?

0
ответ дан 7 May 2019 в 05:36

> запрос на более вход.

В этом случае название команды, как ожидают, будет введено. Это вызвано тем, что Вы нажали, 'который говорит оболочке, что название команды собирается следовать.

Самый легкий выход из этого несчастного случая состоит в том, чтобы нажать Ctrl+C.

1
ответ дан 23 November 2019 в 08:39

Другие вопросы по тегам:

Похожие вопросы: