重定向
su - ${username} -c "echo $CATALINA_HOME >/tmp/tmptest.txt" >/dev/null 2>&1
把命令的标准输出和错误输出,重定向到黑洞。
准备知识
0-标准输入流(stdin), 1-标准输出流(stdout), 2-标准错误流(stderr)。 & 表示等同于的意思。2>&1,表示2的输出重定向等同于1 ####详解
- 这里会把su命令的标准输出(1)重定向到黑洞。
- 接着把错误输出流重定向到标准输出,因为第1步已经把标准输出重定向到黑洞,那错误输出流也就重定向到黑洞了。
最终效果就是命令执行时没有任何输出。
Linux Shell 环境中的输入输出重定向,用符号<和>来表示。0、1和2分别表示标准输入、标准输出和标准错误。 1.重定向标准输出到文件: cat foo > foo.txt 2.重定向标准错误到文件 cat foo 2> foo.txt 3.重定向标准输出到标准错误 cat foo 1>&2 4.重定向标准错误到标准输出 cat foo 2>&1 cat file.txt > /dev/null 2>&1 apt-get install python3.6 > aaa`date +%F-%H:%M:%S`\.log nohup ./gameserver.sh start >/dev/null >>shell.out 2>&1 & //也打印到屏幕上也保存到文件中. 也就是说不管command执行正确还是错误,输出都打印到shell.out 5.重定向标准输出,标准错误到同一个文件 cat foo > foo.txt 2>&1或cat foo &> foo.txt 这里第个顺序很重要,先把标准输出重定向到文件,再把标准错误输出到标准输出,因为标准输出已经重定向到文件,所以标准错误与重定向到文件。 >&与&>效果相同 例子,屏蔽提示信息 echo 'xxxxx'|su admin -c "python /etc/zabbix/zabbix_agentd.conf.d/app.py >/tmp/app_num.txt" >/dev/null 2>&1 echo 'xxxxx'|su admin -c "chmod o+rw /tmp/app_num.txt" >/dev/null 2>&1 cat /tmp/app_num.txt