Ответы:
Вы можете использовать, bind -x
чтобы привязать команду к ярлыку в Bash. Например, чтобы связать git status
команду с ярлыком Crtl+, pвы можете использовать:
bind -x '"\C-p":git status'
Поместите это в ~/.bashrc
файл, чтобы запомнить это. С man-страницы:
-x keyseq: команда оболочки
Заставить команду оболочки выполняться всякий раз, когда вводится keyseq. Когда команда shell выполняется, оболочка устанавливает переменную READLINE_LINE на содержимое буфера строки Readline, а переменную READLINE_POINT - текущее местоположение точки вставки. Если выполненная команда изменит значение READLINE_LINE или READLINE_POINT, эти новые значения будут отражены в состоянии редактирования.
bind -x '"\C-k":firefox'
Я использую это, но не работает
bind
можно найти здесь: stackoverflow.com/a/4201274/712334
Поскольку вам нужно держать терминал открытым после выполнения команды, введите:
gnome-terminal -e 'bash -c "git status; read line"'
под сочетанием клавиш, сделает работу. Это откроет новое gnome-terminal
окно и запустит команду внутри него.
Выберите: «Системные настройки»> «Клавиатура»> «Ярлыки»> «Пользовательские ярлыки». Нажмите «+» и добавьте команду:
gnome-terminal -e 'bash -c "git status; read line"'
к Ctrl+Enter
Хотя предлагаемый вами ярлык работает, вы можете выбрать другую комбинацию клавиш, а затем Ctrl+ Enter, поскольку он по крайней мере конфликтует с LibreOffice
ярлыком для перехода на новую страницу.
Чтобы gnome-terminal
открыть новое окно из командной строки и запустить в нем команду, вы можете использовать:
gnome-terminal -e 'bash -c <command>'
Однако, хотя команда будет выполнена успешно, окно терминала закроется немедленно, прежде чем вы сможете прочитать вывод.
Секция:
read line
затем держать терминал открытым (пока вы не нажмете Enter) после запуска команды.
Таким образом, вы можете запустить любую (сложную) команду в терминале, не закрывая ее немедленно:
$ gnome-terminal -e 'bash -c "wmctrl -d; read line"'
выдаст (если wmctrl
установлен):
После нажатия Enterтерминал закроется.
Конечно, вы можете поместить простую однострочную клавишу под сочетанием клавиш (при условии, что вы xdotool
установили):
xdotool type "<command>"
Это, однако, будет вводить команду вслепую в любом приложении, и ввод этой команды - не самый чистый вариант.
Поэтому небольшой скрипт ниже:
gnome-terminal
окном (по его pid)gnome-terminal
окно, нажимает Return. Поскольку сценарий принимает целевую команду в качестве аргумента, вы можете поместить несколько команд в несколько сочетаний клавиш.
#!/usr/bin/env python3
import subprocess
import sys
import time
app = "gnome-terminal"
s = (" ").join(sys.argv[1:])
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8").strip()
def front(app):
try:
# see if gnome-terminal is running at all (raising error if not)
app = get(["pgrep", app])
except subprocess.CalledProcessError:
app = False
if app:
# if so, see if the active window belongs to gnome-terminal comparing pids)
active = get(["xdotool", "getwindowpid", get(["xdotool", "getactivewindow"])])
return True if app == active else False
if front(app):
# copy command to clipboard
cm1 = ["/bin/bash", "-c", 'printf "'+s+'" | xclip -selection clipboard']
# paste in terminal window
cm2 = ["xdotool", "key", "Control_L+Shift_L+v"]
# press return
cm3 = ["xdotool", "key", "Return"]
for cm in [cm1, cm2, cm3]:
subprocess.call(cm)
Скрипт нуждается xdotool
sudo apt-get установить xdotool
Создайте каталог, ~/bin
если он еще не существует, выйдите из системы, войдите или запуститеsource ~/.profile
gterm_keys
(без расширения) ~/bin
и сделайте его исполняемым.Теперь вы можете запустить любую команду с помощью сочетания клавиш в главном gnome-terminal
окне, добавив команду:
gterm_keys <command>
к сочетанию клавиш, как описано в [1]
Если вместо bash используется zsh, следующая строка ~/.zshrc
связывается git status
с ALT+ ENTER.
bindkey -s '^[^M' 'git status\n'
Чтобы получить ALT+ ENTERв Bash, я использую эту строку:
bind -x '"\e\C-m":git status'
bindkey -s '^[^M' 'git status\n'
что связывает с ALT + ENTER.