Следующее ведет себя одинаково в Fedora и CentOS.
cd mydirectory
работает.
cd notadirectory
работает (получает ошибку от Bash).
Тем не мение,
cd `
дает мне какую-то подсказку:
>
Ничто из того, что я собирался ввести, не дает никакого ответа, оно просто отправляется на следующую строку, чтобы повторить запрос. Я просто использую CTRL+, Cчтобы вернуться обратно к моему root@localhost
.
Какова цель этого и что можно с этим сделать?
Спасибо!
>
чем-то, что может произойти и в других ситуацияхОтветы:
То, что вы ввели, - это обратный удар - это начало инструкции bash для оценки того, что вы вводите в качестве команды.
>
Отображается указать , что вы все еще ввести команду на следующей строке.Если вы закроете обратную галочку, вы увидите, что вся команда будет работать. Например
источник
cd `dirname \`which ls\``
= cd в каталог, где находится двоичный файл "ls". (то есть,cd /bin
так как это/bin/ls
) [править: тьфу, избегать этой уценки$()
чтобы``
. Ваш пример (плюс правильное цитирование) станетcd "$(dirname "$(which ls)")"
гораздо менее безумным.$()
над обратными кавычками.Ответ JohnC уже объясняет обратную черту. Но то, что вас также интересует, так это
>
быстрое. Это приглашение продолжения, и оно запускается не только обратным трюком, но и всегда, когда ваша оболочка четко знает, что вы не завершили ввод команды. Самый простой пример - поместить явное продолжение строки\
в конец строки ввода (что помогает разбить длинный ввод):Обратите внимание, что так же, как
PS1
контролирует внешний вид командной строки, вы такжеPS2
можете изменить приглашение продолжения, напримерЕсть много причин для продолжения. Один обратный удар не завершен, но вы также можете ввести что-то вроде
в одной строке (примечание: рекомендуется использовать
$(
и)
вместо этого, поскольку круглые скобки указывают, где начинается и заканчивается расширение, в то время как одиночные метки в обратном порядке усложняют поиск того, где чего-то не хватает. И вложение ...). Другие возможные причины продолжения подсказки:done
послеwhile
илиfor
fi
послеif
esac
послеcase
(cd $HOME; cat .bashrc)
|
а также условного выполнения||
и&&
(не&
смотря на то, что это просто делает команду запущенной в фоновом режиме)'
или"
)Любопытно, что пропущенная фигурная скобка
}
после раскрытия переменной${
также вызывает приглашение продолжения, но завершится неудачей из-за вставленного пробела:источник
Это означает, что ваша команда еще не завершена. На самом деле, символ обратной черты,
`
используется для разделения встроенной команды.Пример:
источник
Обратный удар запускает / заканчивает подстановку команды. Оболочка считывает команду внутри обратных кавычек, интерпретирует результаты и помещает эти результаты в команду. Например:. ls
which cp
приводит к выполнению «какого cp» и результат этой команды, т. е. / bin / cp будет использоваться в качестве аргумента команды ls. Это поведение, однако, не рекомендуется в пользу более явной и удобочитаемой подстановки команд $ (cmd).При наборе cd `Оболочка ожидает, что команда будет выполнена, и будет закрыта с помощью обратной черты.
В случае раскрытия переменной с использованием фигурных скобок оболочка представляет приглашение продолжения, потому что эти фигурные скобки лексически оцениваются перед выполнением расширения.
источник