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

ข้อผิดพลาดมาตรฐานคือเอาต์พุตสตรีมอื่นที่มักใช้โดยโปรแกรมเพื่อส่งออกข้อความแสดงข้อผิดพลาดหรือการวินิจฉัย

2
stderr มากกว่า ssh -t
สิ่งนี้จะส่งเอาต์พุตไปยัง STDERR แต่ไม่แพร่กระจายCtrl+ C(เช่นCtrl+ Cจะฆ่าsshแต่ไม่ใช่รีโมตsleep): $ ssh localhost 'sleep 100;echo foo ">&2"' สิ่งนี้แพร่กระจายCtrl+ C(เช่นCtrl+ Cจะฆ่าsshและห่างไกลsleep) แต่ส่ง STDERR ไปยัง STDOUT: $ ssh -tt localhost 'sleep 100;echo foo ">&2"' ฉันจะบังคับให้วินาทีส่งเอาต์พุต STDERR ไปยัง STDERR ในขณะที่ยังคงแพร่กระจายCtrl+ ได้Cอย่างไร พื้นหลัง GNU ใช้ขนาน 'SSH -tt' เพื่อเผยแพร่+Ctrl Cสิ่งนี้ทำให้สามารถฆ่างานที่กำลังรันอยู่ในระยะไกลได้ แต่ข้อมูลที่ส่งไปยัง STDERR ควรไปยัง STDERR ต่อไปเมื่อสิ้นสุดการรับ

3
อะไรคือความแตกต่างระหว่าง `>> / dev / stderr` (ด้วยพื้นที่สีขาว) และ`> & 2`
ในทุบตี ฉันมีปัญหาในการพิจารณาสิ่งที่ฉันควรใช้? สคริปต์ของฉันทั้งหมดใช้ ">> / dev / stderr" ที่ bash prompt, ถ้าฉันลอง: echo test >>/dev/stderrwork echo test >> /dev/stderrwork echo test >/dev/stderrworks echo test > /dev/stderrworks echo test >>&2ล้มเหลว! echo test >> &2ล้มเหลว! echo test >&2ทำงาน echo test > &2ล้มเหลว! ฉันยินดีที่จะเปลี่ยนสคริปต์>&2ทั้งหมดเป็น ดูเหมือนว่าจะมีผลกระทบอย่างมากกับ ssh (หลังจากsu SomeUser) ที่>>/dev/stderrจะไม่ทำงานเลย (ปฏิเสธสิทธิ์) เพียง>&2จะทำงาน

3
ส่งเอาต์พุตไปที่ / dev / stderr vs. > & 2
ในสคริปต์ข้อผิดพลาดมักจะถูกส่งไปยัง file descriptor 2 ด้วย&2เช่น: echo "error" >&2 บางครั้ง/dev/stderrใช้แทน: echo "error" > /dev/stderr มองไปที่/dev/stderrฉันเห็นว่ามันเป็นเพียง symlink ไป/proc/self/fd/2ซึ่งในทางกลับกันคือ symlink ไปที่/dev/pts/5(ใน terminal ปัจจุบันของฉัน) ดูเหมือนซับซ้อนกว่าเล็กน้อย มีเหตุผลบางอย่างที่อยู่เบื้องหลังหรือไม่ มีการใช้/dev/stderrและ&2เทียบเท่า? เป็นที่ชื่นชอบมากกว่าคนอื่น ๆ ?

1
`นักเทียบท่าบันทึก foo | less` ไม่สามารถค้นหาหรือเลื่อนได้ แต่ `loger log foo 2> & 1 | less` คือ
การใช้ข้อความใดข้อความหนึ่งให้อ่านได้ แต่เฉพาะกับการเปลี่ยนเส้นทาง stderr สามารถหนึ่งเลื่อนหรือพิมพ์ / somepattern และได้รับการแข่งขัน หากไม่มีการค้นหาจะให้ "ไม่มีอะไรให้ค้นหา (กด RETURN)" และคอลัมน์ของ ~ ให้ stderr และ stdout ไม่เหมือนกัน แต่ทำไมแสดงน้อยกว่าพวกเขาเหมือนกันจนกว่าฉันจะเริ่มทำอะไรน้อย นี่อาจเป็นสิ่งที่หลายหน้าต่างแปลก ๆ ที่ฉันไม่เข้าใจ คิด?
10 pipe  less  stdout  stderr 

1
แสดง STDOUT ก่อน STDERR หรือไม่
ฉันใหม่เพื่อทุบตีและฉันไม่สามารถให้ชีวิตของฉันคิดออกวิธีการเรียกใช้คำสั่งบางอย่างสมมติ./fffและพิมพ์ stdouts ปกติก่อน stderr (ฉันสับสนเกี่ยวกับความหมายของตัวเอง) ตัวอย่างเช่น $ printf "I am a\ndrill\n" > fff; $ cat fff nofile fff nofile fff I am a drill cat: nofile: No such file or directory I am a drill cat: nofile: No such file or directory I am a drill ต้องการพิมพ์เช่น: I am a …

2
เมื่อใดที่ใช้สตรีมข้อผิดพลาดมาตรฐานในแอปพลิเคชันบรรทัดคำสั่ง
มีแนวทางที่จะใช้ข้อผิดพลาดเมื่อเขียนแอปพลิเคชันบรรทัดคำสั่งหรือไม่ ด้วยความประหลาดใจของฉันฉันไม่พบอะไรเลยเมื่อ googling โดยเฉพาะอย่างยิ่งคำถามที่ฉันกังวลตอนนี้คือว่าจะใช้stdoutหรือstderrเมื่อผู้ใช้เรียกโปรแกรมด้วยข้อโต้แย้งที่ผิดกฎหมาย อย่างไรก็ตามคำตอบที่ครอบคลุมมากขึ้นได้รับการชื่นชมอย่างมากเพราะนี่จะไม่เป็นกรณีเดียวที่จำเป็นต้องมีกฎที่ชัดเจนในการเขียนโปรแกรมที่ทำงานในลักษณะที่ผู้ใช้คาดหวัง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.