Поведение.* включать. и.. определенный в LSB или POSIX или некоторой другой спецификации?

Флаг начальной загрузки с древних времен, где Вы указали бы на запись раздела MBR как загрузочную, таким образом, Вы могли указать, где загрузчик находился.

На современном OS'es это широко не использовано, поскольку MBR состоит из минимального перегружателя, который загружается или в его собственный раздел или переходит к другой области на диск, где код загрузчика сохранен. (MBR может содержать или исполняемый код или таблицу раздела начальной загрузки среди прочего. См. также эту ссылку на статью о MBR).

Как пример, GRUB записан в MBR и загружает любой раздел, который Вы выбираете.

См. также эту (довольно маленькую) страницу Wikipedia о флаге начальной загрузки: en.wikipedia.org/wiki/Boot_flag

8
20.12.2018, 02:24
4 ответа

Заключая в кавычки из Единственной версии 2 спецификации Unix, объем” Команды и Утилиты", §2.13.3:

Если имя файла начинается с периода (.) период должен быть явно подобран при помощи периода как первый символ шаблона или сразу после символа наклонной черты. (…) Это является неуказанным ли явный период в списке соответствия выражения скобки, такой как [.abc] может соответствовать ведущему периоду в имени файла.

Нет никакого исключения, которое сделало бы второй период в .., или пустая строка после единственного периода в ., не подобранный подстановочным знаком в .*. Поэтому в стандарте говорится это .* соответствия . и .., раздражающий, хотя это может быть.

Проход выше описывает поведение оболочки (sh команда). Раздел по glob C библиотечная функция refererences этот проход.

Язык является точно тем же в версии 3, также известной как POSIX:2001 и IEEE 1003.1-2001, который является тем, что реализуют актуальнейшие системы.

Тире, удар и ksh93 выполняют POSIX. Pdksh и zsh (даже под emulate sh) не делать.

В ksh можно сделать .* пропустить . и .. путем установки FIGNORE='.?(.)', но это имеет побочный эффект создания * включайте точечные файлы. Или можно установить FIGNORE='.*', но затем .* ничему не соответствует.

В ударе можно сделать .* пропустить . и .. путем установки GLOBIGNORE='.:..', но это имеет побочный эффект создания * включайте точечные файлы. Или можно установить GLOBIGNORE='.*', но затем .* ничему не соответствует.

10
27.01.2020, 20:10
  • 1
    : bash не всегда выполняет POSIX. только, когда это вызывается как sh. –  strugee 26.11.2013, 21:46

Вероятно, Вы имеете в виду функциональность в расширении удара о globignore. По умолчанию соответствие расширения удара. и.. но чтение человека:

The  GLOBIGNORE shell variable may be used to restrict the set of file names matching
   a pattern.  If GLOBIGNORE is set, each matching file name that also  matches  one  of
   the patterns in GLOBIGNORE is removed from the list of matches.  The file names ``.''
   and ``..''  are always ignored when GLOBIGNORE is set and not null.  However, setting
   GLOBIGNORE  to  a non-null value has the effect of enabling the dotglob shell option,
   so all other file names beginning with a ``.''  will match.  To get the old  behavior
   of  ignoring  file  names beginning with a ``.'', make ``.*''  one of the patterns in
   GLOBIGNORE.  The dotglob option is disabled when GLOBIGNORE is unset.

Можно установить переменную GLOBIGNORE=.:.. таким образом, когда Вы tipe что-то вроде этого:

rm -r * .*

Вы удаляете только текущий каталог. Стандарт POSIX только указывает это. текущий каталог и.. в родителе текущего каталога. Особое значение.* интерпретируется ударом или другими оболочками (или программы как grep).

4
27.01.2020, 20:10

Ссылки страницы справочника Linux POSIX.2, 3.13.

0
27.01.2020, 20:10
  • 1
    Делает LSB, требуют man, man glob или страницы справочника для присутствования? Я не мог найти человека здесь (к моему удивлению). –  Ciro Santilli 新疆改造中心法轮功六四事件 26.11.2013, 21:18

Насколько я могу сказать, LSB 4.1 не требует bash и только sh.

Для sh это следует за POSIX (с одним незначительным несоответствующим внутренним абонентом).

0
27.01.2020, 20:10

Теги

Похожие вопросы