Te sugerimos que revises esta solución en un ambiente controlado antes de pasarlo a producción, saludos.
Solución:
Puedes usar bind -x
para vincular un comando a un acceso directo en Bash. Por ejemplo, para unir git status
comando a Ctrl+pags atajo que puedes usar:
bind -x '"C-p":git status'
Ponerlo en ~/.bashrc
archivo para recordarlo. De la página del manual:
-x keyseq: comando de shell
Hace que el comando de shell se ejecute 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.
1. Abra automáticamente una nueva ventana de terminal, mostrando el resultado de su comando
Dado que debe mantener la terminal abierta después de ejecutar el comando, coloque:
gnome-terminal -e 'bash -c "git status; read line"'
bajo un atajo key combinación, hará el trabajo. Abrirá un nuevognome-terminal
ventana y ejecute el comando dentro de ella.
Agrégalo a un acceso directo
Elija: Configuración del sistema > “Teclado” > “Accesos directos” > “Accesos directos personalizados”. Haga clic en el “+” y agregue el comando:
gnome-terminal -e 'bash -c "git status; read line"'
para control+Ingresar
Nota
Aunque su atajo sugerido funciona, puede elegir otro key combinacion entonces control+IngresarDesde que por lo menos choca con el LibreOffice
atajo para saltar a una nueva página.
Explicación
para tener un nuevo gnome-terminal
ventana abierta desde la línea de comando y ejecute un comando en ella, puede usar:
gnome-terminal -e 'bash -c '
Sin embargo, aunque el comando se ejecutará con éxito, la ventana del terminal se cerrará inmediatamente antes de que pueda leer el resultado.
La sección:
read line
es entonces mantener la terminal abierta (hasta que presiones Ingresar) después de que se ejecute el comando.
Otros comandos
De esta manera, puede ejecutar cualquier comando (complejo) en la terminal, sin tener que cerrarla inmediatamente:
$ gnome-terminal -e 'bash -c "wmctrl -d; read line"'
dará salida (si wmctrl
esta instalado):
Después de presionar Ingresar la terminal se cerrará.
2. Ejecutar un comando en la ventana de gnome-terminal actualmente activa
Por supuesto tú pudo coloque una sola línea simple debajo de un atajo key (asumiendo que tienes xdotool
instalado):
xdotool type ""
Sin embargo, esto escribiría el comando a ciegasen ninguna aplicación, y mecanografía el comando no es la opción más limpia.
Por lo tanto, el pequeño guión a continuación:
- mira si la ventana activa es una
gnome-terminal
ventana (por su pid) - si es así, pastas el comando en el activo
gnome-terminal
ventana, prensas Regreso.
Si no, el script lo hace. nadapor lo que no se pegará en otras aplicaciones.
Dado que la secuencia de comandos toma el comando de destino como argumento, puede colocar varios comandos en varios accesos directos.
La secuencia de comandos
#!/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)
Cómo utilizar
-
El guión necesita
xdotool
sudo apt-get install xdotool
-
Crear un directorio
~/bin
si aún no existe, cierre/cierre sesión o ejecutesource ~/.profile
- Copie el script anterior en un archivo vacío, guárdelo como
gterm_keys
(sin extensión) en~/bin
un hazlo ejecutable
Ahora puedes correr ninguna comando, desde un atajo keyal frente gnome-terminal
ventana agregando el comando:
gterm_keys
a un atajo keycomo se describe en [1]
En caso de que se use zsh en lugar de bash, la siguiente línea en ~/.zshrc
une git status
para alternativa+INGRESAR.
bindkey -s '^[^M' 'git statusn'
Llegar alternativa+INGRESAR en Bash, uso esta línea:
bind -x '"eC-m":git status'