Linux输入输出重定向

sushangh10学习笔记:
《Linux 就该这么学》 刘遄 著
与文件读写操作有关的重定向技术的5种模式

1.标准覆盖输出重定向
2.标准追加输出重定向
3.错误覆盖输出重定向
4.错误追加输出重定向
5.输入重定向

输入重定向:把文件导入到命令中
输出重定向:把原本要输出到屏幕(或终端)的数据信息写入到文件中

先看下图:
Linux输入输出重定向
可以发现:
readme.txt文件存在,因此ls -l 指令就输出了该文件的一些相关权限、所属用户、组、文件大小、文件修改时间等信息。(标准输出)
sushangh10.txt文件不存在,因此输出了No such file or directory(错误输出)
接下来试一下将输出重定向到文件中:

man bash

查看bash解释器的帮助文档如下:
Linux输入输出重定向
接下来我们用指令man bash > bash.txt将该文档输出到bash.txt文件中
再用指令cat bash.txt对文件进行查看
(太长了就截一张图好了)
Linux输入输出重定向
这其实就是标准输出重定向啦。
接下来再试一下1.标准覆盖输出重定向
指令echo "Hello world" > bash.txt
Linux输入输出重定向
他将原本bash解释器的帮助文档全部清空,写入“Hello world”字符串。(覆盖)
再试一下2.标准追加输出重定向
指令echo "Linux world" >>bash.txt
Linux输入输出重定向
他在原本bash.txt文档后新加了一行“Linux world”字符串。(追加)
3.错误覆盖输出重定向
指令ls -l hello.txt会输出错误信息到终端:
Linux输入输出重定向
在这里,我们用ls -l hello.txt 2> errout.txt可以将错误信息输出到errout.txt文件中
Linux输入输出重定向
做到这一步,我想起来这并没有强调到覆盖这个关键字啊,于是我用
ls -l hello.txt 2> bash.txt 指令将错误输出重定向到bash.txt中:
Linux输入输出重定向
再尝试一下4.错误追加输出重定向
指令ls -l sushangh10.txt 2> bash.txt
Linux输入输出重定向
而对于5.输入重定向
刘遄老师在书中说输入重定向相对来说有些冷门,工作中遇到的概率会小一点。他的作用就是把文件直接导入到命令中。接下来就试一下吧:

wc -l < bash.txt
Linux输入输出重定向
统计文件内容行数。
或许这样并没有让你明白输入重定向(这不就是一个指令嘛?哪里强调了重定向)
那么再看:
我用gedit readme.txt
将readme.txt修改成如下:
Linux输入输出重定向
也就是把ls -l helloworld.txt命令写到文件readme.txt中
然后,我们在用bash解释器运行这个文件bash readme.txt
Linux输入输出重定向
发现了吧,就和在终端敲入:ls -l helloworld.txt输出是一样的。
再试一下:
readme.txt改成如下:
Linux输入输出重定向
然后用bash解释器运行:
Linux输入输出重定向
这就是输入重定向,将要输入到终端的指令写在文本中,再用bash解释器运行文本,也就相当于在终端运行相应的指令啦。