Я нашел проблему. Привод представляет собой Seagate POS.
объясняется здесь http://www.linuxjournal.com/node/1005886
Когда оболочка видит перенаправление, сначала открывает соответствующие файлы, прежде чем выполнять какую-либо из задействованных команд. Таким образом, когда вы делаете:
foo file.txt | bar > file.txt
Перенаправление на file.txt заставляет его усекаться до запуска foo и может читать file.txt. На стороне примечания, поэтому вы не можете этого сделать:
sed 'blah' file.txt > file.txt
И почему sed имеет возможность редактирования на месте.
Наконец, выполните:
.. | cat > file.txt
- бесполезное использование cat, особенно, если вы пытаетесь читать из file.txt ранее.
Если вы хотите изменить файл на месте, a бесполезное использование cat . Возможно, вы сможете использовать трюки sed или awk с редактированием на месте.
> - перенаправитель (оператор), отправляющий вывод на что-то другое (ввод следующей команды, принтер ..)
В вашем случае вывод идет в файл file.txt, если это файл уже существует, если он не был создан.
> является оператором append, если file.txt уже существует, вывод добавляется к концу файл. если файл не существует, он создается, а вывод записывается в новый файл, такой же, как > (перенаправитель).
Вы можете использовать Vim в режиме Ex:
ex -sc '%!rev' -cx file.txt
% выбрать все строки ! выполнить команду x сохранить и закрыть