Việc sử dụng lệnh hoàn chỉnh là gì?


17

Trong khi chạy completelệnh trên gnome-terminal của tôi, nó hiển thị một số lệnh. Chúng là gì? Và việc sử dụng completelệnh là gì?

$ complete
complete -F _minimal 
complete -F _filedir_xspec oodraw
complete -F _filedir_xspec elinks
complete -F _filedir_xspec freeamp
complete -F _longopt split
complete -F _longopt sed
complete -F _longopt ld
complete -F _longopt grep
complete -F _service /etc/init.d/vboxweb-service
complete -F _service /etc/init.d/vboxballoonctrl-service
complete -F _service /etc/init.d/rc
complete -F _service /etc/init.d/nmbd
complete -F _service /etc/init.d/halt
complete -j -P '"%' -S '"' jobs
complete -d pushd

Danh sách đi dài, vì vậy tôi đã đăng một số trong số họ.


1
Tôi đã thử lệnh 'man hoàn thành' nhưng nó không hiển thị gì cả.
Avinash Raj

2
thửhelp complete
Sylvain Pineau

Câu trả lời:


16

completelà một hàm dựng sẵn bash. Vì vậy, không có nhị phân trên hệ thống. Nó xử lý cách các lệnh sẽ được hoàn thành khi nhấn tab.

Ví dụ: nếu bạn gõ:

user@host:~$ pidof <tab><tab>

... Một danh sách đang xuất hiện với tất cả các giá trị có thể cho lệnh này. Trong trường hợp này, nó có nghĩa là tất cả các quy trình đang chạy. Xem đầu ra của completehàm:

user@host:~$ complete | grep pidof
complete -F _pgrep pidof

Điều này có nghĩa là hàm _pgrep(-F) được thực thi khi lập bảng lệnh pidof. Định nghĩa của chức năng này là trong /etc/bash_completion.d/procps.

Một ví dụ khác: nếu bạn gõ:

user@host:~$ cd /usr/<tab><tab>
bin/     games/   include/ lib/     lib32/   local/   sbin/    share/   src/

... bạn thấy danh sách các thư mục bạn có thể cdtheo /usr/. Hàm nào được thực thi? greping completehàm (như trên) cho chúng ta biết đó là chức năng _cdtrong /etc/bash_completion.

Tự làm : Bạn có một chương trình / tập lệnh được gọi /bin/myprogvà bạn muốn điều đó nếu bạn thực hiện nó như sau

user@host:~$ myprog /home/user/<tab><tab>

... nó chỉ nên liệt kê các thư mục, không phải các tập tin. Vì vậy, mở rộng hoàn thành bash của bạn với lệnh sau:

user@host:~$ complete -F _cd myprog

Đó là nó. Bạn cũng có thể viết các hàm riêng để hoàn thành các tùy chỉnh, ví dụ: chỉ hoàn thành các tệp hoặc số cụ thể hoặc danh sách các giá trị tĩnh ...


Vì vậy, đó là cách hoàn thành dòng lệnh của git dường như thông minh hơn nhiều so với hầu hết các chương trình ...
AShelly

8

completelà một lệnh bash được sử dụng để thực hiện hành động tự động hoàn thành khi người dùng nhấn TABphím trong một thiết bị đầu cuối.

Gọi chỉ completesẽ liệt kê tất cả các chức năng được đăng ký để tự động hoàn thành các lệnh hoặc tùy chọn dịch vụ.

Từ trang bash man:

complete: complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat]
          [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix]
          [-S suffix] [name ...]
    Specify how arguments are to be completed by Readline.

    For each NAME, specify how arguments are to be completed.  If no options
    are supplied, existing completion specifications are printed in a way that
    allows them to be reused as input.

    Options:
      -p    print existing completion specifications in a reusable format
      -r    remove a completion specification for each NAME, or, if no
        NAMEs are supplied, all completion specifications
      -D    apply the completions and actions as the default for commands
        without any specific completion defined
      -E    apply the completions and actions to "empty" commands --
        completion attempted on a blank line

    When completion is attempted, the actions are applied in the order the
    uppercase-letter options are listed above.  The -D option takes
    precedence over -E.

    Exit Status:
    Returns success unless an invalid option is supplied or an error occurs.

Kiểm tra /usr/share/bash-completion/bash_completionđể xem các hoàn thành mặc định đi kèm với bash.

Truy cập http://www.linuxjournal.com/content/more-USE-bash-complete-command để xem hướng dẫn đầy đủ về lệnh này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.