Как скобки интерпретируются в командной строке?

Во время чтения о том, как настроить grub , я наткнулся на статью, утверждающую, что мне нужно использовать один из двух следующих синтаксисов:

 echo \(hd0,0\) >> /boot/grub/grub.conf 

или

 echo '(hd0,0)' >> /boot/grub/grub.conf 

потому что в командной строке скобки интерпретируются особым образом. Что особенного в круглых скобках? Как они интерпретируются?

2 Solutions collect form web for “Как скобки интерпретируются в командной строке?”

Скобки обозначают подоболочку в bash. Чтобы процитировать страницу man:

 (list) list is executed in a subshell environment (see COMMAND EXECUTION ENVIRONMENT below). Variable assignments and builtin commands that affect the shell's environment do not remain in effect after the command completes. The return status is the exit status of list. 

где list – это просто нормальная последовательность команд.

Это на самом деле довольно портативный и не специфический только для bash . Спецификация языка командной оболочки POSIX имеет следующее описание синтаксиса (compound-list) :

Выполнение составного списка в среде подсетей; см. « Среда выполнения оболочки» . Переменные назначения и встроенные команды, которые влияют на среду, не должны оставаться в силе после завершения списка.

Список команд, встроенный в круглые скобки, выполняется как подоболочка.

Переменные в подоболочке не видны вне блока кода в подоболочке. Они недоступны для родительского процесса, для оболочки, которая запустила подоболочку. Это, по сути, локальные переменные.

См. Linuxtopia – Глава 20. Подледы

  • Количество обратных косых черт, необходимых для экранирования обратного слэжа регулярного выражения в командной строке
  • -bash:! '@ 10.109.10.142/?ip=10.109.8.39: событие не найдено
  • Использование ссылки на строковую переменную bash в sed
  • Почему обратная косая черта преобразуется в пространство в выражении эха, если IFS = '\'?
  • Как предотвратить перемещение символов в переменной среды?
  • Сценарий Bash не конвертирует переменные
  • Скобка в команде echo shell
  • Как назначить пространственно-содержащиеся значения для переменных в bash, используя eval
  • Параметры функции Bash - Пробелы в имени файла
  • Echo строка с переменной в ней без расширения / оценки
  • Одинарная кавычка в двойных кавычках и справочное руководство Bash
  • Передача аргументов с кавычками и двойными значениями в сценарий bash
  • Interesting Posts

    Почему sudo su работает, но su нет?

    блоки tmux для определенных команд

    Как подключиться к файлу и к консоли

    Как удаленно определить utorrent-версию другой машины с nmap?

    Удаление дублированных файлов в корневых файлах – ускорение загрузки и улучшение использования памяти

    Как создать постоянный псевдоним без ресурса .bashrc-подобного файла?

    Возможная ошибка орфографии mcrypt?

    Когда и как была введена двойная тире (-) в качестве разделителя опций в Unix / Linux?

    Принудительное использование zpool / dev / disk / by-id в Ubuntu Xenial

    Перекрестное компиляция программного модуля

    Поиск файлов и каталогов с различными umask

    Установка клиента PostgreSQL (psql) только на CentOS

    Как полностью управлять пользователями и группами с помощью веб-графического интерфейса и создавать шаблоны для новых пользователей?

    bash_profile останавливается после вызова файла

    Восклицательные знаки в аргументах команды bash

    Linux и Unix - лучшая ОС в мире.