(Bağımsız ls
değişkenler olmadan) çıktısı satır adlarıyla dosya adlarını ayırıyor gibi görünüyor.
Kanıt:
ls | grep foo
beklendiği gibi çalışır vegrep
her bir dosya adına ayrı bir girdi satırı muamelesi yapar.ls > files.txt; vim files.txt
-> Vim'de her dosya ayrı bir satırda
Ve yine de terminalde, çıktıyı ls
güzel bir şekilde hizalanmış sütunlar yapmak için dosya adlarını boşluklarla ayırarak bir satıra birden fazla dosya koyar:
$ ls
a.txt b.txt c.txt
Benim sorum şu, bunu nasıl yapıyor?
Bir satırsonu 'sahte' yapmak için bazı özel kontrol karakterleri kullanıyor mu? Yoksa çıkışının ne zaman başka bir komuta aktarıldığını biliyor ve çıkışını bu durumda farklı biçimlendiriyor mu?
ls
, çıkışın bir terminal olup olmadığını belirlemek için kullanırisatty(3)
.