Apa gunanya perintah lengkap?


17

Saat menjalankan completeperintah di terminal gnome saya, ini menunjukkan beberapa perintah. Apa itu? Dan apa gunanya completeperintah?

$ 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

Daftar jadi panjang, jadi saya memposting beberapa dari mereka.


1
Saya mencoba perintah 'man complete' tetapi tidak menampilkan apa pun.
Avinash Raj

2
cobahelp complete
Sylvain Pineau

Jawaban:


16

completeadalah fungsi bash builtin. Jadi tidak ada biner di sistem. Ini menangani bagaimana perintah akan selesai saat menekan tab.

Contoh: jika Anda mengetik:

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

... daftar muncul dengan semua nilai yang mungkin untuk perintah ini. Dalam hal ini berarti semua proses yang berjalan. Lihat output completefungsi:

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

Ini berarti bahwa fungsi _pgrep(-F) dieksekusi ketika menabrak perintah pidof. Definisi fungsi ini adalah dalam /etc/bash_completion.d/procps.

Contoh lain: jika Anda mengetik:

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

... Anda melihat daftar folder yang Anda bisa di cdbawah /usr/. Fungsi mana yang dieksekusi? greping completefungsi (seperti di atas) memberi tahu kita bahwa ini funtction _cddi /etc/bash_completion.

Lakukan sendiri : Anda memiliki program / skrip yang dipanggil /bin/myprogdan Anda ingin itu jika Anda menjalankannya sebagai berikut

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

... seharusnya hanya daftar folder, bukan file. Jadi perpanjang penyelesaian bash Anda dengan perintah berikut:

user@host:~$ complete -F _cd myprog

Itu dia. Anda juga dapat menulis fungsi sendiri untuk menyelesaikan hal-hal khusus, misalnya hanya menyelesaikan file atau angka tertentu atau daftar nilai statis ...


Jadi begitulah penyelesaian baris perintah git nampak jauh lebih pintar daripada kebanyakan program ...
AShelly

8

completeadalah perintah bash yang digunakan untuk melakukan tindakan pelengkapan otomatis saat pengguna menekan TABkunci di terminal.

Panggilan saja completeakan mencantumkan semua fungsi yang terdaftar untuk pelengkapan perintah atau opsi layanan secara otomatis.

Dari halaman 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.

Periksa /usr/share/bash-completion/bash_completionuntuk melihat penyelesaian default yang datang dengan bash.

Kunjungi http://www.linuxjournal.com/content/more-using-bash-complete-command untuk tutorial lengkap tentang perintah ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.