การใช้ข้อความจากเอาต์พุตคำสั่งก่อนหน้า


16

แก้ไขเมษายน, 2015: หากคุณมีคำถามเดียวกันนี้ฉันขอแนะนำให้ตรวจสอบhttp://xiki.org/


ฉันรู้ว่านี่ไม่ใช่วิธีการทำงานของเทอร์มินัล แต่ฉันพบว่าตัวเองมักจะคิดว่ามีวิธีที่ง่ายในการใช้ข้อความ (คัดลอกแก้ไขปรับเปลี่ยน ฯลฯ ) ที่มีอยู่แล้วในประวัติหน้าต่างเทอร์มินัลของฉัน

ฉันจินตนาการไว้ดังนี้:

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

ฉันรู้ว่ามีตัวเลือกบางอย่าง:

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

  • ในการเข้าถึงสำหรับเมาส์และเลือกข้อความที่จะคัดลอก อ่อนแอน่ารำคาญฉันหวังว่าฉันจะไม่ทำอย่างนั้น (นี่ไม่ใช่ไซต์ GUI stackexchange ใช่ไหม? =)

  • ในการใช้ตัวเลือก "ส่งออกข้อความเป็น ... " เทอร์มินัลแอปพลิเคชันของฉัน (Mac OS X) และบันทึกข้อความเทอร์มินัลเป็นไฟล์ จากนั้นเปิดไฟล์และทำงานกับมัน เกือบแล้วทำไมต้องทำตามขั้นตอนการบันทึกไฟล์บนดิสก์

ดังนั้นคำถามคือคุณทำอะไรในสถานการณ์นี้ มีลูกเล่น, เครื่องมือ, คุณสมบัติของเชลล์ที่อาจมีประโยชน์ในสถานการณ์นี้หรือไม่? คุณเพิ่งลาออกตัวเองเพื่อใช้เมาส์หรือพิมพ์สิ่งที่คุณต้องการพิมพ์อีกครั้ง?

อาจเป็นไปได้ว่าปัญหาคือว่าฉันไม่ได้ทำสิ่งที่ 'unix วิธี' แต่ c'mon นี่คือ 2010 และฉันไม่สามารถคัดลอกข้อความบางส่วนออกจากเคอร์เซอร์ของฉันได้อย่างง่ายดาย?



คำตอบ:


4

คุณสามารถใช้สคริปต์ (ใช้ -f เพื่อให้แน่ใจว่ามันล้างข้อมูลทุกครั้ง) และคุณสามารถมีเอาต์พุตทั้งหมดในไฟล์

ใช้เทอร์มินัลมัลติเพล็กเซอร์ (หน้าจอ tmux ฯลฯ ) ตัวอย่างเช่นสำหรับหน้าจอ http://web.mit.edu/gnu/doc/html/screen_11.html#

คำสั่ง: คัดลอกเข้าสู่โหมดคัดลอก / scrollback สิ่งนี้ช่วยให้คุณสามารถคัดลอกข้อความจากหน้าต่างปัจจุบันและประวัติลงในบัฟเฟอร์การวาง ในโหมดนี้โปรแกรมแก้ไขแบบเต็มหน้าจอแบบ vi จะทำงานโดยมีการควบคุมตามที่อธิบายไว้ด้านล่าง

เทอร์มินัลมัลติเพล็กเซอร์อื่น ๆ ย่อมมีความสามารถขั้นสูง


ตกลง. ฉันเพิ่งเรียนรู้ว่า 'Terminal Multiplexer' อาจเป็นสิ่งที่ฉันต้องการ ขอบคุณ นอกจากนี้ขอขอบคุณสำหรับคำแนะนำคำสั่ง 'สคริปต์'
Sergio Acosta

5

ใน tmux (เทอร์มินัลมัลติเพล็กเซอร์) คุณสามารถกด Ctrl + A- [เพื่อสลับไปที่โหมดบัฟเฟอร์ Vi ที่คุณสามารถนำทางไปรอบ ๆ หน้าจอเลื่อนบัฟเฟอร์ไปมาคัดลอกข้อความ ฯลฯ ทางลัดเริ่มต้นจริง ๆ แล้ว Ctrl + B- [แต่นั่นก็หมายถึงการได้รับการตั้งค่าใหม่อย่างชัดเจน นอกจากนี้โหมดบัฟเฟอร์เริ่มต้นคือ Emacs แต่คุณสามารถกำหนดให้เป็น Vi

ลองดู tmux นี่คือ multiplexer เทอร์มินัลที่ทันสมัยที่ยอดเยี่ยมจริงๆ นอกเหนือจากการทำงานกับบัฟเฟอร์คุณสามารถแยกหน้าจอในหลาย ๆ หน้าต่างเชื่อมต่อกับเซสชันเดียวกันจากหลายเทอร์มินัล ฯลฯ เพื่อความสะดวกสบายสูงสุดคุณสามารถทำให้มันเป็นเปลือกเข้าสู่ระบบของคุณถ้าคุณบอกมันว่าเปลือกจริงของคุณคืออะไร

ใน OpenBSD tmux ยังเป็นส่วนหนึ่งของระบบพื้นฐาน

ดู man page สำหรับ tmux สำหรับรายละเอียดเพิ่มเติม ดูภาพหน้าจอได้ที่http://tmux.sourceforge.net/


tmux ยอดเยี่ยมที่สุด!
เกบ

4

ใน emacs Mx เชลล์จัดการรุ่นก่อนหน้าเอาท์พุท คุณสามารถคัดลอกคำสั่งวางคำสั่งก่อนหน้านี้เอาท์พุทหรือส่วนใด ๆ ของบัฟเฟอร์เช่นบัฟเฟอร์ปกติ ฉันค่อนข้างมั่นใจว่าควรจะมีค่าเทียบเท่า


1
นั่นใกล้มากกับสิ่งที่ฉันต้องการ แต่ฉันต้องอยู่ใน Emacs หรือ Vim อยู่แล้ว +1
Sergio Acosta

ใช่อาจเป็นคำเริ่มต้นของคุณ + เชลล์ :) จากนั้นคุณจะต้องใช้ปุ่มนำทางข้อความตามปกติเป็นขั้นต่ำ ถ้าคุณได้เรียนรู้ปุ่มพิเศษมากขึ้นแล้วคุณสมบัติดังต่อไปนี้ Emacs'eshellสามารถเข้าถึงได้
imz - Ivan Zakharyaschev

1

ดังที่กล่าวไว้ที่นี่ Emacs ' eshellอาจเป็นคำ + เชลล์เริ่มต้นของคุณ :) จากนั้นคุณจะต้องใช้ปุ่มนำทางข้อความตามปกติเป็นขั้นต่ำ หากคุณเรียนรู้คีย์พิเศษเพิ่มเติมคุณeshellสามารถเข้าถึงคุณลักษณะต่อไปนี้ของ Emacs ได้:


1

ฉันใช้ urxvt (rxvt-unicode) และมีแพ็คเกจที่เรียกว่า urxvt-keyboard-select ซึ่งอาจเป็นสิ่งที่คุณต้องการหากคุณสามารถติดตั้ง urxvt ข้อมูลแพ็คเกจ Archlinux (ที่มีตัวชี้) อยู่ที่นี่:

https://aur.archlinux.org/packages.php?ID=39950

แหล่งต้นฉบับ: http://www.github.com/muennich/urxvt-perls


1

ลองใช้เสียงเรียกเข้าเป็น CLI ของคุณ? เพียงเลือกเอาท์พุทจากไม่กี่บรรทัดขึ้นไปแล้วแป๊บผ่าน:!


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