Hiểu lệnh `compgen` dựng sẵn


37

Từ 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.

Vì vậy, lựa chọn nào [-abcdefgjksuv]là viết tắt của?

Nói cách khác, tôi muốn biết làm thế nào để sử dụng tất cả các tùy chọn.


Bạn đã đọc trang người đàn ông? man compgen. Trang man dành cho các nội dung shell, vì vậy bạn sẽ phải cuộn xuống compgen.
garethTheRed

5
"người đàn ông compgen", không tồn tại. sử dụng "man bash"
kevinf

Câu trả lời:


38

Các tùy chọn cho compgenlệnh giống như complete, ngoại trừ -p-r. Từ compgentrang nam:

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

Đối với các tùy chọn [abcdefgjksuv]:

  • -a có nghĩa là tên của bí danh
  • -b có nghĩa là tên của các nội trang
  • -c có nghĩa là tên của tất cả các lệnh
  • -d có nghĩa là tên của thư mục
  • -e có nghĩa là tên của các biến shell xuất
  • -f có nghĩa là tên của tệp và chức năng
  • -g có nghĩa là tên của các nhóm
  • -j có nghĩa là tên công việc
  • -k có nghĩa là tên của Shell dành riêng từ
  • -s có nghĩa là tên của dịch vụ
  • -u có nghĩa là tên của tên người dùng
  • -v có nghĩa là tên của các biến shell

Bạn có thể xem trang người đàn ông đầy đủ ở đây .


@Pandya: Xem các tùy chọn cho complete, nó giống như compgen, ngoại trừ -p-r.
cuonglm

Tôi đã đọc nó từ man bashvà đề nghị chỉnh sửa để hoàn thành bài đăng của bạn để tôi dễ dàng chấp nhận.
Pandya

1
Bất kỳ thông tin về cách sử dụng compgen -G? Nói mẫu của tôi là compgen -G '*.zip'và tôi có tệp "foo.zip". compgen sẽ tìm thấy foo.zip, nhưng nếu người dùng đã gõ 'b'. Bây giờ, compgen không tìm thấy gì. Nếu tôi đưa ra lệnh compgen -G '*.zip' "b", compgen vẫn tìm thấy foo.zip
Edward Falk

@cuonglm Làm thế nào để liệt kê các chức năng được cung cấp bởi lệnh dịch vụ? Ví dụ, sử dụng service networkingvà nhấn tab sẽ trở lại force-reload reload restart start stop. Bạn có biết làm thế nào để có được những người sử dụng compgen?
Ilia Rostovtsev

@IliaRostovtsev: xem cái này ví dụ github.com/scop/bash-completion/blob/
mẹo
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.