linux 数据流重导向
2018-06-29 本文已影响0人
liwsh
数据流重导向,是执行一个命令之后,本来应该展示在屏幕上的内容,导流到另外一个地方(比如文件)
1. >,>>,2>,2>>的区别
- >(1>) 以覆盖的方法将『正确的数据』输出到指定的文件或装置上
- >>(1>>):以累加的方法将『正确的数据』输出到指定的文件或装置上
- >(2>):以覆盖的方法将『错误的数据』输出到指定的文件或装置上
- >>(2>>):以累计的方法将『错误的数据』输出到指定的文件或装置上
- 比如执行shell命令:find /home -name .bashrc > list_right 2> list_error
错误的提示会进入list_error文件,查找到的文件目录会进入list_right文件 - 如果要把错误信息丢掉,这样做:find /home -name .bashrc 2> /dev/null,/dev/null你可以理解为一个黑洞,任何东东丢进去都不见了。
- 如果要把错误信息和正确信息输入同一个文件,这么办:find /home -name .bashrc > list 2>&1,这样都进入了list文件。
2.$?(指令回传值),&& ||
&&,连接2个指令,如果前一个指令执行成功,才执行第二个
||,连接2个指令,如果前一个指令执行失败,才执行第二个
具体描述如下:

比如:ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe
我不知道tmp下面的abc目录是否存在,如果不存在就创建,如果创建成功,就创建hehe文件。