我运行了以下命令,但不明白为什么会出现此错误:
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
如果你没有提到任何文件描述符,则默认为文件描述符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
。