Как выполнить скрипт в оболочке при нажатии клавиши быстрого доступа

Как я могу выполнить скрипт в командной консоли при нажатии клавиши быстрого доступа.

По сути, мне нужно, когда нажата клавиша быстрого доступа, скрипт должен читать из файла и отображать это содержимое в терминале.

One Solution collect form web for “Как выполнить скрипт в оболочке при нажатии клавиши быстрого доступа”

Вы можете использовать встроенную команду, bind для сопоставления сочетания клавиш, чтобы она выполняла скрипт command / shell.

пример

Скажем, мы хотим запустить команду pwd , когда мы нажимаем клавишу F12 .

 $ bind '"\e[24~":"pwd\n"' 

Теперь, когда я нажимаю F12 в своем приглашении, $ :

 $ pwd /home/saml 

Определение сочетаний клавиш

Вы можете использовать следующую технику для определения кода эвакуации для данного сочетания клавиш. В большинстве систем нажмите Ctrl + V , отпустите, а затем нажмите клавишу, для которой требуется код. Есть и другие системы, которые будут работать с M вместо V

пример

Нажав Ctrl + V, отпустите оба Ctrl и V и, наконец, нажмите F12 в окне терминала, это возвращает:

 $ ^[[24~ 

Этот вывод можно интерпретировать следующим образом, ^[ является клавишей Esc . Поэтому, когда мы хотим указать этот конкретный ключ с помощью команды bind нам нужно использовать символ \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 выше.

Рекомендации

  • В bash, как связать функциональный ключ с командой?
  • Изменение предпочтений Gnome-терминала из терминала
  • Измените приглашение при запуске терминала из сценария bash (но не затрагивайте все терминалы)
  • Как ключи передаются на emacs и терминал gnome?
  • Невозможно изменить название вкладки gnome-terminal из сеанса ssh на удаленной машине debian 8
  • Магические переменные окружения в gnome-terminal
  • Можно ли работать с XTERM и Gnome-keyring?
  • Как исправить сдвинутые функциональные клавиши в vim в xterm в gnome-терминале?
  • Почему некоторые вкладки гном-терминала выглядят подавленными
  • Подождите, пока конец гнома
  • Сценарий Bash для запуска команд tmux и issue
  • Получение исключения при открытии терминала на Fedora 24
  • Linux и Unix - лучшая ОС в мире.