Bagaimana cara mengarahkan output penyelesaian perintah?

25

Pada baris perintah, saya bisa mengarahkan atau mem-pipe output dari suatu perintah ke file atau perintah lain menggunakan >atau |operator setelah perintah. Saya telah menemukan situasi yang kurang standar bahwa saya ingin mengarahkan output ke file, tetapi saya tampaknya tidak memiliki peluang untuk mengarahkan ulang:

Ketika di terminal baru,

[chiliNUT ~]$

jika saya menekan Tabtanpa mengetik terlebih dahulu, saya akan ditanya

display all 1725 possibilities? (y or n)

dan jika saya mengetik y, saya mendapatkan daftar panjang yang bagus dari berbagai perintah. Bagaimana saya bisa mengarahkan atau mengirim output ini ke file? Sepertinya saya tidak mendapatkan kesempatan untuk mengetik di > myfile.txtmana pun.

Menggunakan CentOS rilis 6.4 (Final) .

cabeNUT
sumber

Jawaban:

26

Anda dapat memanfaatkan builtin 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.

TABpada prompt akan daftar perintah, builtin shell, kata kunci, alias dan fungsi. Jadi bisa dibilang:

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

untuk mendapatkan semua opsi yang Anda lihat saat mengetik yTABdi prompt shell ke dalam file myfile.txt.

Hilangkan greppipeline untuk mendapatkan semua perintah, fungsi, ... yang mungkin ke dalam file:

compgen -cbka -A function > myfile.txt
devnull
sumber
1
Luar biasa! Jawaban Anda sebagai yang ditulis sebenarnya hanya mengambil perintah / file yang dimulai dengan huruf y, jadi compgen -cbka -A function > myfile.txtambil saja hasil lengkapnya. Terima kasih! Saya (jelas) tidak pernah tahu tentang fungsi baru yang menarik ini.
chiliNUT
Oh, itu pintar.
Hauke ​​Laging
@ ChiliNUT Saya memang menyebutkan bahwa perintah akan memulai dengan y:) Ini cukup banyak sesuai dengan apa yang Anda tunjukkan dalam pertanyaan!
devnull
Oh, ha, sedikit salah paham. Kata 'y' dalam pertanyaan saya sebenarnya sesuai dengan 'ya' vs 'tidak'; Saya memasukkan 'y' dan mengeluarkan semua perintah itu, saya memasukkan 'n' dan tidak menghasilkan apa-apa.
chiliNUT
2
@ chiliNUT Saya telah memperbarui jawaban untuk mencerminkan itu juga
devnull