免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1584 | 回复: 6
打印 上一主题 下一主题

[学习共享] 看shell13问重定向中的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-09-11 14:19 |只看该作者 |倒序浏览
大家好,我看了shell十三问。里面第11篇里面有提到
$ cat <> file
$ cat < file >> file

自己试了一些啊,但是不明白为什么不会产生这样的结果。

< 默认 为 <0 , > 默认位 1 >,但是还是不明白cat <> file
还有就是>>为追加,但是不明白为什么结果是file的长度非常大。感觉是进入循环了。

我用set -x
两个命令显示的都是+cat

新手请指导。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2015-09-11 14:38 |只看该作者
回复 1# caiwei_cs


    你的具体问题是啥?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
3 [报告]
发表于 2015-09-11 14:42 |只看该作者
caiwei_cs 发表于 2015-09-11 14:19
还是不明白cat <> file


BTW, <> file 表示以读写方式打开 file,是单独的一种IO重定向方式,不是 < 和 > 的组合。

论坛徽章:
0
4 [报告]
发表于 2015-09-11 14:59 |只看该作者
MMMIX 发表于 2015-09-11 14:42
BTW,  file 表示以读写方式打开 file,是单独的一种IO重定向方式,不是 < 和 > 的组合。


哦,那第一个我懂了。
第二个我是想问,为什么运行了命令以后,会出现所得到的结果。
就是file变成很长很长,为之前file内容的多次循环了。

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [报告]
发表于 2015-09-11 15:03 |只看该作者
回复 4# caiwei_cs

把自已当做是cat
然后想一下cat什么时候(工作做完)停下来...
   

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
6 [报告]
发表于 2015-09-11 15:18 |只看该作者
本帖最后由 MMMIX 于 2015-09-11 15:21 编辑
caiwei_cs 发表于 2015-09-11 14:59
file变成很长很长,为之前file内容的多次循环了。


若 file 中有内容,那么执行 cat < file >> file 的时候,cat 的 0 指向 file,1 通过追加方式指向也指向 file。由于 file pointer (file position) 是和 file descriptor 关联的,那么这个 cat 就相当于一个死循环:逐块读取 file 的内容,并将其追加到 file 的末尾。

评分

参与人数 1信誉积分 +10 收起 理由
caiwei_cs + 10 解释清楚明了。谢谢类

查看全部评分

论坛徽章:
0
7 [报告]
发表于 2015-09-11 15:23 |只看该作者
回复 6# MMMIX


    明白了。谢谢。因为13问中有个例子 cat < file > file,运行后file内容为空,看了解释以后,以为读写是一步到位的。所以没想到这个。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP