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"