mon*_*uin 3 linux bash io-redirection
我有多个管道命令,如下所示:
find [options] | grep [options] | xargs grep [options]
Run Code Online (Sandbox Code Playgroud)
它们中的每一个都可能产生我不感兴趣的错误(权限错误,文件名中错误等).因此,我想将所有错误重定向到/ dev/null.我知道我可以做到这一点2>/dev/null,每个命令.我可以持久设置IO重定向吗?理想情况下,我只需在命令的开头/结尾设置一次,然后它将影响所有后续/前面的管道命令.此外,是否可以永久设置IO重定向,以便在重置之前它继续影响所有命令?
我正在使用bash(我检查了bash builtins的手册页,并没有在顶部看到'>'和'<'字符,所以我认为它是linux的东西......对不起)
我将假设您正在使用bash,或者至少使用某种类似Bourne的shell.
我还假设您要避免的是以下内容:
find ... 2>/dev/null | grep ... 2>/dev/null | xargs ... 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
即重复2>/dev/null管道的每个部分的部分.
你可以这样做:
( find ... | grep ... | xargs ... ) 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
您还可以永久设置重定向,如下所示:
exec 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
并且(假设STDOUT和STDERR之前都指向同一个地方),您可以通过以下方式撤消:
exec 2>&1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1379 次 |
| 最近记录: |