Ответы:
Вы можете использовать встроенную команду, bindчтобы отобразить сочетание клавиш, чтобы оно выполняло команду / сценарий оболочки.
Скажем, мы хотим запустить команду pwd, когда нажимаем F12клавишу.
$ bind '"\e[24~":"pwd\n"'
Теперь , когда я нажимаю F12на моей строке $:
$ pwd
/home/saml
Вы можете использовать следующую технику, чтобы определить escape-код для данного сочетания клавиш. В большинстве систем нажмите Ctrl+ V, отпустите, а затем нажмите клавишу, для которой требуется код. Есть некоторые другие системы, с которыми он будет работать MвместоV
Нажатие Ctrl+ Vзатем отпустите оба Ctrlи Vи, наконец, нажмите F12в окне терминала возвращает это:
$ ^[[24~
Этот вывод можно интерпретировать следующим образом, ^[это Escключ. Поэтому, когда мы хотим указать этот конкретный ключ с помощью bindкоманды, нам нужно использовать a \eдля обозначения Escключа, за которым следует все остальное сверху. Итак, bindкоманда выглядит так:
$ bind '"\e[24~":"....."'
Вы также можете использовать bind -xдля настройки сочетания клавиш, которые будут запускать команды, когда вы будете вводить что-то в приглашении, и вывод этих команд будет отображаться, но то, что вы вводите в приглашении, останется без изменений.
$ bind -x '"\eW":"..."'
ПРИМЕЧАНИЕ. Этот метод работает только с сочетаниями клавиш, которые выводят 1 символ, поэтому F12здесь не сработает.
Давайте псевдоним сочетания клавиш Alt+ Shift+ W.
$ bind -x '"\eW":"who"'
Скажем, я набираю команду finger:
$ finger
Теперь я нажал сочетание клавиш Alt+ Shift+ W:
saml tty1 2013-09-01 11:01 (:0)
saml pts/0 2013-09-01 11:03 (:0.0)
saml pts/1 2013-09-01 11:05 (:0.0)
saml pts/2 2013-09-01 11:05 (:0.0)
saml pts/5 2013-09-03 22:45 (:0.0)
$ finger
То, что происходит, - bindэто выполнение определенной команды who, получение ее вывода и вставка ее перед приглашением. Если вы повторите это, вы увидите, что происходит, вот вывод от меня, ударяющего это 2 раза:
saml tty1 2013-09-01 11:01 (:0)
saml pts/0 2013-09-01 11:03 (:0.0)
saml pts/1 2013-09-01 11:05 (:0.0)
saml pts/2 2013-09-01 11:05 (:0.0)
saml pts/5 2013-09-03 22:45 (:0.0)
saml tty1 2013-09-01 11:01 (:0)
saml pts/0 2013-09-01 11:03 (:0.0)
saml pts/1 2013-09-01 11:05 (:0.0)
saml pts/2 2013-09-01 11:05 (:0.0)
saml pts/5 2013-09-03 22:45 (:0.0)
$ finger
Поэтому одной из идей будет использование bind -xвышеописанного метода и catотображение этого текстового файла в вашем приглашении:
$ bind -x '"\eW":"cat someinfo.txt"'
Теперь, когда я запускаю команды, я вижу этот файл так:
This is text from some
multi-line file reminding
me how to do some
stuff
$ finger
Вывод файла someinfo.txtотображается над моей fingerкомандой выше.
echo ' (пробел после одинарной кавычки), затем нажать Ctrl + v, затем нужную клавишу, а затем пробел, одинарную кавычку ... как описано здесь . Пример:echo ' ^[OD '
bind '"\e[24~":"airmon-ng start wlan0\n"'но после того, как я закрыл терминал, вещь, кажется, сбрасывается, и все горячие клавиши ушли