当为 sh -c 传入字符串并涉及 su 时,如何让管道工作
How do I get pipe to work when passed in string for sh -c and su is involved
我有以下命令
su - root -s /usr/bin/sh -c "java -version|grep build"
但是 grep 的管道似乎不起作用,因为它无论如何都会打印所有行
java -version
写入标准错误,而不是标准输出。
su - root -s /usr/bin/sh -c "java -version <b>2>&1</b> |grep build"
2>&1
将标准错误复制到标准输出,以便它通过管道输入到 grep
.
也就是说,grep
不必是 运行 作为根,假设管道没有被指定为仅供 运行 任意代码使用的东西使用su sh -c '...'
.
su - root -s /usr/bin/sh -c 'java -version' 2>&1 | grep build
我有以下命令
su - root -s /usr/bin/sh -c "java -version|grep build"
但是 grep 的管道似乎不起作用,因为它无论如何都会打印所有行
java -version
写入标准错误,而不是标准输出。
su - root -s /usr/bin/sh -c "java -version <b>2>&1</b> |grep build"
2>&1
将标准错误复制到标准输出,以便它通过管道输入到 grep
.
也就是说,grep
不必是 运行 作为根,假设管道没有被指定为仅供 运行 任意代码使用的东西使用su sh -c '...'
.
su - root -s /usr/bin/sh -c 'java -version' 2>&1 | grep build