การเขียนโปรแกรมเชลล์ (3)
การเปลี่ยนแปลงทิศทางของช่องทางการสื่อสาร I/O redirection
ในการสื่อสารระหว่าง terminal กับตัว host ของคอมพิวเตอร์จะมีช่องทางที่ใช้กันอยู่ 3 ช่องทางซึ่งก็คือ STDIN (ช่องทางรับข้อมูลมาตรฐาน), STDOUT (ช่องทางแสดงผลลัพธ์มาตรฐาน) และ STDERR (ช่องทางแสดงผลลัพธ์ที่เป็นข้อผิดพลาดมาตรฐาน)
ที่กล่าวว่าเป็นการสื่อสารระหว่างเทอร์มินัลกับตัวโฮสต์นั้น เนื่องจากในสมัยก่อนจากการออกแบบยูนิกซ์ในสมัยที่เครื่อง PDP-11 กำลังรุ่งเรือง การจะใช้งานคอมพิวเตอร์แบบนี้จะต้องทำการติดต่อผ่านเครื่อง teletype ซึ่งมีลักษณะคล้ายเครื่อง
พิมพ์ดีดไฟฟ้า (หากใครมีหนังสือ Road Ahead ก็สามารถเห็นภาพของบิลล์ เกตส์ กับ พอลล์ อัลเลน กำลังเล่นเครื่อง teletype ที่ว่านี้ได้) ตัว teletype นี้เป็นเครื่องมือที่เรียกว่า "เทอร์มินัล" แบบแรกๆ ดังนั้นจึงเป็นไปได้ว่าช่องทางรับข้อมูลมาตรฐานอาจไม่ใช่คีย์บอร์ดที่ต่ออยู่กับตัวซีพียู หรือช่องทางแสดงผลลัพธ์มาตรฐานอาจไม่ใช่มอนิเตอร์ที่ต่ออยู่กับตัวซีพียูดังที่คุณเห็นอยู่ทั่วไปจากเครื่องคอมพิวเตอร์ในปัจจุบัน และแน่นอนว่าไม่ได้มีการต่อเทอร์มินัลเข้ากับโฮสต์ เพียงเครื่องเดียวระบบยูนิกซ์จะต้องถูกออกแบบให้สามารถจัดการกับเทอร์มินัลจำนวนนับร้อยและ
มีรูปแบบการใช้งานที่แตกต่างกันได้ (เทอร์มินัลแต่ละเครื่องอาจมีรูปแบบการใช้งานที่ต่างกัน ตามยี่ห้อของผู้ผลิต -- เช่นปุ่มลบตัวอักษร อาจวางไว้ที่ตำแหน่งต่างกัน หรือเทอร์มินัลบางเครื่องก็อาจไม่มีปุ่มลบตัวอักษรนี้เลยก็ได้ ต้องใช้ปุ่ม
ฟังก์ชั่นพิเศษแทน) การแสดงผลลัพธ์ออกมาอาจไม่ได้แสดงผ่านทางจอภาพ แต่เป็น
กลายเป็นการพิมพ์ผลลัพธ์ผ่านทางเครื่องพิมพ์ออกมาแทน นอกจากนี้ช่องทางการสื่อสารทั้งสามช่องทาง