Я новичок в UNIX. Я нахожу некоторые трудности с перенаправлением ввода / вывода.
ls -l >temp
cat temp
Вот почему временный файл отображается в списке и, кроме того, показывает 0 символов.
wc temp >temp
здесь вывод 0 0 0 temp. Почему строки, слова, символы равны 0.
0 0 0 temp
Пожалуйста, помогите мне понять это понятие.
Когда вы передаете вывод в файл, этот файл создается, команда запускается (поэтому ls выводит его как пустой файл, а wc считает символы в пустом файле), затем вывод добавляется в файл. .
... в таком порядке.
Поскольку ls читает все имена и сортирует их перед печатью чего-либо, и поскольку выходной файл создается до выполнения команды, в то время, когда ls проверяет размер temp, он пуст, поэтому он отображается в списке как пустой файл.
ls
temp
Когда wc читает файл, он пуст, поэтому он сообщает 0 символов в 0 словах на 0 строках и записывает эту информацию в файл после того, как он завершит чтение пустого файла.
wc
Вы не можете писать и читать из одного и того же файла одновременно.
Итак:
wc file > file # NOT WORKING # but this works: wc file > file.stats mv file.stats file # if you want that