Antworten:
Mit können Sie bind -x
einen Befehl an eine Verknüpfung in Bash binden. Zum Binden des git status
Befehls an die Verknüpfung Crtl+ pkönnen Sie beispielsweise Folgendes verwenden:
bind -x '"\C-p":git status'
Legen Sie es in eine ~/.bashrc
Datei, um es sich zu merken. Aus der Manpage:
-x keyseq: Shell-Befehl
Bewirkt, dass der Shell-Befehl bei jeder Eingabe von keyseq ausgeführt wird. Wenn der Shell-Befehl ausgeführt wird, setzt die Shell die Variable READLINE_LINE auf den Inhalt des Readline-Zeilenpuffers und die Variable READLINE_POINT auf die aktuelle Position der Einfügemarke. Wenn der ausgeführte Befehl den Wert von READLINE_LINE oder READLINE_POINT ändert, werden diese neuen Werte im Bearbeitungsstatus wiedergegeben.
bind -x '"\C-k":firefox'
Ich benutze dies, aber es funktioniert nicht
bind
finden Sie hier: stackoverflow.com/a/4201274/712334
Da Sie das Terminal geöffnet lassen müssen, nachdem der Befehl ausgeführt wurde, schreiben Sie:
gnome-terminal -e 'bash -c "git status; read line"'
erledigt die Aufgabe mit einer Tastenkombination. Es öffnet sich ein neues gnome-terminal
Fenster und führt den Befehl darin aus.
Wählen Sie: Systemeinstellungen> "Tastatur"> "Verknüpfungen"> "Benutzerdefinierte Verknüpfungen". Klicken Sie auf das "+" und fügen Sie den Befehl hinzu:
gnome-terminal -e 'bash -c "git status; read line"'
zu Ctrl+Enter
Obwohl Ihre vorgeschlagene Verknüpfung funktioniert, können Sie eine andere Tastenkombination als Ctrl+ auswählen Enter, da diese zumindest mit der LibreOffice
Verknüpfung kollidiert, um zu einer neuen Seite zu springen.
Um ein neues gnome-terminal
Fenster über die Befehlszeile zu öffnen und darin einen Befehl auszuführen, können Sie Folgendes verwenden:
gnome-terminal -e 'bash -c <command>'
Obwohl der Befehl erfolgreich ausgeführt wird, wird das Terminalfenster sofort geschlossen, bevor Sie die Ausgabe lesen können.
Die Sektion:
read line
ist dann, um das Terminal offen zu halten (bis Sie drücken Enter), nachdem der Befehl ausgeführt wird.
Auf diese Weise können Sie jeden (komplexen) Befehl im Terminal ausführen, ohne ihn sofort schließen zu müssen:
$ gnome-terminal -e 'bash -c "wmctrl -d; read line"'
wird ausgegeben (falls wmctrl
installiert):
Nach dem Drücken wird Enterdas Terminal geschlossen.
Natürlich können Sie könnten einen einfachen Einzeiler unter einer Schnelltaste platzieren (vorausgesetzt , Sie haben xdotool
installiert ist ):
xdotool type "<command>"
Dies würde den Befehl jedoch in jeder Anwendung blind eingeben , und die Eingabe des Befehls ist nicht die sauberste Option.
Das kleine Skript unten also:
gnome-terminal
Fenster ist (anhand seiner PID)gnome-terminal
Fenster eingefügt und gedrückt Return. Da das Skript den Zielbefehl als Argument verwendet, können Sie mehrere Befehle unter mehrere Verknüpfungen setzen.
#!/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)
Das Skript benötigt xdotool
sudo apt-get installiere xdotool
Erstellen Sie ein Verzeichnis, ~/bin
falls es noch nicht vorhanden ist. Melden Sie sich entweder ab oder führen Sie es aussource ~/.profile
gterm_keys
(keine Erweiterung) in ~/bin
und machen Sie es ausführbarJetzt können Sie jeden Befehl über eine Tastenkombination im vordersten gnome-terminal
Fenster ausführen , indem Sie den folgenden Befehl hinzufügen:
gterm_keys <command>
zu einer Tastenkombination, wie in beschrieben [1]
Im Falle zsh statt schlag, die folgende Zeile in verwendeten ~/.zshrc
Binds git status
bis ALT+ ENTER.
bindkey -s '^[^M' 'git status\n'
Um ALT+ ENTERin Bash zu bekommen , benutze ich diese Zeile:
bind -x '"\e\C-m":git status'
bindkey -s '^[^M' 'git status\n'
was an ALT + EINGABETASTE gebunden ist.