重定向

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

posted on 2022-04-07 18:05  Colin88  阅读(102)  评论(0编辑  收藏  举报