Обратите внимание, что нет такой вещи, как команда line shell . Для Linux доступно несколько приложений оболочки.
Стефан Шазелас
Ответы:
21
Это очень похоже на backticks ``.
Это называется подстановка команд ( спецификация posix ) и вызывает подоболочку. Команда в скобках $()или между обратными галочками (``) выполняется в подоболочке, а выходные данные помещаются в исходную команду.
В отличие от обратных галочек, $(...)форма может быть вложенной. Таким образом, вы можете использовать подстановку команд внутри другой подстановки.
Существуют также различия в экранировании символов в подстановке. Я предпочитаю $(...)форму.
В POSIX или POSIX-подобных оболочек ( ksh, bash, ash, zsh, yash...), это как ``: команда внутри $()выполняется , и заменить его на стандартный вывод. Разделение слов и генерация файлов выполняются, если они не заключены $()в двойные кавычки. таким образом
chmod 777 $(pwd)
следует заменить на:
chmod 777"$(pwd)"
чтобы избежать расщепления слов и генерации имени файла в текущем рабочем каталоге.
Или даже лучше (за исключением некоторых оболочек, таких как zsh, если каталог был переименован):
chmod 777"$PWD"
Так $PWDкак это специальная переменная, которая содержит путь к текущему рабочему каталогу в оболочках POSIX.
Или даже лучше:
chmod 777.
Поскольку .запись в текущем каталоге является жесткой ссылкой на сам каталог.
Это $()используется для выполнения команды в основном внутри какой-либо другой команды.
chmod 777 $(pwd)
pwdКоманда дает текущий рабочий каталог. Таким образом, когда все будет выполнено, вывод pwd заменит свою позицию и послужит аргументом для chmod, и в результате весь ваш нынешний рабочий каталог получит разрешение, 777которое, я думаю, никогда не должно использоваться в производственной среде;).
Ответы:
Это очень похоже на backticks ``.
Это называется подстановка команд ( спецификация posix ) и вызывает подоболочку. Команда в скобках
$()
или между обратными галочками (``) выполняется в подоболочке, а выходные данные помещаются в исходную команду.В отличие от обратных галочек,
$(...)
форма может быть вложенной. Таким образом, вы можете использовать подстановку команд внутри другой подстановки.Существуют также различия в экранировании символов в подстановке. Я предпочитаю
$(...)
форму.источник
echo `echo \`echo foo\`` bar
В POSIX или POSIX-подобных оболочек (
ksh
,bash
,ash
,zsh
,yash
...), это как``
: команда внутри$()
выполняется , и заменить его на стандартный вывод. Разделение слов и генерация файлов выполняются, если они не заключены$()
в двойные кавычки. таким образомследует заменить на:
чтобы избежать расщепления слов и генерации имени файла в текущем рабочем каталоге.
Или даже лучше (за исключением некоторых оболочек, таких как zsh, если каталог был переименован):
Так
$PWD
как это специальная переменная, которая содержит путь к текущему рабочему каталогу в оболочках POSIX.Или даже лучше:
Поскольку
.
запись в текущем каталоге является жесткой ссылкой на сам каталог.источник
Это
$()
используется для выполнения команды в основном внутри какой-либо другой команды.pwd
Команда дает текущий рабочий каталог. Таким образом, когда все будет выполнено, вывод pwd заменит свою позицию и послужит аргументом дляchmod
, и в результате весь ваш нынешний рабочий каталог получит разрешение,777
которое, я думаю, никогда не должно использоваться в производственной среде;).источник