Что делает “-”, означают как аргумент команде?

Мне было любопытно если chmod 000 / работал бы.

Ну, безупречно. Несколько минут спустя я искал спасение CD.

9
17.03.2011, 00:30
2 ответа

Это - общая конвенция использовать - в аргументе имени файла для значения stdin или stdout; tar следует той же конвенции. Из страницы справочника:

   -f, --file [HOSTNAME:]F
          use archive file or device F (default "-", meaning stdin/stdout)
18
27.01.2020, 20:05
  • 1
    Это - только конвенция; необходимо прочитать страницу справочника для конкретной команды для наблюдения что - средства для него. Stdin/stdout является безусловно наиболее распространенным значением, но существуют другие. Например, к некоторым версиям env это означает, "запускаются с пустой среды". –  cjm 17.03.2011, 01:05

Другая конвенция состоит в том, чтобы использовать '-' для указания на конец флагов, и начало имен файлов. То поведение встроено к getopt (3) на RedHat 4, по крайней мере. Я не могу найти страницу справочника Red Hat, которая использует '-' для указания на конец аргументов, они все, кажется, используют '-', чтобы сделать это. awk страница справочника имеет '-' в том контексте, поэтому возможно, только старый Unix "семейной реликвии" или команды Соляриса используют '-' в качестве аргументы - разделитель имен файлов.

0
27.01.2020, 20:05
  • 1
    -- сигнализирует о конце опций, таким образом, все, что прибывает впоследствии, является операндом. - не опция, таким образом, это и все, что прибывает впоследствии, является операнд. Это - стандартное поведение. Для многих команд, такой как tar, операнд - ввод или вывод стандарта средств. На многих оболочках, set - -a эквивалентно set -- -a, и на некоторых старых Оболочках Bourne set - -a была единственная принятая форма, но это исключение с set встроенный. –  Gilles 'SO- stop being evil' 17.03.2011, 00:37
  • 2
    Соляриса главным образом следуют конвенции стандарта POSIX -- разделить опции от аргументов. –  alanc 30.07.2011, 10:35

Теги

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