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) .

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.