ผลลัพธ์ของls
(โดยไม่มีข้อโต้แย้ง) ปรากฏขึ้นเพื่อแยกชื่อไฟล์ด้วยการแยกบรรทัด
หลักฐาน:
ls | grep foo
ทำงานตามที่คาดไว้โดยให้grep
แต่ละชื่อไฟล์เป็นบรรทัดแยกของอินพุตls > files.txt; vim files.txt
-> ใน Vim แต่ละไฟล์อยู่บนบรรทัดแยกต่างหาก
และในเทอร์มินัลผลลัพธ์ของการls
วางหลายไฟล์ในหนึ่งบรรทัดโดยแยกชื่อไฟล์ด้วยช่องว่างเพื่อสร้างคอลัมน์ที่จัดเรียงอย่างสวยงาม:
$ ls
a.txt b.txt c.txt
ดังนั้นคำถามของฉันคือ ls ทำเช่นนี้ได้อย่างไร
มันใช้อักขระควบคุมพิเศษเพื่อสร้าง 'บรรทัดใหม่' หรือไม่? หรือมันรู้ว่าเมื่อมันถูกไพพ์ไปยังคำสั่งอื่นและจัดรูปแบบเอาท์พุทของมันแตกต่างกันในกรณีนี้?
ls
isatty(3)