Я выполнил следующую команду и не могу понять, почему я получаю эту ошибку:
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
, что тогда потребуется?
Если Вы не упоминаете дескриптора файла, он принимает значение по умолчанию к дескриптору файла 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
может читать.