Відповіді:
Це дуже схоже на задню панель ``.
Це називається підміна команд ( специфікація 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
який, напевно, ніколи не слід використовувати у виробничому середовищі;).