2013-11-03 19 views
9

man bash arandı, ancak geçerli tüm bind -x anahtar bağlamaları listelenmeyen bir şey bulamadım. Bunu yapmamın bir yolu var mı? Aşağıdaki çalıştı:Liste bash "bind -x" bağlamaları

$ bind -x '"\C-`":"echo hello"' 
# test binding: press CTRL+` 
hello 
# Binding works! 
$ bind -p | grep 'hello' 
# no output 
$ bind -S 
# no output 

Yani, şu anda etkin tüm bind -x listesini görebiliyordu bir yolu var mı?

$ help bind 
     ... 
     -x keyseq:shell-command Cause SHELL-COMMAND to be executed when 
           KEYSEQ is entered. 
     -X      List key sequences bound with -x and 
           associated commands in a form that can be 
           reused as input. 
     ... 
$ 

cevap

3

görünüyor. Ama sermaye 'P' yaptığı işlerde:

bağlama - tüm işlev adlarını (ve bağlamaları)

bind -P 

Açıklama

  -P  List current readline function names and bindings. 
      -p  Display readline function names and bindings in such a 
       way that they can be re-read. 

Örnek çıktı

set-mark can be found on "\[email protected]", "\e ". 
shell-expand-line can be found on "\e\C-e". 
start-kbd-macro can be found on "\C-x(". 
tilde-expand can be found on "\e&". 
transpose-chars can be found on "\C-t". 
transpose-words can be found on "\et". 
undo can be found on "\C-x\C-u", "\C-_". 
unix-line-discard can be found on "\C-u". 
unix-word-rubout can be found on "\C-w". 
upcase-word can be found on "\eu". 
yank can be found on "\C-y". 
yank-last-arg can be found on "\e.", "\e_". 
yank-nth-arg can be found on "\e\C-y". 
yank-pop can be found on "\ey". 

manpage

gösterilecek

bind [-m keymap] [-lpsvPSVX] 
     bind [-m keymap] [-q function] [-u function] [-r keyseq] 
     bind [-m keymap] -f filename 
     bind [-m keymap] -x keyseq:shell-command 
     bind [-m keymap] keyseq:function-name 
     bind readline-command 
       Display current readline key and function bindings, bind a key 
       sequence to a readline function or macro, or set a readline 
       variable. Each non-option argument is a command as it would 
       appear in .inputrc, but each binding or command must be passed 
       as a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. 
       Options, if supplied, have the following meanings: 
       -m keymap 
        Use keymap as the keymap to be affected by the subsequent 
        bindings. Acceptable keymap names are emacs, 
        emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, 
        vi-command, and vi-insert. vi is equivalent to 
        vi-command; emacs is equivalent to emacs-standard. 
       -l  List the names of all readline functions. 
       -p  Display readline function names and bindings in such a 
        way that they can be re-read. 
       -P  List current readline function names and bindings. 
       -s  Display readline key sequences bound to macros and the 
        strings they output in such a way that they can be re- 
        read. 
       -S  Display readline key sequences bound to macros and the 
        strings they output. 
       -v  Display readline variable names and values in such a way 
        that they can be re-read. 
       -V  List current readline variable names and values. 
       -f filename 
        Read key bindings from filename. 
       -q function 
        Query about which keys invoke the named function. 
       -u function 
        Unbind all keys bound to the named function. 
       -r keyseq 
        Remove any current binding for keyseq. 
       -x keyseq:shell-command 
        Cause shell-command to be executed whenever keyseq is 
        entered. When shell-command is executed, the shell sets 
        the READLINE_LINE variable to the contents of the 
        readline line buffer and the READLINE_POINT variable to 
        the current location of the insertion point. If the 
        executed command changes the value of READLINE_LINE or 
        READLINE_POINT, those new values will be reflected in the 
        editing state. 
       -X  List all key sequences bound to shell commands and the 
        associated commands in a format that can be reused as 
        input. 

       The return value is 0 unless an unrecognized option is given or 
       an error occurred. 
+1

Ben kullandığınız Bash hangi sürümünü bilmiyorum ama 'geçersiz option' döndürür -X' bana' bağlama için: bunun için manpage bulmak şaşırtıcı zor olduğundan, işte burada. Gerçekten, 'yardım bağla' -X 'benim için listelenmiyor. Makinemde 'bash --version'' sürüm 4.2.45 (1) -sülit (x86_64-pc-linux-gnu) ' – Samee

+1

üretir 4.3 (beta) kullanıyorum. Yeni eklenen bir özellik olduğunu bilmiyordum. :) – pynexj

+0

Huh! Öyleyse, sanırım o zaman sıkı bir şekilde asacağım: -P Sürümleri/4.2 için geçici çözümlerini biliyor musunuz? – Samee

1

yukarıdaki cevabı benim için bash 4.3.48 boş çıktı döndürdü: Eğer (Bash 4.3 yeni) bind -X kullanabilirsiniz gibi

+0

Man sayfasını görüntülemek için hangi komutu kullanmalıyım? Man bind'i çalıştırdığımda bana – kshenoy

+0

no'lu bir sokete bir isim vermek için man sayfayı gösterir. Bu bilgiye sadece web-tabanlı man sayfası üzerinden ulaşabildim. Komut satırından belirsizim, bu bilgiyi bulmak zordu. –

+0

https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html#Bash-Builtins – tripleee