Respuestas:
Puede usar bind -x
para vincular un comando a un acceso directo en Bash. Por ejemplo, para vincular el git status
comando a Crtl+ pacceso directo puede usar:
bind -x '"\C-p":git status'
Póngalo en el ~/.bashrc
archivo para recordarlo. Desde la página del manual:
-x keyseq: comando de shell
Causa que se ejecute el comando shell cada vez que se ingresa keyseq. Cuando se ejecuta el comando shell, el shell establece la variable READLINE_LINE en el contenido del búfer de línea Readline y la variable READLINE_POINT en la ubicación actual del punto de inserción. Si el comando ejecutado cambia el valor de READLINE_LINE o READLINE_POINT, esos nuevos valores se reflejarán en el estado de edición.
bind -x '"\C-k":firefox'
Lo uso pero no funciona
bind
Puede encontrar más información sobre el uso aquí: stackoverflow.com/a/4201274/712334
Como debe mantener la terminal abierta después de que se ejecute el comando, coloque:
gnome-terminal -e 'bash -c "git status; read line"'
bajo una combinación de teclas de acceso directo, hará el trabajo. Se abrirá un nueva gnome-terminal
ventana y ejecutará el comando dentro de ella.
Elija: Configuración del sistema> "Teclado"> "Atajos"> "Atajos personalizados". Haga clic en "+" y agregue el comando:
gnome-terminal -e 'bash -c "git status; read line"'
a Ctrl +Enter
Aunque su acceso directo sugerido funciona, puede elegir otra combinación de teclas y luego Ctrl+ Enter, ya que al menos choca con el LibreOffice
acceso directo para saltar a una nueva página.
Para gnome-terminal
abrir una nueva ventana desde la línea de comandos y ejecutar un comando en ella, puede usar:
gnome-terminal -e 'bash -c <command>'
Sin embargo, aunque el comando se ejecutará correctamente, la ventana del terminal se cerrará inmediatamente antes de que pueda leer la salida.
La sección:
read line
es entonces mantener el terminal abierto (hasta que golpee Enter) después de que se ejecute el comando.
De esta manera, puede ejecutar cualquier comando (complejo) en el terminal, sin tener que cerrarlo inmediatamente:
$ gnome-terminal -e 'bash -c "wmctrl -d; read line"'
saldrá (si wmctrl
está instalado):
Después de presionar Enterel terminal se cerrará.
Por supuesto, podría colocar una línea simple bajo una tecla de acceso directo (suponiendo que haya xdotool
instalado):
xdotool type "<command>"
Sin embargo, esto escribiría el comando a ciegas , en cualquier aplicación, y escribir el comando no es la opción más limpia.
El pequeño script a continuación, por lo tanto:
gnome-terminal
ventana (por su pid)gnome-terminal
ventana activa , presiona Return. Dado que el script toma el comando de destino como argumento, puede colocar múltiples comandos bajo múltiples accesos directos.
#!/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)
El guión necesita xdotool
sudo apt-get install xdotool
Cree un directorio ~/bin
si aún no existe, cierre la sesión o inicie sesiónsource ~/.profile
gterm_keys
(sin extensión) en ~/bin
, y hágalo ejecutableAhora puede ejecutar cualquier comando, desde una tecla de acceso directo, en la gnome-terminal
ventana frontal agregando el comando:
gterm_keys <command>
a una tecla de acceso directo, como se describe en [1]
En caso de que se use zsh en lugar de bash, la siguiente línea se ~/.zshrc
une git status
a ALT+ ENTER.
bindkey -s '^[^M' 'git status\n'
Para obtener ALT+ ENTERen Bash, uso esta línea:
bind -x '"\e\C-m":git status'
bindkey -s '^[^M' 'git status\n'
que se une a ALT + ENTRAR.