Различные команды поддерживают разные стили параметров. Основные тенденции:
getopt ()
: getopt () - это программный API для анализа опций 30-летней давности. Он широко доступен и является единственным стандартом POSIX.
Он поддерживает только однобуквенные параметры, некоторые из которых могут принимать аргументы. Для краткости можно объединить несколько вариантов.
Пример: tail -fn -2
: параметр без аргументов ( -f
), за которым следует -n
, который принимает аргумент -2
(также можно записать tail -fn-2
или tail -f -n -2
). -
используется для обозначения конца параметров.
XrmParseCommand ()
: (80-е) вызывается, например, из XtOpenApplication ()
.
API, используемый традиционными (читай старым стилем в настоящее время) приложениями X11. Здесь параметры являются одиночными аргументами, обычно -опция
(или + опция
).
Параметры могут принимать аргументы, но их нельзя комбинировать, как для getopt ()
(даже если они определены как однобуквенные параметры, такие как -d
для сокращения от -display
).
GNU getopt_long
. (конец 80-х). GNU расширила API getopt ()
, чтобы добавить поддержку длинных параметров совместимым способом.
GNU является источником этих - длинных
опций и причиной того, что они очень распространены в системах GNU, а не так много где-либо еще.
Здесь у вас есть два типа опций: длинные и короткие. Длинные - - foo
.Те, которые принимают аргументы, могут быть записаны либо - foo = arg
, либо - foo
arg
.
Другое расширение - это параметры, которые могут дополнительно принимать аргументы ( -o
или -oarg
, - opt
или - opt = arg
), хотя короткий вариант не позволяет передавать пустой аргумент. Длинные варианты также можно сокращать. Вместо - help
вы можете передать - he
или - h
(при условии, что это единственный вариант, который начинается с h
). Анализ опций GNU также позволяет переплетать опционные и не опционные аргументы (хотя -
все еще можно использовать для обозначения конца опций).
Этот стиль опций GNU теперь становится новым стандартом де-факто, поскольку большинство языков имеют API для их анализа (иногда с неполным набором функций, иногда с расширениями).
Теперь, есть ли у какой-либо команды возможность распечатать справку или сообщение об использовании, также полностью зависит от автора приложения.
Многие приложения будут печатать сообщение об использовании , если параметр не распознан (для тех команд, которые принимают параметры).Некоторые могут распечатать сообщение при -h
, -?
, -help
, - help
, - использование
, - long-help
...
Теперь вызывать команду со случайным аргументом, не зная, что она может сделать, - опасное дело. -h
может быть для помощи или чего-то еще. Например, shutdown -h
означает h для всей системы. -help
будет сокращением для -h -e -l -p
(или -h -e lp
или -h elp
как в - host = elp
...) для команды, которая использует getopt ()
или getopt_long ()
...
Если вы знаете опции accept команды, относительно безопасная ставка - -?
или -:
. В оболочке:
cmd -\?
cmd -:
Для API getopt ()
, :
и ?
имеют особое значение, поэтому вряд ли они будут допустимыми параметрами. Затем вы получите сообщение об ошибке, которое может дать вам подсказку о том, какой вариант получения помощи можно использовать.
$ xterm -:
xterm: bad command line option "-:"
usage: xterm [-/+132] [-C] [-Sccn] [-T string] [-/+ah] [-/+ai] [-/+aw]
[...]
Type xterm -help for a full description.
$ dd -:
dd: invalid option -- ':'
Try 'dd --help' for more information.
$ ls -:
ls: illegal option -- :
usage: ls -1RadCxmnlogrtucpFbqisfL [files]
Не будет работать с каждой командой.
В любом случае лучше всего сначала попробовать man
, как уже упоминалось.
Помните, что некоторые команды являются встроенными в оболочку (попробуйте введите команду
, чтобы узнать), поэтому документацию по ним можно будет найти в руководстве по вашей оболочке.
Обычно это не относится к ls
.
Все действиеstring
вtranslations
заключается в указании некоторых данных, которые отправляются на терминал для данной комбинации клавиш -. Терминал (на самом деле то, что работает внутри терминала, например оболочка или редактор ), определяет то, что эхом .
Если вы хотите, чтобы клавиша делала что-то другое, есть другие действия, которые вы могли бы использовать, кромеstring
.