Перенаправление не может открыться для чтения

Я выполнил следующую команду и не могу понять, почему я получаю эту ошибку:

tail /var/log/fontconfig.log 1 >> /home/myuser/b.log
tail: cannot open '1' for reading: No such file or directory

Файл fontconfig.log существует, и каталог myuser также существует. Однако эта команда работает:

tail /var/log/fontconfig.log >> /home/myuser/b.log

Здесь я удалил 1. Может ли кто-нибудь объяснить, почему я получаю эту ошибку? Кроме того, если мы не упомянем какие-либо стандартные файловые дескрипторы, как я не упомянул 1, что тогда потребуется?

0
задан 4 September 2019 в 03:03

1 ответ

Если Вы не упоминаете дескриптора файла, он принимает значение по умолчанию к дескриптору файла 1 (стандартный вывод). Если Вы делаете , дают явный дескриптор, необходимо сделать так без пробела перед >> оператор. Как отмечено в man bash:

   Appending Redirected Output
       Redirection of output in  this  fashion  causes  the  file  whose  name
       results  from  the expansion of word to be opened for appending on file
       descriptor n, or the standard output (file descriptor 1) if  n  is  not
       specified.  If the file does not exist it is created.

       The general format for appending output is:

              [n]>>word

Поэтому, когда Вы записали

tail /var/log/fontconfig.log 1 >> /home/myuser/b.log

, это пробует к tail и /var/log/fontconfig.log и файл, названный 1, и перенаправьте получающийся стандартный вывод к /home/myuser/b.log: ошибка состоит в том, потому что у Вас нет файла названным 1, из которого tail может читать.

4
ответ дан 23 October 2019 в 03:23

Другие вопросы по тегам:

Похожие вопросы: