Допустим, у меня есть скрипт "myscript.sh
", содержимое которого просто echo $PWD
. Я хотел бы как-то привязать этот скрипт к комбинации клавиш в bash
(gnome-terminal
) - чтобы при нажатии этой комбинации клавиш вывод «myscript.sh
» вставлялся («вставлялся») в курсор положение в терминале.
Очевидно, bash
история и манипуляции со строками обрабатываются readline - и ссылками, которые я получил для bash
сочетаний клавиш, сделайте ссылку readline
:
Я также видел в Справочном руководстве Bash: Readline Синтаксис файла инициализации , что привязки клавиш для bash
могут быть перечислены с помощью bind -p
( см. help bind
[not ' man 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
(и я не не всегда это помню) ... И все же - мне нужно вызвать команду, а затем нажать комбинацию клавиш; почему я не должен просто нажать комбинацию клавиш один раз и покончить с этим ??! :)
Хорошо, надеюсь, это прояснит мою проблему немного лучше ...
РЕДАКТИРОВАТЬ 2: Однако, еще одна причина, по которой было бы полезно сочетание клавиш bash
, заключается в том, что тогда я мог бы также «вставлять / вставлять текущее имя каталога» не только в командах оболочки, но и в терминальных программах, например, как nano
( где, возможно, будет сложнее использовать bash
сценарий или расширение функции напрямую ).