Odpowiedzi:
Możesz użyć, bind -x
aby powiązać polecenie ze skrótem w Bash. Na przykład, aby powiązać git status
polecenie ze skrótem Crtl+ p, możesz użyć:
bind -x '"\C-p":git status'
Umieść go w ~/.bashrc
pliku, aby go zapamiętać. Ze strony podręcznika:
-x keyseq: shell-command
Powoduje, że polecenie powłoki powinno być wykonywane za każdym razem, gdy wprowadzany jest keyseq. Po wykonaniu polecenia powłoki powłoka ustawia zmienną READLINE_LINE na zawartość bufora linii Readline, a zmienną READLINE_POINT na bieżącą lokalizację punktu wstawiania. Jeśli wykonane polecenie zmieni wartość READLINE_LINE lub READLINE_POINT, te nowe wartości zostaną odzwierciedlone w stanie edycji.
bind -x '"\C-k":firefox'
Używam tego, ale nie działa
bind
można znaleźć tutaj: stackoverflow.com/a/4201274/712334
Ponieważ po uruchomieniu polecenia należy pozostawić terminal otwarty, wprowadzanie:
gnome-terminal -e 'bash -c "git status; read line"'
pod kombinacją klawiszy skrótu wykona zadanie. Otworzy się nowe gnome-terminal
okno i uruchomi w nim polecenie.
Wybierz: Ustawienia systemu> „Klawiatura”> „Skróty”> „Skróty niestandardowe”. Kliknij „+” i dodaj polecenie:
gnome-terminal -e 'bash -c "git status; read line"'
do Ctrl+Enter
Chociaż sugerowany skrót działa, możesz wybrać inną kombinację klawiszy niż Ctrl+ Enter, ponieważ przynajmniej koliduje on ze LibreOffice
skrótem, aby przejść do nowej strony.
Aby gnome-terminal
otworzyć nowe okno z wiersza poleceń i uruchomić w nim polecenie, możesz użyć:
gnome-terminal -e 'bash -c <command>'
Jednak pomimo tego, że polecenie uruchomi się pomyślnie, okno terminala zostanie zamknięte bezpośrednio przed odczytaniem danych wyjściowych.
Sekcja:
read line
jest wtedy utrzymanie terminala otwartego (dopóki nie naciśniesz Enter) po uruchomieniu polecenia.
W ten sposób możesz uruchomić dowolne (złożone) polecenie w terminalu, nie zamykając go natychmiast:
$ gnome-terminal -e 'bash -c "wmctrl -d; read line"'
wyświetli (jeśli wmctrl
jest zainstalowany):
Po naciśnięciu Enterterminal zostanie zamknięty.
Oczywiście, że mógłby postawić prosty-liner pod klawiszem skrótu (zakładając, że masz xdotool
zainstalowany):
xdotool type "<command>"
Spowodowałoby to jednak wpisanie polecenia na ślepo w dowolnej aplikacji, a wpisanie polecenia nie jest najczystszą opcją.
Mały skrypt poniżej dlatego:
gnome-terminal
oknem (według jego pid)gnome-terminal
oknie, naciska Return. Ponieważ skrypt przyjmuje komendę docelową jako argument, możesz umieścić wiele komend pod wieloma skrótami.
#!/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)
Skrypt potrzebuje xdotool
sudo apt-get install xdotool
Utwórz katalog, ~/bin
jeśli jeszcze nie istnieje, wyloguj się / zaloguj lub uruchomsource ~/.profile
gterm_keys
(bez rozszerzenia) ~/bin
, aby był wykonywalnyTeraz możesz uruchomić dowolne polecenie z klawisza skrótu w pierwszym gnome-terminal
oknie, dodając polecenie:
gterm_keys <command>
do klawisza skrótu, jak opisano w [1]
W przypadku użycia zsh zamiast bash, następujący wiersz w ~/.zshrc
wiąże się git status
z ALT+ ENTER.
bindkey -s '^[^M' 'git status\n'
Aby uzyskać ALT+ ENTERw Bash, używam tej linii:
bind -x '"\e\C-m":git status'
bindkey -s '^[^M' 'git status\n'
co wiąże się z ALT + ENTER.