我有一个非常简单的命令,可以生成我想做的 STDOUT,/dev/null
但不知何故它不起作用,或者我在这里遗漏了一些东西。
$ ldapsearch -Y GSSAPI -b "cn=users,cn=accounts,dc=example,dc=com" "uid=foo" | grep krbPasswordExpiration | tail -n1 | awk '{print $2}'
SASL/GSSAPI authentication started
SASL username: [email protected]
SASL SSF: 256
SASL data security layer installed.
20200608022954Z <---- This is my krbPasswordExpiration value.
但是,如果您在上面的命令SASL
行中看到这只是我想要执行的标准输出,/dev/null
那么我尝试了以下操作,但它似乎不起作用。
$ ldapsearch -Y GSSAPI -b "cn=users,cn=accounts,dc=example,dc=com" "uid=foo" | grep krbPasswordExpiration | tail -n1 | awk '{print $2}' 2> /dev/null
我还有什么办法可以摆脱它?
您需要了解正在向 stderr 执行输出的命令,并确保重定向与该命令相关联。
您可以将管道视为在命令周围有 ()
所以
可以认为是
(这不是字面上的工作方式,而是一种心理模型)。
并且重定向发生在括号内。
所以很明显
不会从“a”重定向错误消息
但
做
因此,您的命令重定向了命令中的错误
awk
。您真的想将错误从ldapsearch
.所以