Risposte:
È possibile utilizzare bind -x
per associare un comando a un collegamento in Bash. Ad esempio, per associare il git status
comando a Crtl+ pcollegamento è possibile utilizzare:
bind -x '"\C-p":git status'
Mettilo nel ~/.bashrc
file per ricordarlo. Dalla pagina man:
-x keyseq: shell-command
Fa sì che il comando shell venga eseguito ogni volta che viene inserito keyseq. Quando viene eseguito il comando shell, la shell imposta la variabile READLINE_LINE sul contenuto del buffer di linea Readline e la variabile READLINE_POINT sulla posizione corrente del punto di inserimento. Se il comando eseguito modifica il valore di READLINE_LINE o READLINE_POINT, questi nuovi valori si rifletteranno nello stato di modifica.
bind -x '"\C-k":firefox'
Lo uso ma non funziona
bind
può essere trovato qui: stackoverflow.com/a/4201274/712334
Poiché è necessario mantenere aperto il terminale dopo l'esecuzione del comando, inserendo:
gnome-terminal -e 'bash -c "git status; read line"'
sotto una combinazione di tasti di scelta rapida, farà il lavoro. Si aprirà un nuovo gnome-terminal
finestra ed eseguirà il comando al suo interno.
Scegli: Impostazioni di sistema> "Tastiera"> "Scorciatoie"> "Scorciatoie personalizzate". Fai clic su "+" e aggiungi il comando:
gnome-terminal -e 'bash -c "git status; read line"'
a Ctrl+Enter
Sebbene il collegamento suggerito funzioni, è possibile scegliere un'altra combinazione di tasti quindi Ctrl+ Enter, poiché almeno si scontra con il LibreOffice
collegamento per passare a una nuova pagina.
Per gnome-terminal
aprire una nuova finestra dalla riga di comando ed eseguire un comando al suo interno, è possibile utilizzare:
gnome-terminal -e 'bash -c <command>'
Tuttavia, sebbene il comando verrà eseguito correttamente, la finestra del terminale si chiuderà immediatamente prima di poter leggere l'output.
La sezione:
read line
è quindi mantenere aperto il terminale (fino a quando non si preme Enter) dopo l'esecuzione del comando.
In questo modo, è possibile eseguire qualsiasi comando (complesso) nel terminale, senza averlo chiuso immediatamente:
$ gnome-terminal -e 'bash -c "wmctrl -d; read line"'
verrà emesso (se wmctrl
installato):
Dopo aver premuto Enteril terminale si chiuderà.
Naturalmente si potrebbe mettere un semplice one-liner sotto un tasto di scelta rapida (ammesso che abbiate xdotool
installato):
xdotool type "<command>"
Questo tuttavia digitare il comando alla cieca , in qualsiasi applicazione, e digitando il comando non è l'opzione più pulita.
Il piccolo script qui sotto quindi:
gnome-terminal
finestra (dal suo pid)gnome-terminal
finestra attiva , preme Return. Poiché lo script accetta il comando target come argomento, è possibile inserire più comandi in più scorciatoie.
#!/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)
La sceneggiatura ha bisogno xdotool
sudo apt-get install xdotool
Crea un dirctory ~/bin
se non esiste ancora, disconnetti / esegui o eseguisource ~/.profile
gterm_keys
(senza estensione) in ~/bin
, rendilo eseguibileOra puoi eseguire qualsiasi comando, da un tasto di scelta rapida, nella gnome-terminal
finestra in primo piano aggiungendo il comando:
gterm_keys <command>
a un tasto di scelta rapida, come descritto in [1]
Nel caso in cui venga usato zsh invece di bash, la seguente riga si ~/.zshrc
lega git status
a ALT+ ENTER.
bindkey -s '^[^M' 'git status\n'
Per ottenere ALT+ ENTERin Bash, uso questa riga:
bind -x '"\e\C-m":git status'
bindkey -s '^[^M' 'git status\n'
che si lega ad ALT + INVIO.