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

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

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

  • Unix с несколькими пакетами
  • E: Пакет 'clamav' не имеет кандидата на установку?
  • Как удалить новые команды среды, созданные скриптом virtualenvwrapper?
  • xclip работает по-разному в интерактивных и неинтерактивных оболочках
  • Ncurses не корректно отображает границу окна в gnome-terminal
  • Почему выдача одной и той же команды создает больше выходных данных в tty, чем в pts / gnome-terminal?
  • Ярлык клавиатуры для установки заголовка вкладки gnome-terminal
  • grep со специальными выражениями
  • 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, как связать функциональный ключ с командой?
    Linux и Unix - лучшая ОС в мире.