ทำความเข้าใจกับคำสั่ง `compgen 'builtin


36

จากhelp compgen:

$ help compgen
compgen: compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat] [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]
    Display possible completions depending on the options.

    Intended to be used from within a shell function generating possible
    completions.  If the optional WORD argument is supplied, matches against
    WORD are generated.

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

ดังนั้นสิ่งที่ตัวเลือก[-abcdefgjksuv]หมายถึงอะไร

ในคำอื่น ๆ ฉันต้องการทราบวิธีการใช้ตัวเลือกทั้งหมด


คุณอ่าน man page หรือยัง? man compgen. หน้าคนคือสำหรับ builtins compgenเปลือกดังนั้นคุณจะต้องเลื่อนลงไป
garethTheRed

5
"man compgen" ไม่มีอยู่จริง ใช้ "man bash"
kevinf

คำตอบ:


37

ตัวเลือกสำหรับcompgenคำสั่งเป็นเช่นเดียวcompleteยกเว้นและ-p -rจากcompgenหน้าคน:

compgen
 compgen [option] [word]
 Generate possible completion matches for word according to the options, which 
 may be any option accepted by the complete builtin with the exception of -p 
 and -r, and write the matches to the standard output

สำหรับตัวเลือก[abcdefgjksuv]:

  • -a หมายถึงชื่อของนามแฝง
  • -b หมายถึงชื่อของเชลล์บิวด์อิน
  • -c หมายถึงชื่อของคำสั่งทั้งหมด
  • -d หมายถึงชื่อของไดเรกทอรี
  • -e หมายถึงชื่อของตัวแปรเชลล์ที่เอ็กซ์พอร์ต
  • -f หมายถึงชื่อไฟล์และฟังก์ชั่น
  • -g หมายถึงชื่อกลุ่ม
  • -j หมายถึงชื่อของงาน
  • -k หมายถึงชื่อคำที่สงวนไว้ของ Shell
  • -s หมายถึงชื่อของบริการ
  • -u หมายถึงชื่อของชื่อ userAlias
  • -v หมายถึงชื่อของตัวแปรเชลล์

คุณสามารถเห็นหน้าคนที่สมบูรณ์แบบที่นี่


@Pandya: ดูตัวเลือกสำหรับการcompleteก็เช่นเดียวกับการcompgenยกเว้นและ-p -r
cuonglm

ฉันได้อ่านman bashและแนะนำการแก้ไขเพื่อให้โพสต์ของคุณเสร็จสมบูรณ์เพื่อให้ฉันยอมรับได้ง่าย
Pandya

1
ข้อมูลใด ๆ เกี่ยวกับวิธีการใช้งานcompgen -G? พูดแบบของฉันcompgen -G '*.zip'แล้วฉันมีไฟล์ "foo.zip" compgen จะค้นหา foo.zip แต่ถ้าผู้ใช้พิมพ์ 'b' แล้ว ตอนนี้ compgen ไม่พบอะไรเลย ถ้าผมจะให้คำสั่งcompgen -G '*.zip' "b", compgen ยังคงหา foo.zip
เอ็ดเวิร์ด Falk

@cuonglm วิธีแสดงรายการฟังก์ชั่นที่ให้ไว้โดยคำสั่งบริการ ตัวอย่างเช่นการใช้และแท็บตีจะกลับมาservice networking force-reload reload restart start stopคุณรู้วิธีการใช้งานเหล่านั้นcompgenหรือไม่?
Ilia Rostovtsev

@IliaRostovtsev: ดูสิ่งนี้ตัวอย่างเช่นgithub.com/scop/bash-completion/blob/…
cuonglm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.