linux基础篇,数据流重定向

数据流重定向

很多时候,我们执行一些命令的时候,会在屏幕中得到这些命令的执行结果。这些叫作标准输出。

但是很多情况下,我们并不想将这些信息直接显示在屏幕上,这个时候,就得用重定向这个功能了

 

标准输入

stdin 代码为0  使用 < 或 <<

标准输出

stdout  代码为1  使用 > 或 >>

标准错误输出

标准错误输出

stderr  代码为2  使用 2> 或  2>>

输出重定向使用方法

eg:

1.

2.实用小功能

从上面我们能够看出,如果我们需要网某个文件中写入简单数据时,完全可以用数据流重定向的方式来完成

3.

 find / -name info.txt > log.txt 2> errorlog.txt 

这句代码的意思就是将查找到的文件路径输出到log.txt文件中,将错误信息输出至errorlog.txt中,程序运行结果如下:

可以看到,信息完美的输出了。那么假如我们需要对错误信息进行过滤,抛弃呢,毕竟它不一定有用。这个时候需要用到我们的垃圾桶黑洞设备了:

/dev/null

eg:

find / -name info.txt > log.txt 2> /dev/null

这个功能也实现了,但是还有一种情况,那就是如果我们需要将全部信息都输入到一个文件内呢?应该怎么写

方法一:

sudo find / -name info.txt > log.txt 2>&1

方法二:

sudo find / -name info.txt &> log.txt 

效果截图

输入重定向使用方法:

什么是输入重定向?简单来说,就是将标准输出(由键盘输入)改为由文件输入

eg:

1.假比如我们需要将log.txt文件的内容复制到logTwo.txt文件中,就可以这样写:

cat > logTwo.txt < log.txt 

命令详解:

利用cat新建文件logTwo.txt,将其标准输入改为文件log.txt输入

2. <<

<< 是用来干什么的?,是追加重定向输入吗?可是一想,输出追加可以理解,输入追加嘛意思?所以肯定不是追加的意思了

它其实是终止控制字符设定

假比如我们需要从键盘输入数据到文件,但是不想用ctrl + d结束,而是想用一个特定字符串结束,比如end,那么就可以这样写:

cat > data.txt << "end"

posted @ 2019-10-03 14:14  IT蓝月  阅读(170)  评论(0编辑  收藏  举报
Live2D