Перейти к содержимому

Пример кота Linux

3

Не могли бы вы объяснить, почему: «cat <file.txt> file.txt» делает file.txt пустым?

1 462 просмотра
studiohack спросил 16 лет назад
S 11 294

2 ответа

16

Поскольку он открывает и усекает файл перед чтением данных - это оболочка, перенаправления обрабатываются оболочкой еще до запуска cat.

Michael Krelin - hacker ответил 16 лет назад
M 586
13

>Перенаправление происходит первым и открывает file.txtдля записи, который очищает любой существующий контент.

Этот ответ несколько вводит в заблуждение - @ хакер более точен. На моих системах перенаправления обрабатываются в порядке спецификации. То есть &lt; происходит сначала, а затем &gt;, но последнее открывается не просто «для записи», а * с усечением * (O_TRUNC), то есть то, что« очищает существующее содержимое ». @hacker прав, это происходит еще до того, как cat (1) будет выполнена.

pilcrow · 16 лет назад · 0
Gregory Pakosz ответил 16 лет назад
G 548