Как вы заметили, условности нет. Это полностью зависит от того, что делает приложение и от роли аргумента хоста в командной строке, а также от того, как это делают приложения, связанные с вашим скриптом. Следовательно, ответ на этот вопрос, скорее всего, будет основан на мнении -.
Для «длинных опционов» --host=hostname
может быть хорошим выбором, но это личное мнение, и аналогично -h
в качестве короткого опциона. Именно так это делают MySQL/MariaDB и клиенты командной строки PostgreSQL.
Как отмечает Дероберт в комментариях к вашему вопросу,-h
для имени хоста может конфликтовать с использованием -h
для получения справки, но иногда для этого используются -?
, --help
или запуск приложения с без аргументов.
Также может быть полезно указать, для чего используется имя хоста, связанное с определенной опцией, например, --target=hostname
и --jumphost=hostname
и т. д. Если вы хотите указать, что хост должен быть IP-адресом (, а не имя хоста ), можно было бы использовать --addr=ipaddr
или что-то подобное. Некоторые инструменты используют -T
и -U
для указания того, какой адрес привязки использовать с сокетами TCP и UDP соответственно (, особенно syslogd
в OpenBSD ). Опять же, это сводится к тому, что на самом деле делает ваш скрипт.
Если ваш сценарий оболочки использует несколько параметров для изменения своего поведения, в то время как всегда работает с именем хоста, не используйте параметр для указания имени хоста, как это делает ssh
.
Наконец, посмотрите, как похожие утилиты управляют своими флагами командной строки, и используйте что-то согласованное. Это особенно важно, если вы создаете набор из нескольких сценариев для выполнения связанных задач. То есть, не используйте --host=hostname
в одном, пока у вас есть -i addr
в другом.
Нет необходимости устанавливать ibus и т. д. Все приложения X11 имеют доступ к точным кодам клавиш и к своим переводам xkb/xim и могут игнорировать последний.
Проблема в эмуляторе терминала, а также в том, что нет стандартного способа представления комбинаций клавиш типа Ctrl -Enter в терминале. Кроме того, каждый эмулятор терминала имеет (или не имеет )собственный способ настройки привязок клавиш -.
В xterm
, как и в любом приложении на основе xt -, вы можете легко настроить его с помощью ресурсов X11. Например, это переведет Ctrl -Enter в escape-последовательность, соответствующую функциональной клавише F33
(в соответствии с infocmp
):
xterm -xrm '*VT100*translations: #override Ctrl<Key>Return:string("\033[20;5~")'
Затем вы можете привязать это \e[20;5~
к любому действию, которое вы хотите, в readline ~/.inputrc
, с bind
в bash
, с bindkey
в zsh
и т. д.
Ресурсы X11 хранятся как свойство RESOURCE_MANAGER
корневого окна и могут быть загружены туда утилитой xrdb
; обычно xrdb
вызывается из сценария инициализации сеанса x11 для загрузки содержимого файла ~/.Xresources
.
Приложения KDE или Gnome, такие как konsole
и gnome-terminal
, имеют собственный способ настройки комбинаций клавиш для действий; Я не знаю, включает ли это возможность записывать произвольные строки в псевдо--мастер tty.
Вот как это настроить вkonsole
:
Также см. Справочник Kde по привязкам клавиш в Konsole .
Настройки -> Редактировать текущий профиль -> Клавиатура -> (выберите используемую раскладку клавиатуры)-> Редактировать -> Поиск/фильтр для Return
.
Редактировать следующие записи (только левый столбец):
Return-Shift-NewLine
наReturn-Shift-Ctrl-NewLine
Return-Shift+NewLine
наReturn-Shift-Ctrl+NewLine
Это позволяет различать Enter
и Ctrl
+ Enter
.
Добавьте следующую запись:
Return+Ctrl
->\E[20;5~
Теперь просто добавьте bindkey '\e[20;5~' autosuggest-execute
или любой другой приемник в ~/.zshrc
.