คำถามติดแท็ก tee

30
แสดงคำสั่งของ Windows พร้อมท์เอาต์พุตและเปลี่ยนเส้นทางไปยังไฟล์
ฉันจะรันแอพพลิเคชั่นบรรทัดคำสั่งในพรอมต์คำสั่งของ Windows ได้อย่างไรและให้แสดงผลลัพธ์และเปลี่ยนเส้นทางไปยังไฟล์ในเวลาเดียวกันได้อย่างไร ตัวอย่างเช่นถ้าฉันจะเรียกใช้คำสั่งdir > test.txtนี้จะเปลี่ยนเส้นทางการส่งออกไปยังไฟล์ที่เรียกว่าtest.txtโดยไม่แสดงผลลัพธ์ ฉันจะเขียนคำสั่งเพื่อแสดงเอาต์พุตและเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ในพรอมต์คำสั่ง Windows ได้เช่นเดียวกับteeคำสั่งบน Unix ได้อย่างไร
371 batch-file  cmd  stdout  tee 

16
วิธีการทำซ้ำ sys.stdout ไปยังล็อกไฟล์
แก้ไข: เนื่องจากปรากฏว่าไม่มีวิธีแก้ปัญหาหรือฉันกำลังทำสิ่งที่ไม่ได้มาตรฐานซึ่งไม่มีใครรู้ - ฉันจะแก้ไขคำถามของฉันด้วยถาม: วิธีที่ดีที่สุดในการบันทึกให้สำเร็จคือเมื่อแอปหลามกำลังสร้าง การโทรของระบบจำนวนมากหรือไม่ แอพของฉันมีสองโหมด ในโหมดโต้ตอบฉันต้องการให้เอาต์พุตทั้งหมดไปที่หน้าจอเช่นเดียวกับไฟล์บันทึกรวมถึงเอาต์พุตจากการเรียกใช้ระบบ ในโหมด daemon เอาต์พุตทั้งหมดจะไปที่บันทึก โหมด Daemon ใช้งานได้ดีos.dup2()มาก ฉันไม่พบวิธีที่จะ "ที" เอาท์พุตทั้งหมดไปยังบันทึกในโหมดอินเทอร์แอคทีฟโดยไม่ต้องแก้ไขการเรียกแต่ละระบบและทุกครั้ง ในคำอื่น ๆ ที่ฉันต้องการการทำงานของบรรทัดคำสั่ง 'ที' สำหรับการส่งออกใด ๆ ที่สร้างขึ้นโดยแอพพลิเคหลาม, รวมทั้งการส่งออกเรียกระบบ เพื่อชี้แจง: หากต้องการเปลี่ยนเส้นทางเอาต์พุตทั้งหมดฉันทำสิ่งนี้และมันใช้งานได้ดี: # open our log file so = se = open("%s.log" % self.name, 'w', 0) # re-open stdout without buffering sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', …
149 python  tee 

6
บังคับให้ไลน์บัฟเฟอร์ของ stdout เมื่อส่งไปที่ที
โดยปกติจะstdoutเป็นบรรทัดบัฟเฟอร์ กล่าวอีกนัยหนึ่งคือตราบใดที่printfอาร์กิวเมนต์ของคุณจบลงด้วยการขึ้นบรรทัดใหม่คุณสามารถคาดหวังว่าจะพิมพ์บรรทัดได้ทันที teeนี้จะไม่ปรากฏการระงับเมื่อใช้ท่อเปลี่ยนเส้นทางไปยัง ฉันมีโปรแกรม C ++ aที่ส่งออกสตริงเสมอ - เทอร์มิ\nนนิ่งเป็นstdout. เมื่อรันด้วยตัวเอง ( ./a) ทุกอย่างจะพิมพ์ออกมาอย่างถูกต้องและในเวลาที่เหมาะสมตามที่คาด แต่ถ้าฉันท่อมันtee( ./a | tee output.txt) teeก็ไม่ได้พิมพ์อะไรจนกว่าจะจบการทำงานซึ่งขัดแย้งกับวัตถุประสงค์ของการใช้ ฉันรู้ว่าฉันสามารถแก้ไขได้โดยเพิ่มfflush(stdout)การดำเนินการหลังการพิมพ์แต่ละครั้งในโปรแกรม C ++ แต่มีวิธีที่ง่ายกว่านี้ไหม? มีคำสั่งที่ฉันสามารถรันได้ไหมตัวอย่างเช่นที่จะบังคับstdoutให้เป็นไลน์บัฟเฟอร์แม้ว่าจะใช้ไปป์
118 unix  buffer  pipe  stdout  tee 

1
linux tee ไม่ทำงานกับ python?
ฉันสร้างสคริปต์ python ซึ่งสื่อสารกับเว็บเซิร์ฟเวอร์โดยใช้ลูปที่ไม่มีที่สิ้นสุด ฉันต้องการบันทึกข้อมูลการสื่อสารทั้งหมดลงในไฟล์และตรวจสอบจากเทอร์มินัลในเวลาเดียวกัน ดังนั้นฉันจึงใช้คำสั่งทีเช่นนี้ python client.py | tee logfile อย่างไรก็ตามฉันไม่ได้รับอะไรเลยจากเทอร์มินัลหรือไฟล์บันทึก สคริปต์ python ทำงานได้ดี เกิดอะไรขึ้นที่นี่? ฉันพลาดอะไรไปรึเปล่า? คำแนะนำบางอย่างจะได้รับการชื่นชม ขอบคุณล่วงหน้า.
103 python  linux  tee 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.