Réponses:
Vous pouvez utiliser bind -x
pour lier une commande à un raccourci dans Bash. Par exemple, pour lier la git status
commande au raccourci Crtl+, pvous pouvez utiliser:
bind -x '"\C-p":git status'
Mettez-le dans un ~/.bashrc
fichier pour vous en souvenir. Depuis la page de manuel:
-x keyseq: commande-shell
Entraîne l'exécution de la commande shell à chaque entrée de keyseq. Lorsque la commande shell est exécutée, le shell définit la variable READLINE_LINE sur le contenu du tampon de ligne Readline et la variable READLINE_POINT sur l'emplacement actuel du point d'insertion. Si la commande exécutée change la valeur de READLINE_LINE ou READLINE_POINT, ces nouvelles valeurs seront reflétées dans l'état d'édition.
bind -x '"\C-k":firefox'
J'utilise ça mais ça ne marche pas
bind
peuvent être trouvées ici: stackoverflow.com/a/4201274/712334
Comme vous devez garder le terminal ouvert après l'exécution de la commande, mettez:
gnome-terminal -e 'bash -c "git status; read line"'
sous une combinaison de touches de raccourci, fera le travail. Il ouvrira une nouvelle gnome-terminal
fenêtre et exécutera la commande à l'intérieur.
Choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande:
gnome-terminal -e 'bash -c "git status; read line"'
à Ctrl+Enter
Bien que votre raccourci suggéré fonctionne, vous pouvez choisir une autre combinaison de touches, puis Ctrl+ Enter, car il se heurte au moins au LibreOffice
raccourci pour passer à une nouvelle page.
Pour gnome-terminal
ouvrir une nouvelle fenêtre à partir de la ligne de commande et y exécuter une commande, vous pouvez utiliser:
gnome-terminal -e 'bash -c <command>'
Cependant, bien que la commande s'exécute correctement, la fenêtre du terminal se ferme immédiatement avant que vous puissiez lire la sortie.
La section:
read line
est alors de garder le terminal ouvert (jusqu'à ce que vous frappiez Enter) après l'exécution de la commande.
De cette façon, vous pouvez exécuter n'importe quelle commande (complexe) dans le terminal, sans la fermer immédiatement:
$ gnome-terminal -e 'bash -c "wmctrl -d; read line"'
affichera (s'il wmctrl
est installé):
Après avoir appuyé sur Enterle terminal se fermera.
Bien sûr, vous pouvez placer une simple ligne sous une touche de raccourci (en supposant que vous avez xdotool
installé):
xdotool type "<command>"
Cependant, cela taperait la commande à l' aveugle , dans n'importe quelle application, et taper la commande n'est pas l'option la plus propre.
Le petit script ci-dessous donc:
gnome-terminal
fenêtre (par son pid)gnome-terminal
fenêtre active , appuie sur Return. Étant donné que le script prend la commande ciblée comme argument, vous pouvez placer plusieurs commandes sous plusieurs raccourcis.
#!/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)
Le script a besoin xdotool
sudo apt-get install xdotool
Créez un répertoire ~/bin
s'il n'existe pas encore, déconnectez-vous / connectez-vous ou exécutezsource ~/.profile
gterm_keys
(sans extension) dans ~/bin
, et rendez-le exécutableVous pouvez maintenant exécuter n'importe quelle commande, à partir d'une touche de raccourci, dans la gnome-terminal
fenêtre la plus en avant en ajoutant la commande:
gterm_keys <command>
à une touche de raccourci, comme décrit dans [1]
Si zsh est utilisé à la place de bash, la ligne suivante ~/.zshrc
se lie git status
à ALT+ ENTER.
bindkey -s '^[^M' 'git status\n'
Pour obtenir ALT+ ENTERdans Bash, j'utilise cette ligne:
bind -x '"\e\C-m":git status'
bindkey -s '^[^M' 'git status\n'
qui se lie à ALT + ENTER.