数据流重定向
?
数据流可以分为2种:
输入数据流:以写文件为例,从键盘输入的字符就输入数据流
输出数据流:以读文件为例,将文件内容显示到屏幕上,显示的内容就是输出字符流
?
数量流重定向就是指改变数据流输入的方式或输出的介质。比如,输入数据流可以是一个文件的内容,输出数据流介质可以是文件而不单单的屏幕
?
对于命令行来说输入数据流主要来自键盘,输出数据流只要介质是屏幕。
同时输出数据流又可分为:
?? 正确输出
?? 错误输出
?
语法:
输入数据流:使用<(覆盖)或<<(累加)
正确输出数据流:使用>(覆盖)或>>(累加)
错误输出数据流:使用2>(覆盖)或2>>(累加)
?
说明:如果某些信息不想显示到屏幕上也不保存到文件或设备上,可以讲输出数据流指向/dev/null
?
举例1:正确输出数据流(覆盖)
?
[root@localhost ~]# ll > ll.file [root@localhost ~]# vim ll.file 总计 225968 -rw------- 1 root root 1377 02-14 10:29 anaconda-ks.cfg -rw-r--r-- 1 root root 207 03-05 11:00 bashrc-back ……..
?
?
举例2:正确输出数据流(累加)
[root@localhost ~]# ll /root >> ll.file 总计 225968 -rw------- 1 root root 1377 02-14 10:29 anaconda-ks.cfg -rw-r--r-- 1 root root 207 03-05 11:00 bashrc-back …….. 总计 225972 -rw------- 1 root root 1377 02-14 10:29 anaconda-ks.cfg -rw-r--r-- 1 root root 207 03-05 11:00 bashrc-back ……..
?
举例3:正确输出与错误输出数据流
[root@localhost ~]# ll /root /root/error ls: /root/error: 没有那个文件或目录 =>错误信息 /root: =>正确信息 总计 225972 -rw------- 1 root root 1377 02-14 10:29 anaconda-ks.cfg -rw-r--r-- 1 root root 207 03-05 11:00 bashrc-back ……………….. [root@localhost ~]# ll /root /root/error >right.list 2>error.list [root@localhost ~]# cat right.list /root: 总计 225984 -rw------- 1 root root 1377 02-14 10:29 anaconda-ks.cfg -rw-r--r-- 1 root root 207 03-05 11:00 bashrc-back …………….. [root@localhost ~]# cat error.list ls: /root/error: 没有那个文件或目录
举例4:正确与错误输出数据流写在一个文件中
[root@localhost ~]# ll /root /root/error >all.list 2>&1 [root@localhost ~]# cat all.list ls: /root/error: 没有那个文件或目录 /root: 总计 225996 -rw-r--r-- 1 root root 45 03-05 13:02 all.list -rw------- 1 root root 1377 02-14 10:29 anaconda-ks.cfg ………………..
?
?
命令执行的判断依据(; && ||)
?
语法:
cmd;cmd:不考虑命令相关性连续额的命令执行
cmd1&& cmd2:若cmd1执行完毕且正确,则执行cmd2
????????????若cmd1执行错误则不执行cmd2
cmd1|| cmd2:若cmd1执行完毕且正确,则不执行cmd2
????????????若cmd1执行完毕且为错误,则执行cmd2
?