大家好,这里是天亮之前ict,本人网络工程大三在读小学生,拥有锐捷的ie和红帽的ce认证。每天更新一个linux进阶的小知识,希望能提高自己的技术的同时,也可以帮助到大家
另外其它专栏请关注:
锐捷数通实验:锐捷数通实验
网络工程师成长日志:网络工程师成长日志
it自动化运维:it自动化运维
一 理解linux的数据流
执行linux命令时,linux默认为用户提供三种数据流:
- stdin
标准输入,0,一般是键盘输入的数据,比如cat命令等待用户输入
- stdout
标准输出,1,程序执行结果,输出到终端
- stderr
标准错误输出,程序执行结果,输出到终端
例如:
stdin标准输入:用vim、cat命令,你往里输入东西,接受来自终端的输入
stdout标准输出:比如ls、tail命令将程序运行结果输出到终端
stderr标准错误输出:比如输错命令或目标文件不存在等
二 数据重定向
2.1标准输入重定向
输入重定向的标准输入,重定向到指定的文件中,也就是说输入可以是一个指定的文件
比如:cat < /etc/passwd
比如在mysql中进行数据导入: mpsql< /opt/back.sql
2.2 标准输出重定向(重点)
输出重定向是指把命令的标准输出或者标准错误输出重新定向到指定的文件夹
- 使用“>”符号,将标准输出重定向到文件中,形式为:命令>文件名 把命令的输出结果覆盖到文件中
- 使用”>>“符号,将标准输出结果追加到指定文件后面,形式为:命令>>文件名 将命令的正确结果追加到文件中
- 使用“2>”符号,将标准错误输出重定向到指定的文件中,形式为:命令2>文件名 能将问题的错误报告输出到指定文件中
- 使用”2>>“符号,将标准错误输出结果追加到指定文件后面,形式为:命令2>>文件名
- 使“2>&1”符号或”&>“符号,将标准错误输出stderr重定向到标准输出stdout(2>对stderr进行重定向,2>&1,将stderr当作stdout去处理,程序的正确日志,和错误日志,都统一写入到一个文件中,防止程序出错时的日志打印在终端上)!!!!!重要
- 使用“>/dev/null”符号,将命令执行结果重定向到空设备中,也就是不显示任何信息
[root@lmy ~]# ls /opt/ > /lmy.txt
[root@lmy ~]# echo "lmy 666 77 88 8" >> /lmy.txt//再lmy.txt文件后追加
ls /opppppppppp 2> /tmp/opt.log//可以发现不会将错误日志输出在终端,而是输出在opt.log
2>>命令的输出追加
ls /etc/passwd >> lmy.txt 2>&1
“生活的方向无论你如何选择都会后悔,人总向往没经历过的生活”