Linux学习笔记——数据流重定向
Posted Johnny*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习笔记——数据流重定向相关的知识,希望对你有一定的参考价值。
Linux默认提供了三种特殊设备,标准输入(stdin)、标准输出(stdout)、标准输出错误(stderr)
文件描述符 | 设备文件 | 说明 |
---|---|---|
0 | /dev/stdin | 标准输入 |
1 | /dev/stdout | 标准输出 |
2 | /dev/stderr | 标准错误 |
简单的重定向
将cat的连续输出重定向到test.c文件中
EOF是"end of file",表示文本结束符。
使用 filename << EOF 可以实现多行输入到指定文件
注意上述重定向都是临时的,打印test.c的内容
【命令解释】
echo 'hi' |cat # 将echo命令通过管道传来的数据作为cat命令的输入
echo 'hello shiyanlou' > redirect # 将echo命令默认的标准输出重定向到redirect文件来
注意:
管道默认是连接前一个命令的输出到下一个命令的输入,而重定向通常是需要一个文件来建立两个命令的连接,
标准错误重定向
【命令解释】
使用cat命令同时读取两个文件 前者存在,后者不存在
可以看到除了正确输出签个文件外,还输出了错误信息
【命令解释】
尝试将输出重定向到一个文件somefile
可以发现依然提示错误信息,这是因为标准错误虽然指向终端屏幕,但实际上并不一样
【命令解释】
将标准错误重定向到标准输出,再将标准输出重定向到文件,注意要将重定向到文件写到前面。
注意在输出重定向文件描述符前加上&,否则shell会当做重定向到一个文件名为1的文件中
【命令解释】
使用tee实现将输出重定向到文件外,也打印在终端
永久重定向
上述重定向都是临时的,只对当前指令有效,使用exec命令可以实现“永久”重定向。
【命令解释】
zsh # 切换shell
exec 1> somefile # 输出永久重定向到somefile文件
exit # 退出当前shell
创建输出文件描述符
在shell中有9个文件描述符,除了常见的0-2之外,还有3-8
【命令解释】
cd /dev/fd/;ls -Al #展示当前进程打开的所有文件描述符
exec 文件描述符> 文件名 # 创建新的文件描述符
以上是关于Linux学习笔记——数据流重定向的主要内容,如果未能解决你的问题,请参考以下文章