ฉันจะเปลี่ยนทิศทางผลลัพธ์การเสร็จสิ้นคำสั่งได้อย่างไร


25

ในบรรทัดคำสั่งฉันสามารถเปลี่ยนเส้นทางหรือไพพ์เอาท์พุทของคำสั่งไปยังไฟล์หรือคำสั่งอื่นโดยใช้ตัวดำเนินการ>หรือ|หลังคำสั่ง ฉันเจอสถานการณ์มาตรฐานน้อยกว่าที่ฉันต้องการเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์ แต่ดูเหมือนว่าฉันไม่มีโอกาสได้เปลี่ยนเส้นทาง:

เมื่ออยู่ที่อาคารผู้โดยสารแห่งใหม่

[chiliNUT ~]$

ถ้าฉันกดTabโดยไม่พิมพ์อะไรก่อนฉันจะถูกถาม

display all 1725 possibilities? (y or n)

และถ้าฉันพิมพ์yฉันก็จะได้คำสั่งต่าง ๆ จำนวนมาก ฉันจะเปลี่ยนเส้นทางหรือไพพ์เอาต์พุตนี้ไปยังไฟล์ได้อย่างไร? ฉันดูเหมือนจะไม่ได้รับโอกาสในการพิมพ์> myfile.txtทุกที่

ใช้CentOS ปล่อย 6.4 (สุดท้าย)

คำตอบ:


26

คุณสามารถใช้ประโยชน์จาก 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.

TABที่พรอมต์จะแสดงรายการคำสั่งเชลล์บิวด์คำหลักนามแฝงและฟังก์ชั่น ดังนั้นคุณสามารถพูดได้:

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

เพื่อให้ได้ตัวเลือกทั้งหมดที่คุณเห็นเมื่อพิมพ์ที่เปลือกพรอมต์ลงในแฟ้มyTABmyfile.txt

กำจัดgrepไปป์ไลน์เพื่อให้ได้คำสั่งฟังก์ชั่น ... ทั้งหมดที่เป็นไปได้ในไฟล์:

compgen -cbka -A function > myfile.txt

1
! น่ากลัว คุณตอบตามที่เขียนจริงเท่านั้นที่จะคว้าคำสั่ง / ไฟล์ที่ขึ้นต้นด้วยตัวอักษร y ดังนั้นเพียงcompgen -cbka -A function > myfile.txtหยิบเอาท์พุทแบบเต็ม ขอบคุณ! ฉัน (ชัด) ไม่เคยรู้เกี่ยวกับฟังก์ชั่นใหม่ที่น่าสนใจนี้
chiliNUT

โอ้นั่นฉลาด
Hauke ​​Laging

@ chiliNUT ฉันไม่ได้พูดถึงว่าคำสั่งจะให้ผู้ที่เริ่มต้นด้วยy:) นี่ค่อนข้างสอดคล้องกับสิ่งที่คุณแสดงในคำถาม!
devnull

โอ้เข้าใจผิดเล็กน้อย คำถาม 'y' ในคำถามของฉันสอดคล้องกับ 'ใช่' กับ 'ไม่'; ฉันป้อน 'y' และมันคายคำสั่งเหล่านั้นทั้งหมดฉันป้อน 'n' และมันจะไม่ส่งออกอะไร
chiliNUT

2
@chiliNUT ฉันได้อัปเดตคำตอบเพื่อแสดงว่า
devnull
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.