Saltar al contenido

Cómo crear un atajo de teclado para un comando de terminal

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):

ingrese la descripción de la imagen aquí

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

  1. El guión necesita xdotool

    sudo apt-get install xdotool

  2. Crear un directorio ~/bin si aún no existe, cierre/cierre sesión o ejecute source ~/.profile

  3. Copie el script anterior en un archivo vacío, guárdelo como gterm_keys (sin extensión) en ~/binun 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'

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *