重定向无法打开以进行阅读

重定向无法打开以进行阅读

我运行了以下命令,但不明白为什么会出现此错误:

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

相关内容