重定向

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   Colin88  阅读(126)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示