前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux 输入输出

Linux 输入输出

作者头像
Dylan Liu
发布2019-07-01 11:34:43
4.1K0
发布2019-07-01 11:34:43
举报
文章被收录于专栏:dylanliudylanliu

基本输入输出三个:

0 标准输入STDIN

1 标准输出STDOUT

2 标准错误STDERR

标准错误流默认是输出到屏幕即标准输出上的。

重定向:

符号 > 输出覆盖 >>输出追加 <输入

ls -al > list 将结果写入list文件中,list没有将创建

ls -al >> list 将结果追加到list尾部,list没有将创建

上面这种情况只能一次性的改变输入输出方向,要想在终端或shell中永久(也不能算是永久,在退出之前所有的输入输出是有效的)有效,需要用到exec命令,可以用man exec 查看bash中的帮助(需要查找 /exec 最好跟空格)

exec 1> list 表示将标准输出重定向到list文件中,以后的输出都会到list中,这个是追加的,后面输出的内容不会覆盖以前的,我刚试了。

如果你这样做了,你就会发现你没办法将输出从list返回到标准输出中了,要改变这种情况,需要用一个中间值将标准输出保存起来,书中叫Open File descriptor ,描述符最多只能有9个,可以用lsof命令列出所有的,也可用

lsof -a -p $$ -d 0,1,2 列出描述符为0,1,2的情况,$$表示当前bash,-a表示and,具体请man

示例:

exec 3>&1(描述符3重定向到标准输出,3后面不能有空格)

exec 1>list(标准输出重定向到list)

ls (输出到了list中)

exec 1>&3(将标准输出重定向会monitor)

ls(输出到屏幕上)

我感觉描述符中存的是一个地址,在你修改1的时候,3指向的地址不会变,仍然是标准输出,所以才可以重定向回来(自我感觉)。

要想弃置一个描述符可以使用&-, exec 3>&-,再应用的时候会报错3: Bad file descriptor

抑制输出:

有时候不想看到一些错误信息,可以将错误输出重定向到 /dev/null ,有时候想将一个文件清空,可以用 file</dev/null ,这样文件保留,但是内容已经没了,wiki中有比较有意思的解释 http://zh.wikipedia.org/wiki//dev/null,有兴趣的可以看看。

生成日志:

有时候既想在控制台上看到,又想将信息存到一个file中,该怎么办呢?这时候就可以使用一个特别的命令tee,可以将信息输出到这两个地方,man一下解释: tee - read from standard input and write to standard output and files

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档