Đầu ra của ls
(không có đối số) xuất hiện để phân tách tên tệp với dấu ngắt dòng.
Chứng cớ:
ls | grep foo
hoạt động như mong đợi, vớigrep
việc coi mỗi tên tệp là một dòng đầu vào riêng biệt.ls > files.txt; vim files.txt
-> trong Vim, mỗi tệp nằm trên một dòng riêng biệt
Tuy nhiên, trong thiết bị đầu cuối, đầu ra của việc ls
đặt nhiều tệp trên một dòng, tách các tên tệp với khoảng trắng để tạo các cột được căn chỉnh độc đáo:
$ ls
a.txt b.txt c.txt
Vì vậy, câu hỏi của tôi là, làm thế nào để làm điều này?
Có phải nó đang sử dụng một số char kiểm soát đặc biệt để 'giả' một dòng mới? Hoặc nó có biết khi nào đầu ra của nó được dẫn đến một lệnh khác và định dạng đầu ra của nó khác trong trường hợp này không?
ls
sử dụng để xác định xem đầu ra có phải là đầu cuối hay khôngisatty(3)
.