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

15
วิธีการพิมพ์ไปยัง stderr ใน Python?
มีหลายวิธีในการเขียนถึง stderr: # Note: this first one does not work in Python 3 print >> sys.stderr, "spam" sys.stderr.write("spam\n") os.write(2, b"spam\n") from __future__ import print_function print("spam", file=sys.stderr) ที่ดูเหมือนว่าจะขัดแย้งเซนของงูใหญ่ # 13 †ดังนั้นสิ่งที่แตกต่างกันที่นี่และจะมีข้อดีหรือข้อเสียในทางเดียวหรืออื่น ๆ หรือไม่ ควรใช้วิธีใด † ควรมีอย่างใดอย่างหนึ่ง - และดีกว่าเพียงคนเดียว - วิธีที่ชัดเจนที่จะทำ

11
ฉันจะไปป์ stderr ได้อย่างไรและไม่ใช่ stdout?
ผมมีโปรแกรมที่เขียนข้อมูลไปยังstdoutและstderrและฉันต้องgrepผ่านอะไรมาเพื่อstderrขณะที่ไม่คำนึงถึงstdout แน่นอนฉันสามารถทำได้ใน 2 ขั้นตอน: command > /dev/null 2> temp.file grep 'something' temp.file แต่ฉันต้องการที่จะสามารถทำได้โดยไม่ต้องไฟล์ temp มีเทคนิคการวางท่อแบบอัจฉริยะหรือไม่?
981 bash  grep  stdout  pipe  stderr 

10
สับสนเกี่ยวกับ stdin, stdout และ stderr หรือไม่
ฉันค่อนข้างสับสนกับวัตถุประสงค์ของไฟล์ทั้งสามนี้ หากความเข้าใจของฉันถูกต้องstdinเป็นไฟล์ที่โปรแกรมเขียนลงในคำร้องขอเพื่อเรียกใช้งานในกระบวนการstdoutเป็นไฟล์ที่เคอร์เนลเขียนเอาต์พุตและกระบวนการที่ร้องขอให้เข้าถึงข้อมูลจากและstderrเป็นไฟล์ที่เข้าสู่ ซึ่งข้อยกเว้นทั้งหมดจะถูกป้อน เมื่อเปิดไฟล์เหล่านี้เพื่อตรวจสอบว่าสิ่งเหล่านี้เกิดขึ้นจริงหรือไม่ฉันไม่พบสิ่งใดเลยที่จะแนะนำ! สิ่งที่ฉันอยากรู้คือจุดประสงค์ของไฟล์เหล่านี้คืออะไรตอบคำถามด้วยศัพท์แสงทางเทคโนโลยีน้อยมาก!
230 linux  stdout  stdin  stderr 

18
วิธีเก็บข้อผิดพลาดมาตรฐานในตัวแปร
สมมติว่าฉันมีสคริปต์ดังต่อไปนี้: useless.sh echo "This Is Error" 1>&2 echo "This Is Output" และฉันมีเชลล์สคริปต์อีกอันหนึ่ง: alsoUseless.sh ./useless.sh | sed 's/Output/Useless/' ฉันต้องการจับภาพ "นี่คือข้อผิดพลาด" หรือ stderr อื่น ๆ จาก useless.sh ไปเป็นตัวแปร ลองเรียกมันว่า ERROR สังเกตว่าฉันกำลังใช้ stdout สำหรับบางสิ่ง ฉันต้องการใช้ stdout ต่อไปดังนั้นการเปลี่ยนเส้นทาง stderr ไปยัง stdout จะไม่เป็นประโยชน์ในกรณีนี้ โดยพื้นฐานแล้วฉันต้องการจะทำ ./useless.sh 2> $ERROR | ... แต่เห็นได้ชัดว่าใช้งานไม่ได้ ฉันก็รู้ว่าฉันสามารถทำได้ ./useless.sh 2> /tmp/Error ERROR=`cat …

2
ท่อทั้ง stdout และ stderr ในทุบตี?
ดูเหมือนว่าเวอร์ชั่นใหม่ของ bash จะมี&>โอเปอเรเตอร์ซึ่ง (ถ้าฉันเข้าใจถูกต้อง) ให้เปลี่ยนเส้นทางทั้ง stdout และ stderr ไปที่ไฟล์ (ต่อ&>>ท้ายไฟล์แทนเช่นเอเดรียนชี้แจง) อะไรคือวิธีที่ง่ายที่สุดในการบรรลุสิ่งเดียวกัน แต่แทนที่จะส่งไปยังคำสั่งอื่น ตัวอย่างเช่นในบรรทัดนี้: cmd-doesnt-respect-difference-between-stdout-and-stderr | grep -i SomeError ฉันต้องการให้ grep จับคู่กับเนื้อหาทั้งใน stdout และ stderr (มีประสิทธิภาพรวมเข้ากับสตรีมเดียว) หมายเหตุ : คำถามนี้ถามเกี่ยวกับการวางท่อไม่ใช่การเปลี่ยนเส้นทาง - ดังนั้นจึงไม่ใช่คำถามที่ซ้ำกันซึ่งปัจจุบันถูกทำเครื่องหมายว่าซ้ำซ้อน
156 bash  stdout  stderr  piping 

5
ด้วยการทุบตีฉันจะท่อข้อผิดพลาดมาตรฐานไปยังกระบวนการอื่นได้อย่างไร
เป็นที่ทราบกันดีว่าจะวางท่อส่งออกมาตรฐานของกระบวนการไปยังอินพุตมาตรฐานอื่นของกระบวนการได้อย่างไร: proc1 | proc2 แต่ถ้าฉันต้องการส่งข้อผิดพลาดมาตรฐานของ proc1 ไปยัง proc2 และปล่อยให้เอาต์พุตมาตรฐานไปยังตำแหน่งปัจจุบัน คุณคิดว่าbashจะมีคำสั่งตามบรรทัดของ: proc1 2| proc2 แต่อนิจจาไม่ มีวิธีใดบ้างที่จะทำเช่นนี้?
140 bash  pipe  stderr 

1
วิธีเปลี่ยนเส้นทาง stderr เป็น null ใน cmd.exe
ฉันมีแอปพลิเคชันที่บันทึกเสียงรบกวนจำนวนมากไปยัง stderr และทำให้การทำงานของแอปพลิเคชันช้าลงจริงๆ ฉันต้องการเปลี่ยนเส้นทางผลลัพธ์นั้นเป็น null เป็นไปได้กับ cmd.exe หรือไม่?
122 redirect  stderr  cmd 

6
ฉันจะพิมพ์ไปที่ stderr ใน C ได้อย่างไร?
ใน C, การพิมพ์ที่ stdout เป็นเรื่องง่ายด้วยจากprintfstdio.h อย่างไรก็ตามสามารถพิมพ์ไปยัง stderr ได้อย่างไร? เราสามารถใช้fprintfเพื่อให้บรรลุได้อย่างชัดเจน แต่ไวยากรณ์ของมันดูแปลก ๆ บางทีเราอาจใช้printfพิมพ์ลง stderr?
121 c  printf  stderr 


3
ความแตกต่างระหว่าง $ stdout และ STDOUT ใน Ruby
ใน Ruby ความแตกต่างระหว่าง$stdout(นำหน้าด้วยเครื่องหมายดอลลาร์) กับSTDOUT(ตัวพิมพ์ใหญ่ทั้งหมด) คืออะไร? เมื่อทำการเปลี่ยนทิศทางเอาต์พุตควรใช้ข้อใดและเพราะเหตุใด เดียวกันจะไปสำหรับและ$stderrSTDERR แก้ไข:เพียงแค่พบคำถามที่เกี่ยวข้อง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.