Ключи, представляющие интерес в .inputrc
, обычно являются управляющими символами, особенно строками, начинающимися с escape-символ , обычно показываемый как ^ [
, но также \ e
, \ E
, \ 033
и т. д.
Как найти клавиши, отправленные вашей клавиатурой, хорошо известно: с помощью символа lnext
(следующий литерал) (обычно ^ V
). Нажмите символ lследующий
, чтобы подавить интерпретацию следующего символа, а затем вашу специальную клавишу. Это позволяет драйверу терминала отображать символы в удобочитаемой форме.
Почему они различаются от одного типа терминала к другому, менее известно. xterm
и rxvt
являются эмуляторами терминала, номинально основанными на одном семействе аппаратных терминалов от DEC (Digital Equipment). В 1970-е и 1980-е годы было выпущено много других типов аппаратных терминалов, но VT100 и его потомки были одними из самых популярных.
Принято считать, что у VT100 не было функциональных клавиш. У него была клавиатура примерно того же размера, что и цифровая клавиатура IBM PC. Верхний ряд был обозначен от PF1 до PF4. Обычное понятие функциональной клавиши лежит за пределами этой области, в других областях клавиатуры, например, в группе пронумерованных клавиш вверху или слева от основной клавиатуры QWERTY.
VT220 расширил дизайн VT100, добавив пронумерованные функциональные клавиши от F6 до F20.У него были F1-F5, но они использовались для локальных функций и обычно не использовались для программирования. Те, которые были полезны для программирования, отправляли escape-последовательности, назначенные DEC. Хотя существует некоторая стандартизация управляющих последовательностей, отправляемых на терминал (ECMA-48), никогда не существовало соответствующего стандарта для последовательностей, отправляемых с терминала. Существует только соглашение и ощущение, что специальные клавиши, которые «такие же», как функция связи хоста с терминалом, должны отправлять ту же управляющую последовательность. Это особенно помогло, если терминал был настроен в режиме локального эха.
Когда xterm был впервые разработан в конце 1980-х или начале 1990-х, кто-то расширил понятие функциональных клавиш VT220, назначив аналогичные escape-последовательности для F1-F5. Назначение клавиш F21-F24 появилось позже (в 2002 ) с использованием аналогичной схемы.
В середине 1990-х годов в xterm
не было определенной схемы для модифицированных ключей, например, с использованием control , shift и т. д. Разработчик Rxvt решил расширить rxvt
, используя схему, в которой используются различные символы final в строках, отправляемых для специальных ключей. Это было проблематично, поскольку вводились ключи, которые не соответствовали функциям связи между хостом и терминалом и не обязательно заканчивались обычным финальным символом (например, $
).
В расширении xterm
я решил добавить нумерованные ключи, используя shift и элемент управления , чтобы расширить диапазон нумерации.Это работало достаточно хорошо, но позже Джеффри Альтман предложил лучшую схему ( патч № 94, 1999 ), которая реализована в последней серии терминалов DEC VTxxx (VT525). Это кодирует модификаторы как число, передаваемое как параметр в escape-последовательность. Несколькими годами позже ( патч № 167 в 2002 году ) кто-то указал на проблему, из-за которой их можно спутать с другими экранированием от хоста к терминалу, и я изменил схему, чтобы избежать этой проблемы.
Разработчики Konsole и VTE (GNOME Terminal) скопировали схему, используемую в xterm с 1999 года, и остался там, а описание терминала для xterm
было обновлено. Это привело к появлению ряда отчетов об ошибках.
Для справки:
Вероятно, ваш сценарий должен быть запущен от имени пользователя root, чтобы в полной мере использовать lsof
. В таком случае этого будет достаточно:
#! /usr/bin/env bash
which lsof > /dev/null || (echo Installing lsof. && yum install lsof)
Возможно, в вашей документации достаточно упомянуть, что lsof
будет установлен, если отсутствует.
how do I find out everything that a distro would have?
$ yum list
на виртуальной машине, которую вы установили только с настройками по умолчанию.
Похоже, он не установлен по умолчанию. На новой установке RHEL 7 я запустил
yum list | grep lsof
lsof.x86_64 4.87-6.el7 rhel-7-server-rhui-rpms
yum list installed | grep lsof
<nothing returned>
Это может быть важно знать, например, при установке некоторых версий Solr. Вы можете установить его с помощью
yum install lsof