Почему при нажатии отображается ^ C в xterm, а не ^ Z

Различные команды поддерживают разные стили параметров. Основные тенденции:

  • 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 .

1
11.04.2018, 23:45
1 ответ

Все действиеstringвtranslationsзаключается в указании некоторых данных, которые отправляются на терминал для данной комбинации клавиш -. Терминал (на самом деле то, что работает внутри терминала, например оболочка или редактор ), определяет то, что эхом .

Если вы хотите, чтобы клавиша делала что-то другое, есть другие действия, которые вы могли бы использовать, кромеstring.

0
28.01.2020, 00:37

Теги

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