我有以下命令
su - root -s /usr/bin/sh -c "java -version|grep build"
但是grep的管道似乎不起作用,因为无论如何它都会打印所有行
java -version
写入标准错误,而不是标准输出。su - root -s /usr/bin/sh -c "java -version 2>&1 |grep build"
[2>&1
将标准错误复制到标准输出,以便通过管道将其馈送到grep
。也就是说,
grep
不必以root用户身份运行,前提是没有指定要使用su sh -c '...'
来运行任意代码的对象使用管道。
su - root -s /usr/bin/sh -c 'java -version' 2>&1 | grep build