Bash 重定向到/dev/null:没有这样的文件或目录

Bash 重定向到/dev/null:没有这样的文件或目录,bash,Bash,我想知道是否有人能帮我解决这个错误: wc:Files/Unused-CMA_host.txt:没有这样的文件或目录 该文件不存在,那么我想将输出重定向到/dev/null 我尝试使用这句话/dev/null 2>&1,它在其他情况下有效,但在这里不起作用: wc-l文件/Unused-CMA_host.txt | awk'{print$1}>/dev/null 2>&1 有人知道为什么吗 谢谢。重定向适用于管道的单个组件,而不是整个管道。在您的示例中,只重定向awk的标准输出。要重定向整个管道

我想知道是否有人能帮我解决这个错误:

wc:Files/Unused-CMA_host.txt:没有这样的文件或目录

该文件不存在,那么我想将输出重定向到/dev/null

我尝试使用这句话
/dev/null 2>&1
,它在其他情况下有效,但在这里不起作用:


wc-l文件/Unused-CMA_host.txt | awk'{print$1}>/dev/null 2>&1

有人知道为什么吗


谢谢。

重定向适用于管道的单个组件,而不是整个管道。在您的示例中,只重定向
awk
的标准输出。要重定向整个管道的标准错误和标准输出,需要一个命令组,例如

{ wc -l Files/Unused-CMA_host.txt | awk '{print $1}' ; } > /dev/null 2>&1
但是,如果文件不存在,将不会有任何标准输出。也许您想重定向标准错误以抑制错误消息?然后你可以简单地使用

wc -l Files/Unused-CMA_host.txt 2> /dev/null | awk '{print $1}'

对于不存在的文件,
awk
将只从空流中读取,而不执行任何操作。

重定向应用于管道的单个组件,而不是整个管道。在您的示例中,只重定向
awk
的标准输出。要重定向整个管道的标准错误和标准输出,需要一个命令组,例如

{ wc -l Files/Unused-CMA_host.txt | awk '{print $1}' ; } > /dev/null 2>&1
但是,如果文件不存在,将不会有任何标准输出。也许您想重定向标准错误以抑制错误消息?然后你可以简单地使用

wc -l Files/Unused-CMA_host.txt 2> /dev/null | awk '{print $1}'

对于不存在的文件,
awk
将只从空流中读取,而不执行任何操作。

解释您正在执行的操作。如果txt文件不存在,您要计算哪些行?您希望计数为0,还是错误,或者是什么?
wc-l文件/Unused-CMA_host.txt 2>/dev/null | awk'{print$1}'
解释一下您在做什么。如果txt文件不存在,您要计算哪些行?您是否希望计数为0,或者出现错误,或者是什么?
wc-l文件/Unused-CMA_host.txt 2>/dev/null | awk'{print$1}'