adicionando atalhos de teclado para o terminal OSX ou xterm


0

Existe uma maneira de adicionar um atalho de teclado para um comando de terminal no OSX. Basicamente, na maioria das vezes eu abro o aplicativo terminal no MAC, a fim de ssh em um determinado servidor foo. O que eu quero fazer é adicionar um atalho de teclado (digamos ^ k) para que em um terminal quando eu fizer isso, ele execute "ssh foo" no terminal.

obrigado

PS: Eu acho que se há algo para o xterm no linux, então ele deve funcionar para o terminal também. Então, isso pode não ser uma pergunta específica do OSX.

PS2: Eu quero o atalho para retornar carruagem com o "ssh foo". Se é apenas "ssh foo", então eu posso escrever um alias em .bashrc. Meu objetivo é minimizar o número de pressionamentos de teclas que devo fazer no final do dia.

Respostas:


3

Você está certo, esta não é uma questão específica do OS X. A resposta é encontrada em bash, o shell padrão no OS X (também incluído na maioria, se não em todas as distribuições do Linux).

bash fornece um comando interno chamado bind que pode ser usado para vincular uma combinação de teclas Alt K ) para um comando (como ssh foo ).

Abra o Terminal e digite:

bind '"\ek":"ssh foo\n"'

Isso ligará a combinação de teclas \ek (no Terminal tanto Alt K e Esc K ) para o comando ssh foo. o \n adiciona um Retorna .

Agora pressione Alt K e ssh foo será executado (modificar ssh foo às suas necessidades).

Se você quiser que esta combinação de teclas seja carregada automaticamente ao iniciar um Terminal, crie um arquivo chamado .inputrc na sua pasta pessoal:

cd ~
touch .inputrc

e abri-lo:

open -e ~/.inputrc

Você verá o TextEdit aberto. Tipo:

"\ek":"ssh foo\n"

e salve-o (ou use seu editor favorito). É isso aí!

Há muito mais do que o que expliquei aqui. Eu recomendo que você dê uma olhada nesta pergunta: https://stackoverflow.com/questions/4200800/in-bash-how-do-i-bind-a-function-key-to-a-command e verifique a seção READLINE em (o bastante seco) man bash. Observe que a seqüência de escape \M-, que em outros sistemas operacionais é mapeado para Alt , não funciona no Terminal. Você precisa usar \e ligar Alt .

Como as seqüências de escape são dependentes da emulação de terminal, gostaria de compartilhar a configuração que usei para testar o comando acima:

enter image description here


0

Essas soluções não são perfeitas, mas podem ajudar. Eu só tenho interface russa, então você tem que descobrir nomes de opções específicas para você.

Solução 1

Terminal - Configurações - [Segunda guia] - Shell - Comando para executar no lançamento

Solução 2

Terminal - Configurações - [Segunda aba] - Teclado, permitirá que você use chaves especiais para executar comandos shell (não ctrl-k, embora)

enter image description here

enter image description here


Basicamente eu quero fazer "ssh foo" e um retorno de carro no atalho de teclado. Caso contrário, eu poderia apenas colocar um "alias" no .bashrc e usá-lo. Fiquei entusiasmado com a segunda solução, mas infelizmente o terminal não salva o retorno de carro (na entrada de configurações do teclado) depois de escrever "ssh foo".

Ah e sobre a primeira solução. Eu costumava usá-lo mais cedo, mas clicar no shell e, em seguida, nova janela era mais complicado do que apenas iniciar um novo shell e encontrar o comando do meu histórico de comando (através de ctrl-r). A menos que haja um atalho para iniciar um determinado tipo de terminal, acho inútil.

isso é estranho, porque meu terminal realmente inicia o midnight commander (mc) automaticamente quando é lançado do Dock, por exemplo.

Ah sim, a primeira solução funcionaria. O problema é que, se eu não quiser fazer clique em "shell - & gt; nova janela", eu precisaria salvá-lo no meu shell padrão. Mas eu não quero começar "ssh foo" e sair toda vez que eu não quero fazer isso.
I J

0

Usar iTerm2 . Ele tem a capacidade de fazer exatamente o que você deseja: definir um perfil que executa um determinado comando ao iniciar o terminal e atribuir uma tecla de atalho a esse perfil - para que pressionar a combinação de teclas abra uma nova guia de terminal em seu servidor .


O comprador original quer ser capaz de fazer isso no Terminal, não usando um aplicativo de terceiros ...
nhinkle

0

Eu não acredito que haja uma maneira de criar um atalho de teclado como esse, no entanto, há algumas opções.

  1. O TextExpander permite que você digite um pequeno conjunto de letras e o tenha 'expandido' para a coisa toda. Isso poderia funcionar, não tenho certeza se é suportado no Terminal, mas poderia funcionar.

  2. Como na maioria das vezes você executa este comando no Terminal primeiro, você pode ir para o Terminal & gt; Preferências & gt; Inicialize e defina seu comando 'Shell Opens With' para ser o que você deseja. Então, nas poucas vezes que você não quiser, simplesmente saia do ssh ... muito mais fácil do que digitar o comando.


O TextExpander funciona muito bem para o terminal, mas não para o xterm, no caso de alguém querer saber.
ggkmath

0

Estou usando o TextExpander exatamente com esse propósito: Screenshot TextExpander

Macro TextExpander:

ssh -l user -p 99999 void.example.com%key:return%
echo "some command"%key:return%

Altamente recomendado. Infelizmente não é grátis, e há outras maneiras, com certeza, mas funciona bem.

Edit: Esta conexão ssh usa um arquivo de chave, então não há senha obrigatória.

Edit2: Isso parece outra solução para o seu problema: Terminador


O TextExpander não funciona para o xterm, caso alguém queira saber.
ggkmath

0

Você pode usar Alfred App para usar teclas de atalho globais para várias coisas no OS X.

Por exemplo: Eu defini um atalho global para abrir o aplicativo Terminal e ssh'ing para um determinado servidor. Esse atalho funcionará mesmo quando o aplicativo do terminal ainda não estiver em execução.

Outra vantagem dessa solução em relação a um simples terminal dentro de macro é que ele automaticamente ssh's para seu host remoto também para novas abas que você abrir.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.