Почему «ls foo» создает файл, содержащий «foo»? [Дубликат]

16

Я удалил все файлы в каталоге, а затем запустил ls > foo в том же каталоге.

Запуск cat foo показывает, что вновь созданный файл «foo» содержит «foo». Почему файл «foo» не пуст? Когда ls выполняется, в каталоге еще нет файлов, верно?

    
задан David Faux 10.06.2012 в 06:26
источник

1 ответ

23

Директива командной строки > выполняется до выполнения команды ls . Оболочка должна быть готова к сохранению результата, который может вызвать команда ls , поэтому она должна создать и открыть файл для записи.

Когда ls выполняется оболочкой, файл foo существует и, следовательно, ls выводит «foo», что вы нашли в файле foo .

    
ответ дан dan_linder 10.06.2012 в 06:45
источник