Поведение .*
для включения .
и ..
определение в LSB или POSIX или какой-либо другой спецификации?
Цитирование из спецификации Unix версии 2, том «Команды и утилиты», §2.13.3 :
Если имя файла начинается с period (
.
), период должен явно совпадать, используя точку в качестве первого символа шаблона или сразу после символа косой черты. (…) Не указано, может ли явный период в списке соответствия выражений в скобках, например,[.abc]
совпадать с начальным периодом в имени файла.
Не существует исключения, при котором второй период ..
или пустая строка, следующая за единственным периодом .
, не совпадают с подстановочным знаком в .*
. Поэтому в стандарте говорится, что это .*
соответствует, .
и..
, хотя это может раздражать.
В приведенном выше отрывке описывается поведение оболочки ( sh
команды). Раздел о glob
функции библиотеки C ссылается на этот отрывок.
Язык точно такой же, как в версии 3 , также известной как POSIX: 2001 и IEEE 1003.1-2001, которая используется в большинстве современных систем.
Dash, bash и ksh93 соответствуют POSIX. Пдкш и зш (даже под emulate sh
) нет.
В ksh вы можете .*
пропустить .
и ..
, установив FIGNORE='.?(.)'
, но у этого есть побочный эффект создания *
файлов точек. Или вы можете установить FIGNORE='.*'
, но тогда .*
ничего не соответствует.
В bash вы можете .*
пропустить .
и ..
, установив GLOBIGNORE='.:..'
, но это побочный эффект от *
включения файлов точек. Или вы можете установить GLOBIGNORE='.*'
, но тогда .*
ничего не соответствует.
bash
не всегда соответствует POSIX. только когда он вызывается какsh
.Вероятно, вы имеете в виду функциональность в расширении bash о globignore. По умолчанию расширение bash соответствует. и .. но читая человека:
Вы можете установить переменную
GLOBIGNORE=.:..
так, когда вы что-то вроде этого:вы удаляете только текущий каталог. Стандарт POSIX только указывает это. является текущим каталогом и .. в родительском элементе текущего каталога. Особое значение. * Интерпретируется bash или другими оболочками (или такими программами, как grep).
источник
Linux людей-страница ссылка POSIX.2, 3,13.
источник
man
,man glob
или человеко-страницы , чтобы присутствовать? Я не мог найти мужчину здесь (к моему удивлению).Насколько я могу сказать, LSB 4.1 не требует
bash
и толькоsh
.За
sh
ним следует POSIX (с одним второстепенным не относящимся к делу расширением).источник