Відповіді:
Точніше, подвійний тире ( --
) використовується у вбудованих командах bash та багатьох інших командах для позначення кінця параметрів команд, після чого приймаються лише позиційні параметри.
Приклад використання: давайте скажемо, що ви хочете отримати файл для рядка -v
- зазвичай -v
вважатиметься можливим змінити відповідне значення (показувати лише рядки, які не збігаються), але --
за допомогою рядка ви можете виконати -v
подібний рядок :
grep -- -v file
--
працює на відокремлення параметрів від регулярних виразів у grep
, але канонічним є використання -e
/ --regexp
.
--
, хоча ви правильно, зазначаючи, що мій приклад вище також може бути записаний як grep -e -v file
(хоча це дуже заплутано).
bash
вбудовані команди приймають --
як кінець маркера опцій. [
і echo
, наприклад, не ( одна з причин echo
не може бути надійно використана ).
У розділі команд Shell Builtin Commandsman bash
ми можемо прочитати :
Якщо не зазначено інше, кожна вбудована команда, задокументована в цьому розділі, як приймає параметри, перед якими
-
приймає,--
позначає кінець параметрів .В
:
,true
,false
іtest
вбудовані команди не приймають варіанти і не відносяться до--
спеціально.exit
,logout
,break
,continue
,let
, Іshift
вбудовані функції приймають і аргументи процесу , починаючи з-
без необхідності--
. Інші вбудовані, які приймають аргументи, але не вказані як параметри, що приймають, інтерпретують аргументи, починаючи з-
недійсних параметрів, і вимагають--
запобігти цій інтерпретації.Зауважте, що
echo
не трактує--
значення кінця варіантів.
man bash
(примітка до себе для наступного разу:).
POSIX.1-2017
12.2 Настанови щодо синтаксису утиліти
Керівництво 10:
Перший
--
аргумент, який не є параметром-опціоном, слід сприймати як роздільник, що вказує на кінець параметрів. Будь-які наступні аргументи слід розглядати як операнди, навіть якщо вони починаються із-
символу ' '.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
set
вбудований в Bash , де це абсолютно необхідно.