Що означає "-" (подвійний тире)? (також відомий як "голий подвійний тире")


Відповіді:


583

Точніше, подвійний тире ( --) використовується у вбудованих командах bash та багатьох інших командах для позначення кінця параметрів команд, після чого приймаються лише позиційні параметри.

Приклад використання: давайте скажемо, що ви хочете отримати файл для рядка -v- зазвичай -vвважатиметься можливим змінити відповідне значення (показувати лише рядки, які не збігаються), але --за допомогою рядка ви можете виконати -vподібний рядок :

grep -- -v file

3
Найбільше - setвбудований в Bash , де це абсолютно необхідно.
l0b0

10
--працює на відокремлення параметрів від регулярних виразів у grep, але канонічним є використання -e/ --regexp.
l0b0

5
@ l0b0: шаблон для пошуку, як правило, є одним з позиційних параметрів, тому він може відповідати після --, хоча ви правильно, зазначаючи, що мій приклад вище також може бути записаний як grep -e -v file(хоча це дуже заплутано).
Guss

2
Не всі bashвбудовані команди приймають --як кінець маркера опцій. [і echo, наприклад, не ( одна з причин echoне може бути надійно використана ).
Стефан Шазелас


39

У розділі команд Shell Builtin Commandsman bash ми можемо прочитати :

Якщо не зазначено інше, кожна вбудована команда, задокументована в цьому розділі, як приймає параметри, перед якими -приймає, -- позначає кінець параметрів .

В :, true, falseі testвбудовані команди не приймають варіанти і не відносяться до --спеціально. exit, logout, break, continue, let, І shiftвбудовані функції приймають і аргументи процесу , починаючи з -без необхідності --. Інші вбудовані, які приймають аргументи, але не вказані як параметри, що приймають, інтерпретують аргументи, починаючи з -недійсних параметрів, і вимагають --запобігти цій інтерпретації.

Зауважте, що echoне трактує --значення кінця варіантів.


2
+1 для посилання man bash(примітка до себе для наступного разу:).
користувач3773048

11

POSIX.1-2017

12.2 Настанови щодо синтаксису утиліти

Керівництво 10:

Перший --аргумент, який не є параметром-опціоном, слід сприймати як роздільник, що вказує на кінець параметрів. Будь-які наступні аргументи слід розглядати як операнди, навіть якщо вони починаються із -символу ' '.

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.