จะคัดลอกข้อความหลายหน้าจากเครื่องเทอร์มินัลไปยังคลิปบอร์ดได้อย่างไร?


13

ฉันกำลังดูman page สำหรับซอฟต์แวร์บนเครื่องของฉันและฉันต้องการคัดลอกข้อความบางส่วน แต่ข้อความนั้นมีมากกว่าหนึ่งหน้า ฉันรู้ว่าฉันสามารถส่งออกไปยังไฟล์โดยตรงและใช้ซอฟต์แวร์ที่ใช้ UI เช่นgeditเพื่อคัดลอกข้อความที่ฉันต้องการ แต่สิ่งนี้สามารถทำได้จากสถานี?

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

ฉันหวังว่าฉันจะได้รับคำตอบทั่วไป แต่ฉันใช้ Ubuntu

คำตอบ:


9

ฉันมีแนวคิดที่ไม่สมบูรณ์ แต่อาจมีประโยชน์

วิธีที่ 1 - มูส

ใช้แถบเลื่อนเทอร์มินัล

รายละเอียด (สมมติว่าxtermจำเป็นต้องทำการปรับเปลี่ยนสำหรับเทอร์มินัลอื่น)

  1. เปิดใช้งานแถบเลื่อนหากยังไม่ได้เปิดใช้งาน (ในxtermคืออยู่ในเมนูที่คุณได้รับด้วย Ctrl + Button2)
  2. ตรวจสอบให้แน่ใจlessว่าไม่ได้ทำงานด้วย-cตัวเลือก (ฉันเปิดใช้งานตัวเลือกนี้ในLESSตัวแปรสภาพแวดล้อมของฉันแต่มันรบกวนสิ่งที่เรากำลังจะทำดังนั้นฉันต้องพิมพ์-cเพื่อปิด)
  3. ใช้lessคำสั่งใดก็ได้ที่คุณต้องการเลื่อนขึ้นหรือลงเพื่อให้บรรทัดแรกที่คุณต้องการคัดลอกปรากฏบนหน้าจอ
  4. triple-Button1 บรรทัดเริ่มต้นที่คุณเลือกเพื่อเลือก
  5. เลื่อนลงจนบรรทัดสุดท้ายที่คุณต้องการคัดลอกปรากฏบนหน้าจอ คุณต้องใช้เฉพาะ space bar หรือปุ่มเลื่อนแบบง่าย ๆ เท่านั้นไม่ใช่การ/ค้นหาจุดที่นี่คือlessการส่งบรรทัดทั้งหมดไปยังเทอร์มินัลเพื่อให้สามารถคัดลอกได้
  6. Button3 บนเส้นท้ายที่คุณเลือกเพื่อขยายการเลือก

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

วิธีที่ 2 - ไม่มีเมสซี่

ใช้|คำสั่ง (ท่อ) ในการส่งข้อความไปยังlessxclip

รายละเอียด:

  1. ใช้lessคำสั่งใดก็ได้ที่คุณต้องการเลื่อนขึ้นหรือลงเพื่อวางตำแหน่งบรรทัดสุดท้ายที่คุณต้องการคัดลอกที่ด้านบนของหน้าจอ คุณสามารถข้ามขั้นตอนนี้และขั้นตอนถัดไปหากคุณต้องการคัดลอกไปจนสุด
  2. ใช้mคำสั่ง (เครื่องหมาย) เพื่อตั้งเครื่องหมายที่ตำแหน่งสิ้นสุดที่คุณเลือก เครื่องหมายเป็นคุณลักษณะที่มีประโยชน์ด้วยตัวเองและคุณควรรู้จักเครื่องหมายเหล่านั้นแล้วviแต่ในกรณีที่คุณไม่ได้ทำ: mxตั้งเครื่องหมายซึ่งxตัวอักษรสามารถเป็นตัวใดตัวหนึ่งได้แล้ว'xส่งคืนคุณในภายหลัง
  3. ตอนนี้เลื่อนขึ้นเพื่อให้บรรทัดแรกที่คุณต้องการคัดลอกอยู่ที่ด้านบนของหน้าจอ
  4. ใช้คำสั่งไพพ์: |xซึ่งจะแสดงพรอมต์ให้คุณป้อนคำสั่งภายนอก xควรจะเป็นจดหมายฉบับเดียวกันเครื่องหมายที่คุณใช้ในmคำสั่งหรือ$สำหรับ "ไปตลอดทางจนถึงที่สุด" พิมพ์ที่xclipนั่น

g|$xclipEnterกรณีที่เรียบง่ายของการคัดลอกหน้าคนทั้งลด

คำเตือน (นั่นคือสิ่งที่น่ากลัวที่เพิ่งเกิดขึ้นกับฉัน ): xclipจะมีพื้นหลังกึ่งทำงานโดยเป็นส่วนหนึ่งของlessกลุ่มกระบวนการ หากคุณพยายามระงับlessให้เริ่มงานใหม่ในเทอร์มินัลเดียวกันและวางลงในงานนั้นจะไม่ทำงาน จากนั้นเมื่อคุณทำงานเบื้องหน้าman/ lessงานทันใดนั้นการวางจะผ่านไป ฉันคิดว่านี่น่าจะเป็นxclipข้อผิดพลาด ...


2
ผู้ใช้ Mac สามารถใช้ pbcopy ได้หากไม่ได้ติดตั้ง xclip
Mike Hedman

3

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


2

ตามที่ระบุไว้บน Nixcraft :

  1. รับxclip:

    sudo apt-get install xclip 
    

    หรือ

    yum install xclip
    

    บนระบบที่ใช้ RPM

  2. man man | your_magic_here | xclip -selection clipboard
  3. Ctrl+ Vกับเนื้อหาในหัวใจของคุณ คุณสามารถลบ-selection clipboardเพื่อเลือกการวางโดยคลิกเมาส์กลางแทน (เรียกว่าการเลือกหลัก)

โปรดทราบว่าyour_magic_hereเป็นตัวยึดสำหรับตัวกรองข้อความ ( sed/ awk/ perl/ ... ) ที่เลือกส่วนของหน้าคนที่ต้องการตามกรณีการใช้งานเฉพาะของคุณซึ่งคุณไม่ได้อธิบายดังนั้นฉันกลัวว่าฉันจะไม่เจาะจง ด้วยตัวอย่าง


นอกจากxclipนั้นยังมีxsel(และอื่น ๆ ) คุณอาจต้องการดูการอภิปรายในคลิปบอร์ดนี้
เตอร์

มีวิธีการใช้เมาส์หรือไม่? เพื่อที่ว่าเมื่อเมาส์ไปถึงจุดสิ้นสุดของหน้าหน้าจะเลื่อน
มูฮัมหมัด Gelbana

0

ขึ้นอยู่กับโปรแกรมเทอร์มินัลของคุณ แต่โปรแกรมเทอร์มินัลส่วนใหญ่ไม่มีฟังก์ชันในการบันทึกข้อความที่เลือก

LXTerminal, uxterm, Konsole และเทอร์มินัล GNOME ดูเหมือนจะไม่มีคุณสมบัตินี้ แต่อาจมีบางอย่างที่มีอยู่ ดูโครงสร้างเมนูของโปรแกรมเทอร์มินัลและอาจมีบางอย่างเช่น "บันทึกรายการที่เลือก"


0

สมมติว่าคุณใช้gnome-terminalและlessเป็นเพจเจอร์สำหรับmanคุณ:

  • เรียกใช้lessสำหรับmanกับ-Xกุญแจสำคัญในการสลับหน้าจอปิดการใช้งานตัวอย่างเช่น:LESS=-X man less

สิ่งนี้จะอนุญาตให้ผนวกเอาต์พุตmanไปยังบัฟเฟอร์ประวัติเทอร์มินัลอีมูเลเตอร์ ดูคำตอบนี้สำหรับรายละเอียดเพิ่มเติม/unix//a/38638/87918

  • เลื่อนไปที่หน้าสุดท้ายของข้อความที่คุณต้องการคัดลอก (ข้อความที่เลื่อนทั้งหมดจะถูกบันทึกในบัฟเฟอร์ประวัติขณะเลื่อน)
  • เลือกข้อความด้วยเมาส์gnome-terminalตั้งแต่ต้นจนถึงหน้าแรกลากเมาส์ไปที่ขอบด้านบนของหน้าต่าง กระบวนการรายละเอียดของการเลือกข้อความอธิบายไว้ที่นี่ :

สิ่งนี้ไม่ทำงานใน Gnome Terminal แต่สิ่งที่คุณต้องทำคือเริ่มต้นการเลือกด้วยปุ่มซ้ายของเมาส์และในขณะที่ทำให้ลากเคอร์เซอร์ของเมาส์ไปที่ขอบของหน้าต่าง (หรือนอกหน้าต่าง) GT จะเลื่อนสิ่งต่าง ๆ เพื่อคุณขยายการเลือกในกระบวนการ การเลื่อนของ GT นั้นรวดเร็วพอสมควรซึ่งเป็นกระบวนการที่สะดวกและใช้งานง่ายพอสมควรซึ่งดีกว่าของ xterm

  • ตอนนี้คุณได้เลือกข้อความ (หน้าที่คุณต้องการ) ซึ่งคุณสามารถคัดลอกและวางได้ทุกที่ที่คุณต้องการ

0

ใช้ คำสั่ง (ไปป์) น้อยลงโดยมีเครื่องหมายตามที่ได้รับการตอบโดย Wumpus Q. Wumbley ในตัวเลือกที่สองของเขาแต่เปลี่ยนเส้นทางโดยใช้ tee เพื่อต่อท้ายไฟล์ที่มีอยู่แล้วเพื่อจุดประสงค์:

|tee >> ~/helpaggregator.txt

ฉันขอแนะนำไฟล์ที่มีอยู่เป็นหนึ่งมักจะต้องปรึกษาเมื่อเรียนรู้คำสั่งใหม่และชอบที่จะทำให้พวกเขารวม นอกจากนี้การเติมแท็บก็มีประโยชน์

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