Відповіді:
Ви можете використовувати bind -x
прив'язку команди до ярлика в Bash. Наприклад, для прив’язки git status
команди до ярлика Crtl+ pви можете використовувати:
bind -x '"\C-p":git status'
Покладіть його у ~/.bashrc
файл, щоб запам'ятати його. З чоловічої сторінки:
-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 install xdotool
Створіть керівництво, ~/bin
якщо він ще не існує, або вийдіть із системи, або запустити йогоsource ~/.profile
gterm_keys
(без розширення) ~/bin
, зробіть його виконуванимТепер ви можете запустити будь-яку команду із клавіші швидкого доступу в передньому gnome-terminal
вікні, додавши команду:
gterm_keys <command>
до клавіші швидкого доступу, як описано в [1]
У випадку, якщо zsh використовується замість bash, наступний рядок у ~/.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.