Як я можу переадресувати виведення завершення команди?


25

У командному рядку я можу перенаправляти або передавати висновок команди у файл чи іншу команду за допомогою команди >або |оператора після команди. Я зіткнувся з менш стандартною ситуацією, що хотів би перенаправити вихід у файл, але, здається, у мене немає можливості переспрямувати його:

Коли на новому терміналі,

[chiliNUT ~]$

якщо я натискаю, Tabне вводячи нічого спочатку, мене запитують

display all 1725 possibilities? (y or n)

і якщо я потім набираю y, я отримую хороший довгий список різних команд. Як я можу перенаправити або передати цей вихід у файл? Я, здається, не отримую можливості > myfile.txtкудись набрати .

Використання CentOS випуску 6.4 (остаточний) .

Відповіді:


26

Ви можете використовувати вбудований 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.

TABпід запитом буде вказано команди, вбудовані оболонки, ключові слова, псевдоніми та функції. Отже, ви можете сказати:

compgen -cbka -A function | grep '^y' > myfile.txt

щоб отримати всі параметри, які ви бачите при введенні yTABв командному рядку оболонки у файл myfile.txt.

Усуньте grepконвеєр, щоб отримати всі можливі команди, функції, ... у файл:

compgen -cbka -A function > myfile.txt

1
Дивовижно! Ви відповідаєте, як написано, насправді лише захоплює команди / файли, які починаються з літери y, тому просто compgen -cbka -A function > myfile.txtзахоплює весь результат. Спасибі! Я (очевидно) ніколи не знав про цю нову цікаву функцію.
chiliNUT

О, це розумно.
Хоуке Лагінг

@chiliNUT Я вже згадував, що команда отримає команду, починаючи з y:) Це було майже у відповідність до того, що ви показали у питанні!
devnull

О, ха, трохи зрозуміли. "У" в моєму запитанні насправді відповідає "так" проти "ні"; Я ввожу "y", і він виписує всі ці команди, я ввожу "n", і це нічого не видає.
chiliNUT

2
@chiliNUT Я оновив відповідь, щоб відобразити і це.
devnull
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.