Ответы:
Это очень похоже на backticks ``.
Это называется подстановка команд ( спецификация posix ) и вызывает подоболочку. Команда в скобках $()или между обратными галочками (``) выполняется в подоболочке, а выходные данные помещаются в исходную команду.
В отличие от обратных галочек, $(...)форма может быть вложенной. Таким образом, вы можете использовать подстановку команд внутри другой подстановки.
Существуют также различия в экранировании символов в подстановке. Я предпочитаю $(...)форму.
echo `echo \`echo foo\`` bar
В 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которое, я думаю, никогда не должно использоваться в производственной среде;).