Зрозумійте вбудовану команду `compgen`


37

Від 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 compgen. Сторінка man призначена для вбудованої оболонки, тому вам доведеться прокрутити вниз compgen.
garethTheRed

5
"man compgen", не існує. використовувати "man bash"
kevinf

Відповіді:


38

Параметри 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 означає зарезервовані слова Імена оболонки
  • -s означає Імена служби
  • -u означає Імена імен користувачаAlias
  • -v означає Імена змінних оболонок

Ви можете подивитися повну сторінку людини тут .


@Pandya: Перегляньте варіанти для complete, це те саме, що compgen, за винятком -pі -r.
cuonglm

Я прочитав його man bashі запропонував редагувати, щоб завершити вашу публікацію, щоб я легко прийняв.
Пандія

1
Будь-яка інформація про те, як користуватися compgen -G? Скажіть, мій шаблон є, compgen -G '*.zip'і у мене є файл "foo.zip". compgen знайде foo.zip, але що робити, якщо користувач вже набрав 'b'. Тепер комген не повинен нічого знайти. Якщо я дам команду compgen -G '*.zip' "b", compgen все ще знайде foo.zip
Едвард Фолк,

@cuonglm Як перелічити функції, що надаються командою служби? Наприклад, service networkingповернення за допомогою та вкладки повернеться force-reload reload restart start stop. Чи знаєте ви, як отримати тих, хто використовує compgen?
Ілля Ростовцев

@IliaRostovtsev: дивіться це, наприклад, github.com/scop/bash-completion/blob/…
cuonglm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.