第十周liunx学习总结

6.1 I/O重定向

就像我们平时写的程序一样,一段程序会处理外部的输入,然后将运算结果输出到指定的位置。在交互式的程序中,输入来自用户的键盘和鼠标,结果输出到用户的屏幕,甚至播放设备中。而对于某些后台运行的程序,输入可能来自于外部的一些文件,运算的结果通常又写到其他的文件中。而且程序在运行的过程中,会有一些关键性的信息,比如异常堆栈,外部接口调用情况等,这些都会统统写到日志文件里。

所以我们平时在执行命令,都默认是从键盘获得输入,并且将结果输出到控制台上。但是我们可以通过更改文件描述符默认的指向,从而实现输入输出的重定向。比如我们将1指向文件,那么标准的输出就会输出到文件中。

 

 6.1.1输出重定向

输出重定向分为正确输出和错误输出

正确输出:1>、1>> 等价于 >、 >>,1可省略。

错误输出:2> 、2>>。

其中,“>”表示覆盖,“>>”表示追加

演示命令:

[root@qfedu ~]# date > date.txt

[root@gfedu ~]# date > date.txt

[root@qfedu ~]# date > date.txt

[root@qfedu ~]# cat date.txt
2018年04月23日星期-15:54:40CST
我们使用>或者>>对输出进行重定向。符号的左边表示文件描述符,如果没有的话表示1,也就是标准输出,符号的右边可以是一个文件,也可以是一个输出设备。当使用>时,会判断右边的文件存不存在,如果存在的话就先删除,然后创建一个新的文件,不存在的话则直接创建。但是当使用>>进行追加时,则不会删除原来已经存在的文件。

 

6.1.2输入重定向

我们使用<对输入做重定向,如果符号左边没有写值,那么默认就是0。

使用 grep 命令过滤root,没有改变输入端,默认为键盘,接着把输入重定向到/etc/passwd

[root@qfedu-]# grep'root'linux
wwww.qfedu.comC
[root@qfedu ~]# grep 'root' </etc/passwdroot;x:0:0:root:/root:/bin/bashoperator;x:11:0:operator:/root:/sbin/nologin

加或不加“<”符号,输出结果一样,但原理是不一样的。/ect/passwd 一个是作为文件作为参数。

使用输入重定向与输出重定向的方式也可以实现同样的功能。

[rooteqfedu -]# dd </dev/2ero>f31802.txt bamlM count 2

记录了2+0的读入
记录了2+0 的写出

 

6.1.3重定向综合案例

“>”表示覆盖,但在此处是指覆盖原来的 fle03.txt输入的3行文本一次输出到 fle03.txt。如退出后再次输出,那将覆盖掉先前的文本内容,此时就需要用“>>”进行追加。每次写入文本都需要按组合键 Ctld 结束显得比较烦琐,用户可以自定义一个结束的符号,
常使用“EOF”。

posted @ 2023-11-07 00:45  水浅秋生  阅读(16)  评论(0)    收藏  举报