Ви можете визначити послідовність символів, що видається клавішею, натиснувши Ctrl- vу командному рядку, потім натиснувши клавішу, яка вас цікавить. У моїй системі для F12, я отримую ^[[24~
. ^[
Являє Esc. Різні типи терміналів або емуляторів терміналів можуть видавати різні коди для одного і того ж ключа.
У підказці Bash ви можете ввести таку команду, щоб увімкнути макрос ключа, щоб ви могли його спробувати.
bind '"\e[24~":"foobar"'
Тепер, натиснувши F12, ви отримаєте "foobar" у командному рядку, готовий до подальшого редагування. Якщо ви хочете, щоб натискання клавіші негайно вводило команду, ви можете додати новий рядок:
bind '"\e[24~":"pwd\n"'
Тепер, коли ви натискаєте F12, ви побачите поточний каталог, не натискаючи Enter. Що робити, якщо ви вже щось набрали на рядку, і ви використовуєте це, що виконується автоматично? Це може стати безладним. Однак ви можете очистити рядок як частину вашого макросу:
bind '"\e[24~":"\C-k \C-upwd\n"'
Простір гарантує, що Ctrl- uмає що видалити, щоб дзвін не дзвонив.
Після того, як макрос працює належним чином, ви можете зробити його стійким, додавши його у свій ~/.inputrc
файл. Немає потреби в bind
команді або зовнішньому наборі одинарних лапок:
"\e[24~":"\C-k \C-upwd\n"
Редагувати:
Ви також можете створити прив'язку ключів, яка буде виконувати щось, не порушуючи поточний командний рядок.
bind -x '"\eW":"who"'
Тоді, коли ви вводите команду, яка вимагає, наприклад, ім’я користувача, і вам потрібно знати імена користувачів, які увійшли в систему, ви можете натиснути Alt- Shift-W і на who
екрані відобразиться результат і запит буде перевидано з непошкодженою частковою командою та курсором у тому самому положенні в рядку.
На жаль, це не працює належним чином для таких клавіш, як F12 які видають більше двох символів. У деяких випадках з цим можна обійтись.
Командою ( who
у цьому випадку) може бути будь-який виконуваний файл - програма, сценарій або функція.