How to redirect stderr and stdout to a file

Posted In Shell - By Tum. On Saturday, March 31st, 2012 With 0 Comments

bash
การจัดการ output ใน linux ไม่ใช่เรื่องที่ไกลตัว เนื่องจากบ่อยครั้งที่เราจะเห็นคำสั่งต่างๆ มีการ redirect error และ output ไปยังไฟล์ เพื่อทำการจัดเก็บและสามารถนำไปตรวจสอบได้ภายหลัง โดยเฉพาะอย่างยิ่งคำสั่งหรือโปรแกรมที่เมื่อรันแล้วมีการแสดงข้อมูลมากทำให้เราไม่สามารถอ่านได้ทันจำเป็นต้องทำการ redirect ไปเก็บไว้ยังไฟล์ เพื่อที่เราจะสามารถเปิดอ่านข้อมูลของการทำงานได้อย่างครบถ้วน บทความนี้เราจะมาพูดถึงเรื่องของการจัดการ output และ error ในขณะที่ได้มีการรันคำสั่ง

Bash shell ของ Linux จะมีรูปแบบการรับและส่งข้อมูลด้วยกัน 3 ประเภทด้วยกัน คือ

  1. stdin (standard input) – เป็นการรับข้อมูลของโปรแกรม เช่นการรับข้อมูลผ่าน keyboard
  2. stdout (standard output) – ส่งข้อมูลออกหน้าจอ
  3. stderr (standard error) – ส่งข้อมูล error ออกหน้าจอ

ทั้ง 3 ประเภท สามารถแทนด้วยตัวเลขได้ดังนี้

  • 0 = stdin (standard input)
  • 1 = stdout (standard output)
  • 2 = stderr (standard error)

* สำหรับการ redirect ทั้ง stdout และ stderr เราจะใช้ตัว “&” ซึ่ง operator ตัวนี้สามารถใช้ได้ตั้งแต่ Bash 4 เป็นต้นไป

ตัวอย่างการใช้งาน

  • ต้องการ redirect error message ไปยังไฟล์ error.log ในขณะที่รันโปรแกรมหรือคำสั่ง
  • ต้องการ redirect stderr ไปยัง stdout
  • ต้องการ redirect error message ไปยังไฟล์ error.log และ output ไปยังไฟล์ output.log ในขณะที่รันโปรแกรมหรือคำสั่ง
  • ต้องการ redirect error message และ output ไปยังไฟล์ out.log ในขณะที่รันโปรแกรมหรือคำสั่ง

    หรือ

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*