$ ls
Desktop Mail db docs inet mail nytt pngs s words
Inst a.out disk1 films kde3.2 music pics prog test.c
$ gcc test.c
$ ./a.out
Desktop Mail db docs inet mail nytt pngs s words
Inst a.out disk1 films kde3.2 music pics prog test.c
$
$ ls
Desktop Mail db docs inet mail nytt pngs s words
Inst a.out disk1 films kde3.2 music pics prog test.c
$ gcc test.c
$ ./a.out
Desktop Mail db docs inet mail nytt pngs s words
Inst a.out disk1 films kde3.2 music pics prog test.c
ой, и правда стормозил c dup :) выходит, через трубку он на новой строке каждое имя выводит, а если без трубы, то подряд. Почему такое двоякое поведение?
понятно что нормальное поведение в системе где все ориентировано на обработку простых текстовых файлов это выводить по одному файлу в строке -- но видимо исторически решили что пользователю это не совсем удобно, поэтому ls проверяет терминал stdout или нет и меняет поведение.
Это чем же? Они отличаются только тем, что ls в интерактивном режиме красивости всякие может показывать, и тем, что результат его работы профильтровать другой программой сложнее будет.