——走进Bash
1.数据流定向
一般命令的执行来自于标准输入(例如键盘输入,来自文件的命令也要转换为标准输入),执行完毕后将数据(处理结果或错误信息)传输到屏幕上,也即标准输出,但是这样导致屏幕十分杂乱,也不利于结果的保存查看。我们可以采用数据流定向手段将结果和错误信息传输到文件,定向方法如下:
标准输入(stdin):代码为0,使用<或<<;
标准输出(stdout):代码为1,使用>或>>;
标准错误输出(stderr):代码为2,使用2>或2>>。
具体用法如下所示:

例如我们要运行显示时间和日期的shell脚本,并将结果保存在cal_date.txt里面:

接下来我们运行显示生日的脚本,将结果追加在cal_date.txt中:

注意这里使用的是>>,若是>则内容会替代而不是累加。接下来我们修改shell脚本使cal参数错误,然后运行并输出错误信息:

也可以将正确结果与错误信息同时输出到两个文件:

假如我们不希望在屏幕上看到错误信息,也不希望保存,直接将报错丢掉,可以使用垃圾桶/dev/null,示例如下:

将正确结果和错误信息输出到同一个文件,可以灵活使用&符号:

命令cat可以将文件内容转换为标准输出显示到屏幕上,同时也可以将键盘输入到屏幕上的内容写入新的文件:

其中<<后面跟的是结束输入的关键词。采用<我们还可以使用文件来代替标准输入,例如将friends1.sh的内容作为标准输入写入一个新的文件friends2.sh,示例如下:

命令:tee
命令tee可以起到数据流分流的作用,例如我们将数据同时显示到屏幕上(以便下一步处理)并保存到一个文件:

注意:
众号任一篇原创文章到朋友圈,即可联系管理员领取清晰版Linux系统学习资料(微信:XINGKONGidealist)。
往期Linux系统入门系列文章: