Comando Bash BIND builtin
Em sistemas operacionais do tipo Unix, bind é um comando interno do shell Bash . Você pode usá-lo para alterar como o bash responde às teclas e combinações de teclas pressionadas no teclado.
Descrição
Ao digitar na linha de comando do bash, pressione Ctrl + A para mover o cursor para o início da linha ou Ctrl + E para movê-lo para o final. Essas são as “combinações de teclas” – as ações do teclado estão vinculadas a uma função que move o cursor.
No bash, as ligações de teclas padrão correspondem às do editor Emacs , mas você pode alterá-las para o que funciona melhor para você.
Como bind representa chaves
Vincular representa as teclas do teclado usando cadeias de caracteres especiais e literais . Os caracteres especiais são:
\ C- | Representa manter pressionada a tecla Ctrl e pressionar as teclas que seguem o traço. |
\ e | A tecla Escape. Isso é usado para outras ligações, como a tecla Meta . Por exemplo, a tecla Alt é uma meta-chave em muitos teclados. |
Pode ser muito confuso, e a maneira como o bash codifica as chaves nem sempre é claramente documentada. Para ver como o bind codifica as combinações de teclas padrão, é possível executar o bind -P .
Você também pode observar as configurações de ligação listadas no arquivo / etc / inputrc . Para combinações incomuns, você pode usar Ctrl + v para encontrar qualquer código de chave, conforme descrito abaixo.
Localizando um código-chave
Se você não tiver certeza do código para uma combinação de teclas específica, pressione Ctrl + v em um prompt do bash e pressione a combinação de teclas. Essa ação é chamada inserção entre aspas e exibe o código da tecla que você pressionou. Por exemplo, se você pressionar Ctrl + v , depois F7 , você verá:
^ [[18 ~
Aqui, ^ [ é um caractere de escape, portanto, para representar esse código-chave em uma string, podemos usar:
"\ e [18 ~"
Para exemplos de uso desse código de chave em um comando, consulte exemplos .
Sintaxe
bind [ -lpsvPSVX ] [ -m keymap ] [ -f nome do arquivo ] [ -q name ] [ -u name ] [ -r keyseq ] [ -x keyseq : shell-command ] [ keyseq : função de linha de leitura | comando readline ]
Opções
O comando bind builtin possui as seguintes opções:
-m keymap | Use o mapa de teclas como o esquema de mapeamento de teclas durante a sequência de comandos atual. Os possíveis valores do mapa de teclas são:
|
||||||||||||||||
-I | Liste os nomes das funções de edição vinculáveis. | ||||||||||||||||
-P | Liste os nomes das funções de edição vinculáveis e quais são suas ligações, se houver. | ||||||||||||||||
-p | O mesmo que -P , mas fornece saída em um formulário que pode ser usado como entrada para o comando bind . | ||||||||||||||||
-S | Liste as sequências de teclas que chamam macros e seus valores. | ||||||||||||||||
-s | O mesmo que -S , mas fornece saída em um formulário que pode ser usado como entrada para ligação . | ||||||||||||||||
-V | Listar variáveis e seus valores, que são usados na ligação de teclas bash. | ||||||||||||||||
-v | O mesmo que -V , mas fornece saída em um formulário que pode ser usado como entrada para ligação . | ||||||||||||||||
-q nome-da-função | Exiba (consulta) a ligação de tecla para a função bash nome-da-função . | ||||||||||||||||
-u nome-da-função | Desvincule todas as teclas associadas à função de edição nome-da-função . | ||||||||||||||||
-r keyseq | Remova todas as ligações para a sequência de teclas keyseq . | ||||||||||||||||
-f nome do arquivo | Leia as ligações de teclas do nome do arquivo e use-as como entrada para o comando bind . | ||||||||||||||||
-x keyseq : comando do shell | Vincule um comando. O comando shell shell-command será executado pelo bash quando receber a sequência de teclado keyseq . | ||||||||||||||||
-X | Liste as seqüências de teclas vinculadas por -x em um formato adequado para ligação da entrada. |
Exemplos
bind -m vi
Use o mapeamento de teclas vi no bash , permitindo manipular o texto na linha de comando como faria no vi.
bind -l
Listar todas as funções de edição vinculáveis.
bind -P
O mesmo que o comando acima, mas também lista quais são as ligações atuais da função, se houver.
bind '"\ e [18 ~": "Olá!"
Ligue uma macro à sua tecla F7 (keycode \ e [1 8 ~ ) com o texto Hi! . Quando você pressiona F7, Oi! será inserido na linha de comando como se você a tivesse digitado. Observe que os dois lados dos dois pontos são colocados entre aspas duplas e todo o argumento é colocado entre aspas simples. Para obter mais informações sobre códigos de chave, consulte localizando um código de chave acima.
bind "\ Ck": linha de interrupção
Ligue Ctrl + k à função de linha de interrupção, que no bash significa cortar todo o texto do cursor até o final da linha.
vincular "\ Cy": puxar
Vincule Ctrl + y à função de arranque , que no bash significa colar o último texto que foi cortado.
bind -q yank
Relate qual combinação de teclas está vinculada à função yank . A saída terá a seguinte aparência:
yank pode ser chamado via "\ Cy".
ligar -r "\ Cy"
Remova todas as ligações para a sequência de teclas \ Cy . A função de arranque não está mais vinculada a nada.
bind -x '"\ eOS": "fortuna | cowsay"'
Ligue a tecla F4 para executar o comando fortune | cowsay .
bind -p> mybinds
Saída de todas as ligações de teclas para um arquivo chamado mybinds , em um formato que pode ser usado como entrada para ligação . Por exemplo, você pode abrir mybinds em um editor de texto, fazer alterações nas ligações e salvar o arquivo. Em seguida, você pode aplicar suas alterações com o próximo comando.
bind -f mybinds
Arquivo de configuração
/ etc / inputrc | O arquivo de configuração padrão de ligações de teclas em todo o sistema. |
Comandos relacionados
alias – Crie um nome alternativo para um comando.
set – Define atributos do shell ou exibe variáveis de ambiente.