重定向


su - ${username} -c "echo $CATALINA_HOME >/tmp/tmptest.txt" >/dev/null 2>&1

把命令的标准输出和错误输出,重定向到黑洞。

准备知识

0-标准输入流(stdin), 1-标准输出流(stdout), 2-标准错误流(stderr)。 & 表示等同于的意思。

2>&1,表示2的输出重定向等同于1 ####详解

  1. 这里会把su命令的标准输出(1)重定向到黑洞。
  2. 接着把错误输出流重定向到标准输出,因为第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