การใช้คำสั่งสมบูรณ์คืออะไร


17

ในขณะที่รัน completeคำสั่งบน gnome-terminal ของฉันมันจะแสดงคำสั่งบางคำสั่งมันคืออะไร? และการใช้completeคำสั่งคืออะไร?

$ 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

รายการยาวดังนั้นฉันโพสต์บางส่วน


1
ฉันลองใช้คำสั่ง 'man complete' แต่ไม่แสดงอะไรเลย
Avinash Raj

2
ลองhelp complete
Sylvain Pineau

คำตอบ:


16

completeเป็นฟังก์ชั่นทุบตีในตัว ดังนั้นจึงไม่มีไบนารีในระบบ tabสามารถจัดการกับคำสั่งว่าจะแล้วเสร็จเมื่อกด

ตัวอย่าง:ถ้าคุณพิมพ์:

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

... รายการปรากฏขึ้นพร้อมกับค่าที่เป็นไปได้ทั้งหมดสำหรับคำสั่งนี้ ในกรณีนี้หมายถึงกระบวนการทำงานทั้งหมด ดูผลลัพธ์ของcompleteฟังก์ชัน:

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

ซึ่งหมายความว่าฟังก์ชั่น_pgrep(-F) pidofจะดำเนินการเมื่อแท็บคำสั่ง /etc/bash_completion.d/procpsความหมายของฟังก์ชั่นนี้อยู่ใน

ตัวอย่างอื่น:ถ้าคุณพิมพ์:

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

... คุณจะเห็นรายชื่อของโฟลเดอร์ที่คุณสามารถที่จะอยู่ภายใต้cd /usr/ฟังก์ชั่นใดถูกใช้งาน? greping completeฟังก์ชั่น (ข้างต้น) บอกเราก็ funtction ใน_cd/etc/bash_completion

ทำด้วยตัวคุณเอง : คุณมีโปรแกรม / สคริปต์ที่เรียกว่า/bin/myprogและคุณต้องการถ้าคุณดำเนินการดังต่อไปนี้

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

... มันควรแสดงรายการโฟลเดอร์เท่านั้นไม่ใช่ไฟล์ ดังนั้นขยาย bash เสร็จด้วยคำสั่งต่อไปนี้:

user@host:~$ complete -F _cd myprog

แค่นั้นแหละ. นอกจากนี้คุณยังสามารถเขียนฟังก์ชั่นของตัวเองเพื่อทำสิ่งที่กำหนดเองให้สมบูรณ์ตัวอย่างเช่นกรอกเฉพาะไฟล์หรือตัวเลขหรือรายการค่าคงที่


ดังนั้นวิธีการที่คอมไพล์ของเสร็จบรรทัดคำสั่งดูเหมือนมากฉลาดกว่าโปรแกรมมากที่สุด ...
AShelly

8

completeคือคำสั่ง bash ที่ใช้เพื่อดำเนินการอัตโนมัติเมื่อผู้ใช้กดTABปุ่มในเทอร์มินัล

การโทรcompleteจะแสดงรายการฟังก์ชั่นทั้งหมดที่ลงทะเบียนไว้เพื่อให้คำสั่งหรือตัวเลือกบริการเสร็จสมบูรณ์โดยอัตโนมัติ

จากหน้าคนทุบตี:

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.

ตรวจสอบ/usr/share/bash-completion/bash_completionเพื่อดูความสำเร็จเริ่มต้นที่มาพร้อมกับการทุบตี

เยี่ยมชมhttp://www.linuxjournal.com/content/more-using-bash-complete-commandสำหรับการสอนเต็มรูปแบบเกี่ยวกับคำสั่งนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.