перенаправление вывода в UNIX - PullRequest
1 голос
/ 15 апреля 2010

Я новичок в UNIX. Я нахожу некоторые трудности с перенаправлением ввода / вывода.

  1. ls -l >temp

    cat temp

    Вот почему временный файл отображается в списке и, кроме того, показывает 0 символов.

  2. wc temp >temp

    cat temp

    здесь вывод 0 0 0 temp. Почему строки, слова, символы равны 0.

Пожалуйста, помогите мне понять это понятие.

Ответы [ 3 ]

3 голосов
/ 15 апреля 2010

Когда вы передаете вывод в файл, этот файл создается, команда запускается (поэтому ls выводит его как пустой файл, а wc считает символы в пустом файле), затем вывод добавляется в файл. .

... в таком порядке.

3 голосов
/ 15 апреля 2010
  1. Поскольку ls читает все имена и сортирует их перед печатью чего-либо, и поскольку выходной файл создается до выполнения команды, в то время, когда ls проверяет размер temp, он пуст, поэтому он отображается в списке как пустой файл.

  2. Когда wc читает файл, он пуст, поэтому он сообщает 0 символов в 0 словах на 0 строках и записывает эту информацию в файл после того, как он завершит чтение пустого файла.

1 голос
/ 15 апреля 2010

Вы не можете писать и читать из одного и того же файла одновременно.

Итак:

wc file > file # NOT WORKING
# but this works:
wc file > file.stats 
mv file.stats file # if you want that
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...