linux输出重定向

linux | 2020-07-10 16:46:45

一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。比如我们需要指定日志文件的输出位置。

标准覆盖输出 >:会覆盖掉原先的文件内容 (或1>)
标准追加输出 >>:不会覆盖原始文件内容,会在原始内容末尾继续添加(或1>>)
错误输出 2>:会覆盖掉原先的文件内容
错误追加输出 2>>:会覆盖掉原始文件内容,会在原始内容末尾继续添加
将标准输出与错误输出共同写入到文件中 &>:覆盖原有内容
将标准输出与错误输出共同写入到文件中 &>>:追加到原有内容的后面

语法:

╭─root@localhost.localdomain ~/2  
╰─➤  echo "hello" > fil1     #会覆盖原文件内容(标准输出)
╭─root@localhost.localdomain ~/2  
╰─➤  echo good >> fil1     #不覆盖原文件内容 (标准输出)
╭─root@localhost.localdomain ~/2  
╰─➤  cd fil2 &>> fil1    #不覆盖原文件内容(标准与错误输出)
╭─root@localhost.localdomain ~/2  
╰─➤  cat fil1                                                                        
hello
good
cd: 没有那个文件或目录: fil2

shell上:
0表示标准输入
1表示标准输出
2表示标准错误输出
> 默认为标准输出重定向,与 1> 相同
2>&1 意思是把 标准错误输出 重定向到 标准输出.
1>&2 意思就是把 标准输出 重定向到 标准错误输出
&>file 意思是把 标准输出 和 标准错误输出 都重定向到文件file中

#例子
snmpwalk -v1 -c public 192.168.0.1 .1.3.6.1.4.1.102.8 >/dev/null 2>&1

# 2>&1 的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null。

/dev/null的意思是将标准输出重定向到一个/dev/null的设备文件,null表示一个空设备文件,可以理解为null是个无底洞。

登录后即可回复 登录 | 注册
    
关注编程学问公众号