Respostas:
Você pode usar bind -x
para vincular um comando a um atalho no Bash. Por exemplo, para vincular o git status
comando a Crtl+p atalho, você pode usar:
bind -x '"\C-p":git status'
Coloque dentro ~/.bashrc
arquivo para lembrá-lo. Na página do manual:
-x keyseq: comando do shell
Faça com que o comando shell seja executado sempre que digitar keyseq. Quando o comando shell é executado, o shell define a variável READLINE_LINE para o conteúdo do buffer da linha Readline e a variável READLINE_POINT para o local atual do ponto de inserção. Se o comando executado alterar o valor de READLINE_LINE ou READLINE_POINT, esses novos valores serão refletidos no estado de edição.
bind -x '"\C-k":firefox'
Eu uso isso, mas não funciona
bind
podem ser encontradas aqui: stackoverflow.com/a/4201274/712334
Como você precisa manter o terminal aberto após a execução do comando, coloque:
gnome-terminal -e 'bash -c "git status; read line"'
sob uma combinação de teclas de atalho, fará o trabalho. Ele abrirá uma nova gnome-terminal
janela e executará o comando dentro dela.
Escolha: Configurações do sistema> "Teclado"> "Atalhos"> "Atalhos personalizados". Clique no "+" e adicione o comando:
gnome-terminal -e 'bash -c "git status; read line"'
para Ctrl+Enter
Embora o atalho sugerido funcione, você pode escolher outra combinação de teclas depois Ctrl+ Enter, pois pelo menos entra em conflito com oLibreOffice
atalho para ir para uma nova página.
Para gnome-terminal
abrir uma nova janela na linha de comando e executar um comando nela, você pode usar:
gnome-terminal -e 'bash -c <command>'
No entanto, embora o comando seja executado com êxito, a janela do terminal será fechada imediatamente antes que você possa ler a saída.
A seção:
read line
é então manter o terminal aberto (até você pressionar Enter ) após a execução do comando.
Dessa forma, você pode executar qualquer comando (complexo) no terminal, sem o fechar imediatamente:
$ gnome-terminal -e 'bash -c "wmctrl -d; read line"'
irá produzir (se wmctrl
estiver instalado):
Depois de pressionar Enter o terminal irá fechar.
É claro que você pode colocar uma linha simples sob uma tecla de atalho (supondo que você tenha xdotool
instalado):
xdotool type "<command>"
No entanto, isso digitaria o comando às cegas , em qualquer aplicativo, e digitar o comando não é a opção mais limpa.
O pequeno script abaixo, portanto:
gnome-terminal
janela (pelo seu pid)gnome-terminal
janela ativa , pressiona Return. Como o script usa o comando direcionado como argumento, você pode colocar vários comandos em vários atalhos.
#!/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)
O script precisa xdotool
sudo apt-get install xdotool
Crie um diretório ~/bin
se ele ainda não existir, faça logout / logout ou executesource ~/.profile
gterm_keys
(sem extensão) ~/bin
e torne-o executávelAgora você pode executar qualquer comando, a partir de uma tecla de atalho, na gnome-terminal
janela da frente , adicionando o comando:
gterm_keys <command>
para uma tecla de atalho, conforme descrito em [1]
Caso o zsh seja usado em vez do bash, a seguinte linha ~/.zshrc
se liga git status
a ALT+ ENTER.
bindkey -s '^[^M' 'git status\n'
Para obter ALT+ ENTERno Bash, eu uso esta linha:
bind -x '"\e\C-m":git status'
bindkey -s '^[^M' 'git status\n'
que se liga a ALT + ENTER.