(Bağımsız lsdeğişkenler olmadan) çıktısı satır adlarıyla dosya adlarını ayırıyor gibi görünüyor.
Kanıt:
ls | grep foobeklendiği gibi çalışır vegrepher 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ı lsgü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).