วิธีเขียนเนื้อหาเทอร์มินัลลงในไฟล์


13

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

ฉันต้องการเขียนเนื้อหาของเทอร์มินัลนั้นลงในไฟล์เหมือนทุก ๆ วินาที

ฉันต้องทำอย่างไร? โดยการเปิดคอนโซลที่ 2 และใช้คำสั่งบางอย่าง? ไม่สามารถทำให้มันทำงานกับคำสั่ง setterm -dump ได้


1
หืมแอปพลิเคชั่นนี้คืออะไร? หากคุณยังไม่ได้ตรวจสอบอย่างดีคุณควรตรวจสอบให้แน่ใจว่าแอปพลิเคชันมีตัวเลือกในการบันทึก ouput ที่ไหนสักแห่ง
Severo Raz

ตรวจสอบว่า มันไม่ได้ มิฉะนั้นฉันจะไม่มีปัญหานี้ โปรแกรมคือ live-f1, launchpad.net/live-f1
Gustav

คำตอบ:


16

คุณสามารถไพพ์เอาท์พุทของคุณไปยังteeโปรแกรม ( คำอธิบาย ):

my_program ... | tee my_program.log

นี่จะแสดง ouput บนเทอร์มินัล แต่ยังเขียนลงในไฟล์ my_program.log


ผลลัพธ์เดียวกันเช่นเดียวกับคำตอบที่ 1 : /
Gustav

1
ภาพหน้าจอที่คุณโพสต์ดูเหมือนว่าจะมีลำดับการหลีกเลี่ยงเทอร์มินัลจำนวนมากอยู่ในนั้น จากข้อมูล Launchpad มันใช้ ncurses (ฉันดาวน์โหลดซอร์สด้วยbzr branch lp:live-f1แล้วก็ไปดูในREADME) คุณสามารถรันโปรแกรมโดยไม่มีสีโดยการตั้งค่าTERMเป็น dumb ( export TERM=dumb) ได้หรือไม่? แหล่งที่มายังมีTODOไฟล์โดยสังเกตในสิ่งที่อยากได้เพื่อเก็บประวัติของไดรเวอร์ บางทีคุณสามารถติดต่อนักพัฒนาซอฟต์แวร์เพื่อดูว่าพวกเขากำลังวางแผนอะไรหรือถ้าพวกเขามีวิธีให้คุณบันทึกผลลัพธ์
steabert

12

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

ls > list.txt

>ผู้ประกอบการเปลี่ยนเส้นทางการส่งออกของคุณตามความต้องการของคุณ


ขอบคุณมันใช้งานได้ แต่บางส่วน เนื้อหาควรเป็น HTML แต่เมื่อฉันเปิดไฟล์มันเป็นแบบนี้ (snip จากไฟล์): VETTEL [21G (B [m [39; 49m. ชื่อของโปรแกรมคือ "live-f1" live-f1> live_f1_dump) log
Gustav

@Gustav คุณหมายถึงว่าในคอนโซลมันพิมพ์ html และในไฟล์บรรทัดข้างต้น?
topless

ใช่. นี่คือสิ่งที่ฉันได้รับเมื่อฉันเรียกใช้คำสั่งข้อเสนอแนะของคุณ: upload.ee/image/1223166/ss_01.png เป้าหมายของฉันคือการรับตำแหน่งผู้ขับขี่ Formula 1 จากฟีด live-f1 ไปเป็นไฟล์ ผมได้รับมันทำงานปีที่แล้วโดยใช้โปรแกรมถ่ายทอดสด-F1 ใน terminal 1 แล้วยิงขึ้นมินัล 2 และใช้คำสั่งบางสิ่งที่จับหน้าจอมินัล 1 และบันทึกไว้เป็นไฟล์ (คัดลอกจากแฟ้มปีที่ผ่านมา: upload.ee/download/1223347 /0b6545ce227661452c8/html.log ) คำสั่งเป็นแบบนั้น: tty "ตัวชี้ terminal ตัวที่หนึ่ง" "ชื่อไฟล์" เป็นไปได้ว่ามันเป็นอย่างอื่นที่ "tty" สิ่งที่ฉันใช้สำหรับที่
กุสตาฟ

2

ลองใช้scriptคำสั่ง แต่น่าเสียดายที่มันทำให้ตัวควบคุมจำนวนมาก gobbledegook ในการถอดเสียง อย่างไรก็ตามหากคุณเห็นลิงค์นี้ที่เว็บไซต์ NCSSM CSคุณจะพบวิธีแก้ไขปัญหาที่ไม่สมบูรณ์ แต่ค่อนข้างดี

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