Чтобы создать архивный файл для каталога, в tar
команду с compress
, verbose
и file
варианты могут быть напечатаны таким образом:
$ tar -cvf my.tar my_directory/
Но это также работает, чтобы сделать это следующим образом:
$ tar cvf my.tar my_directory/
То есть без дефиса (-) перед параметрами. Зачем вам когда-нибудь передавать тире (-) в список опций?
Ответы:
Существует несколько различных шаблонов параметров, которые исторически использовались в приложениях UNIX. Несколько старых, например tar , используют позиционную схему:
как например tar использует
В первой попытке избежать путаницы tar и несколько других программ со старым стилем флагов-аргументов позволили разделять флаги тире, но большинство из нас, старых парней, просто игнорировали это.
Некоторые другие команды имеют более сложный синтаксис командной строки, например, dd (1), который использует флаги, знаки равенства, имена путей, аргументы и куропатку в груше, и все это с дикой непринужденностью.
В BSD и более поздних версиях Unix это более или менее сходилось к односимвольным флагам, помеченным '-', но это стало представлять пару проблем:
--output
.Затем Sun решила, что лишние '-' являются избыточными, и начала использовать флаги в длинном стиле с одиночными '-s.
И вот как это стало беспорядок это сейчас.
источник
-
. Это от Солнца?Вы можете задать параметры tar стандартным способом Unix,
tar -c -f foo -v -B file1 file2 file3
где вам понадобится тире, чтобы различать параметры и параметры или имена файлов в конце командной строки. Или вы можете соединить все параметры в первом аргументе, и в этом случае дефис не обязателен.Тогда есть
ps
, где вы используете тире, если вы используете опции SysV-ish, и не учитываете их, если вы используете опции BSD-ish, просто чтобы сделать вещи более запутанными.И давайте даже не будем говорить о
find
.источник
Тире используется для устранения различий между именами параметров параметров и их значениями. Я думаю, это больше стандартное соглашение.
источник
best-practice
тег, потому что я думал, что это может сводиться к этому.Существует до четырех соглашений об использовании параметров командной строки Unix:
Например:
источник
С ведущим знаком минус / тире (-) вы должны держать параметры в точном порядке. Без минуса порядок вашего варианта может измениться.
Например:
источник
f
которые принимают аргумент, порядок которого имеет значение. См. Unix.stackexchange.com/a/239120/3169