Что означает «-» (двойная тире)? (также известный как «двойной двойной тире»)

Я видел --, который используется в команде compgen.

Например:

compgen -W "foo bar baz" -- b

В чем смысл --?

350 голосов | спросил dogbane 15 PMpFri, 15 Apr 2011 16:39:08 +040039Friday 2011, 16:39:08

4 ответа


427

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

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

grep -- -v file
ответил Guss 15 PMpFri, 15 Apr 2011 17:13:08 +040013Friday 2011, 17:13:08
36

Это знак окончания списка параметров (опция).

http://linux.about.com/library/cmd/blcmdl1_compgen.htm

ответил polemon 15 PMpFri, 15 Apr 2011 16:43:48 +040043Friday 2011, 16:43:48
27

В man bash мы можем прочитать раздел Shell Builtin Commands :

  

Если не указано иное, каждая встроенная команда, документально зафиксированная в этом разделе, принимает параметры, которым предшествует -, принимает -- , чтобы обозначить конец опций .

     

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

     

Обратите внимание, что -- не интерпретирует echo как конец опций.

ответил kenorb 1 MarpmSun, 01 Mar 2015 17:36:20 +03002015-03-01T17:36:20+03:0005 2015, 17:36:20
0
  

POSIX.1-2017

     

12.2 Рекомендации по синтаксису служебных программ

     

Руководящий принцип 10:

     

Первый аргумент - , который не является аргументом option, должен быть   принятый в качестве разделителя, указывающий конец опций. Любые последующие   аргументы следует рассматривать как операнды, даже если они начинаются с   '-'.

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

ответил John Doe 30 J0000006Europe/Moscow 2018, 17:29:54

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132