我正在开发一个名为Tools的bash程序包,并且我试图制作一个bash脚本,您可以通过该脚本通过管道将命令的所有输出传递给/ dev / null。
示例:
cat myfile | null
null是工具中的命令。
然后它什么也不会输出。我知道如何将输出重定向到/ dev / null或其他位置,但是,我如何制作可传递管道的脚本来做到这一点。
我当前的占位符代码:
#!/bin/bash
sudo $1 &> /dev/null
执行格式:
null cat\ myfile
反斜杠是转义字符,因此bash知道它是一个参数,而不是两个参数。参数通常用空格分隔
答案 0 :(得分:3)
要使其正常工作:
somecommand | null
您只需要包含以下内容的null
脚本即可:
cat > /dev/null
cat
从stdin读取并写入stdout,在这种情况下,您已将其重定向到/dev/null
。
请注意,这不会重定向stderr,因为管道符号(|
)仅重定向stdout。您可以使用|&
来重定向stdout和stderr,如下所示:
somecommand |& null
真正的问题是,为什么要为此烦恼?您可以轻松地运行:
somecommand > /dev/null
或者:
somecommand >& /dev/null
更新
哇,bash 3.2?太老了该版本的bash不支持|&
运算符。您可以完成以下相同操作:
somecommand 2>&1 | null
上面写着“将stderr重定向到stdout,然后将stdout重定向到管道”。
答案 1 :(得分:1)
这里过多地使用了猫。您的脚本所需要做的就是
list(...)
如果您也想对stderr进行核对,
exec >/dev/null
请注意,exec >/dev/null 2>/dev/null
不带命令会使其重定向适用于脚本的其余部分。