Bash: вызвать скрипт с настроенными сочетаниями клавиш?
Допустим, у меня есть сценарий "myscript.sh
", с содержанием простоecho $PWD
, Я хотел бы как-то привязать этот скрипт к ключевой комбинации вbash
(gnome-terminal
) - чтобы при нажатии этой комбинации клавиш выводmyscript.sh
"вставлено (" вставлено ") в позицию курсора в терминале.
По-видимому,bash
история и линия манипулирования обрабатываютсяReadline - и ссылки, которые я получил дляbash
сочетания клавиш, сделать ссылкуreadline
:
Я также видел вСправочное руководство Bash: Синтаксис файла инициализации Readline что привязки клавиш дляbash
можно перечислить с помощьюbind -p
(увидетьhelp bind
[не «человек связывает»] для более). Поэтому, возможно, этот вопрос лучше назвать «привязка макросов к пользовательским сочетаниям клавиш вreadline
:) Но в любом случае, что я хочу сделать?
Я думаю, что альтернативой было бы иметь что-то вроде сценария "pwd | xsel -b
", а затем я вызываю его на терминале - и я могу вставить его позже; но я все равно хотел бы вместо этого использовать одну комбинацию клавиш, например, Ctrl-Alt-H (которая, кажется, ни для чего не используется), которая немедленно вставит / Вставить вывод скрипта при нажатии.
Заранее спасибо,
Ура!
РЕДАКТИРОВАТЬ: Просто чтобы уточнить - вот мой случай использования, где я хотел бы это средство. Я обычноcd
находится в папке проекта, обычно с именем что-то вродеmyproject-folder-0012a
, который находится под контролем редакцииsvn
, И есть куча этих папок. Поэтому довольно часто я делаю коммиты, где первое слово сообщения является именем каталога, как в:
svn ci -m "myproject-folder-0012a: here a commit message"
Но это то, что мне не нравится - сначала я набираю 11 символов, которые идут довольно быстро:
svn ci -m "
И затем, я не могу использовать автозаполнение, чтобы получить имя (я нахожусь в папке) - что означает, что я должен либо ввести его полностью (ни за что :)), или я копирую, вставляю его из приглашения (что требует выбора - нажмите мышь, перетащите, отпустите кнопку мыши, затем Ctrl + Shift + C, а затем Ctrl + Shift + V, плюс любые левые / правые клавиши, если я пропущу выравнивание - плюс удаления и тому подобное, если я сделаю копию неправильно).
Смысл - так много работы, просто чтобы получить кровавое имя папки для кровавого коммита сообщения :( Я бы НАМНОГО предпочел нажать что-то вроде (скажем) Ctrl-Alt-H, и имя папки автоматически вставилось бы в позиции курсора, и с этим покончено :)
Мое предложение дляxsel
только потому, что я мог бы поместить его в «глобальный» скрипт - скажем, символическая ссылка как/usr/bin/myscript
(и, очевидно, содержимое сценарияecho $(basename $PWD)
а не простоpwd
для моих нужд), и тогда я мог бы сделать:
$ myscript # this puts directory name in clipboard
$ svn ci -m "[CTRL+SHIFT+V TO PASTE HERE]myproject-folder-0012a[NOW TYPE]: here a commit message"
... что делает рабочую нагрузку меньше, но все же - тогда я должен вспомнить, как называется сценарий, и назвать его,до Я печатаюsvn
команда (и я не всегда это помню) ... И все же - мне нужно вызвать команду, а затем нажать комбинацию клавиш; почему я не должен просто нажать комбинацию клавиш один раз и покончить с этим ??! :)
Ну, надеюсь, это прояснит мою проблему немного лучше ....
EDIT2: Тем не менее, еще одна причина, почемуbash
было бы полезно использовать сочетание клавиш, так как тогда я мог бы также «вставлять / вставлять текущее имя каталога» не только в командах оболочки, но и в терминальных программах, скажем, какnano
(где, возможно, будет сложнее в использованииbash
расширение скрипта или функции напрямую).