Из-за порядка вещей.
Когда вы делаете:
cat abc > abc
>
- это оператор перенаправления вывода, когда оболочка видит это, она открывает файл в режиме усечения, используя флаг O_TRUNC
с open (2)
т.е. open ("abc", O_TRUNC)
, поэтому все, что было в файле, исчезнет. Обратите внимание, что это перенаправление сначала выполняется оболочкой перед запуском команды cat
.
Таким образом, когда выполняется команда cat abc
, файл abc
уже усечен, поэтому cat
найдет файл пустым.