คัดลอกข้อความบรรทัดเดียวแบบยาวจากเทอร์มินัลด้วยการเปลี่ยนแปลงบรรทัดที่ไม่ต้องการ


14

locate ... | less เอาต์พุตเส้นทางยาวซึ่งแสดงเป็นหลายบรรทัดในเทอร์มินัลแม้ว่าจริง ๆ แล้วจะเป็นบรรทัดเดียว

ฉันจะคัดลอกเส้นทางจากท่าเรือโดยการเลือกข้อความด้วยเมาส์และกดปุ่มCtrl+ +Shift Cเมื่อฉันวางลงในไฟล์ข้อความฉันจะได้รับบรรทัดการเปลี่ยนแปลงที่ไม่พึงประสงค์ในข้อความตรงกับที่แสดงในเทอร์มินัล

แต่ฉันจำได้ว่าบางครั้งฉันสามารถคัดลอกผลลัพธ์ของเส้นทางที่ยาวโดยlocate ... | lessไม่แนะนำการเปลี่ยนแปลงบรรทัดที่ไม่ต้องการและบางครั้งฉันก็ไม่สามารถทำได้ ฉันไม่รู้ว่าฉันทำอะไรที่แตกต่าง

ดังนั้นฉันสงสัยว่าจะแน่ใจได้อย่างไรว่าปัญหาจะไม่เกิดขึ้น? ขอบคุณ!

ระบบปฏิบัติการของฉัน: Ubuntu 12.04

อาคารผู้โดยสารของฉัน: สถานี Gnome 3.4.1.1



แต่ Ctrl + Shift + C บางครั้งสามารถคัดลอกบรรทัดยาวโดยไม่คัดลอกบรรทัดการเปลี่ยนแปลง ฉันคิดว่ายังคงมีปัญหาแตกต่างกัน
ทิม

ดังนั้นคำถามของคุณเกี่ยวกับสาเหตุหรือวิธีการควบคุมพฤติกรรมนี้
slm

ใช่. ฉันคัดลอกข้อความออกจากเทอร์มินัลโดยใช้ปุ่มทางลัด (ซึ่งฉันคิดว่าเป็นวิธีที่เร็วที่สุด) ไม่ใช่โดยการนำทางเอาต์พุตไปยังไฟล์
ทิม

มีอะไรเพิ่มเติมเกี่ยวกับเมื่อพฤติกรรมเป็นวิธีหนึ่งกับอีกวิธีหนึ่งหรือไม่
slm

คำตอบ:


3

แทนที่จะคัดลอกสิ่งที่ปรากฏบนเทอร์มินัล (เฉพาะที่เหมาะกับหน้าจอด้วย) คัดลอกข้อความจริง ใช้xselหรือxclipยูทิลิตี้ภายนอก(ส่วนใหญ่มีคุณสมบัติเดียวกันฉันจะใช้ xsel ในคำตอบนี้) เพื่อคัดลอกข้อมูลจากหรือไปที่คลิปบอร์ด X หากต้องการคัดลอกไปยังคลิปบอร์ดให้ส่งเนื้อหาที่ต้องการไปยังอินพุตมาตรฐาน เมื่อวางจากคลิปบอร์ดเนื้อหาจะถูกเขียนไปยังเอาต์พุตมาตรฐาน

อย่างน้อยให้ใช้|คำสั่งเพื่อไพพ์เส้นจำนวนมากผ่านคำสั่ง เลื่อนไปยังบรรทัดแรกที่คุณต้องการที่จะทำหน้าที่ในการพิมพ์mmที่จะทำเครื่องหมายไว้เลื่อนไปที่บรรทัดสุดท้ายและพิมพ์และกด|mxsel -b Enterเครื่องหมายสองอันถูกกำหนดไว้ล่วงหน้า: ^สำหรับการเริ่มต้นไฟล์$สำหรับตอนท้ายของไฟล์ <|$xsel -bดังนั้นในการคัดลอกไฟล์ทั้งหมดใช้ ในการคัดลอกบรรทัดเดียวใช้งานและmm|mxsel -bEnter

ลบ-bตัวเลือกเพื่อคัดลอกไปที่ตัวเลือกหลักแทนคลิปบอร์ด


3

พฤติกรรมที่แท้จริงของสิ่งนี้คือ:

หากคุณอยู่ในlessและคุณมีไฟล์ที่มีเส้นยาวมากจากนั้นหากคุณเลื่อนไปที่บรรทัดยาวลงและเลื่อนกลับขึ้นมาคุณจะมีหลายบรรทัดเมื่อคัดลอกข้อความทั้งหมด หลังจากนั้นเมื่อคุณเลื่อนเส้นแยกลงที่ด้านล่างของเทอร์มินัลและเลื่อนเส้นขึ้นอีกครั้งการแบ่งบรรทัดจะถูกลบอีกครั้ง

สำหรับการสร้างภาพ:

ป้อนคำอธิบายรูปภาพที่นี่


2

คุณสามารถคัดลอกบรรทัดของเอาต์พุตโดยไม่ต้องขึ้นบรรทัดใหม่ (ตัวแบ่งบรรทัด) หากข้อความเป็นเอาต์พุตโดยตรงไปยังเทอร์มินัล
เทอร์มินัลสามารถติดตามจุดสิ้นสุดของสายที่แท้จริงได้

แต่ถ้าบรรทัดถูกเอาต์พุตโดยlessหรือpagerโปรแกรมที่คล้ายกันเทอร์มินัลจะไม่ทราบว่าขึ้นบรรทัดใหม่ เพจเจอร์ใช้เทอร์มินัลเป็นแบบเต็มหน้าจอของตัวละครและบอกเทอร์มินัลว่า "ใส่อักขระเหล่านี้ไว้ที่นั่น" และการทำงานเช่นเดียวกับการเลื่อน แต่สำหรับเทอร์มินัลไม่มีวิธีดูว่ามีการขึ้นบรรทัดใหม่


2
ฉันพบว่าบางครั้งฉันคัดลอกตัวแบ่งบรรทัดและบางครั้งฉันทำไม่ได้ มันไม่สอดคล้องกันตลอดเวลา วันนี้ทั้งคู่เกิดขึ้นเมื่อฉัน Ctrl-shift-c จากlocate <something> | lessในสองกรณีที่แตกต่างกัน
ทิม

น้อยกว่าวาดหน้าจอของตัวเองตามปกติเพื่อให้เทอร์มินัลไม่เห็นที่ปลายเส้น แต่สามารถกำหนดค่าน้อยกว่าไม่ทำอะไรเลยสำหรับไฟล์ขนาดสั้นที่เหมาะกับหน้าจอ ดังนั้นจึงเป็นไปได้ว่าความแตกต่างระหว่างเคสก็คือน้อยกว่าอยู่ในโหมดที่แตกต่างกัน (ดูที่echo $LESSอาจจะมีตัวเลือกที่น่าสนใจน้อยลง)
Volker Siegel

@ นี่เป็นสิ่งที่ฉันมานานหลายปีแล้ว คำตอบของ @ niknah อาจจะแนะนำสาเหตุหรือไม่ ฉันมักจะสลับระหว่าง-Sโหมดดังนั้นอาจทำให้แย่ลงเช่นกัน
Dan Gravell

1
@Tim: ฉันค้นพบบางสิ่งที่อาจจะจริงหรือไม่จริงกับ OS ของคุณ & รุ่นที่น้อยกว่า: พฤติกรรมการคัดลอกแตกต่างกันไปตามวิธีที่ฉันมาถึงที่เป้าหมายน้อย หากฉันกำลังค้นหาไปข้างหน้าสำเนาจะไม่รวมบรรทัดใหม่ของการตัดคำ (นั่นคือจะเป็นการคัดลอกเนื้อหาบรรทัดยาวดั้งเดิม) อย่างไรก็ตามหากฉันค้นหาย้อนหลังผ่านไฟล์เพื่อไปยังบรรทัดเป้าหมายการคัดลอกจะรวมบรรทัดใหม่และแยกบรรทัดยาวออกเป็นหลายบรรทัด ดูเหมือนจะสอดคล้องกันใน Mac และ Linux สำหรับฉัน
erik.weathers

2

ในlessหากคุณเลือกห่อข้อความหลายบรรทัดแล้วคัดลอกมันจะลงมาเป็นบรรทัดเดียว

หากคุณกดPgUpจากนั้นคัดลอกข้อความเดียวกันมันจะลงมาเป็นหลายบรรทัด

PgDnดีลูกศรก็ดี แต่PgUpทำให้ข้อความถูกแยกย่อย


นั่นไม่ใช่สาเหตุที่แท้จริงของพฤติกรรม ดูคำตอบของฉัน: unix.stackexchange.com/a/445590/105308
bobbel

0

หากเป้าหมายคือการคัดลอกและวางฉันใช้catแทนlessหรือmoreจากนั้นเทอร์มินัลจะจับภาพตามที่เป็นจริงมากกว่าที่จะแสดง

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