在linux下读文件a再重新重定向到该文件,会将文件清空是为什么? 5

试着玩儿,发现了这个问题:[root@localhosttemp]#lltest-rw-r--r--1rootroot170504-1622:58test[root@lo... 试着玩儿,发现了这个问题:

[root@localhost temp]# ll test
-rw-r--r-- 1 root root 1705 04-16 22:58 test
[root@localhost temp]# head -n 3 test
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@localhost temp]# grep "\n" test >test
[root@localhost temp]# head -n 3 test
[root@localhost temp]# ll test
-rw-r--r-- 1 root root 0 04-16 22:59 test
请问为什么是这样的?原理是什么?
展开
 我来答
owenge
2013-04-17 · 超过33用户采纳过TA的回答
知道答主
回答量:99
采纳率:100%
帮助的人:79.6万
展开全部
这是标准输出重定向.
一个>,表示清空目标文件原来的内容,将标准输出输入到其中
2个>>,表示将标准输出追加到目标文件中.原内容不变.
所以,
grep "\n" test >test 会将原内容清空
grep "\n" test >>test 不会将原内容清空
马家马甲
2013-04-17
知道答主
回答量:27
采纳率:25%
帮助的人:10.9万
展开全部
应该是这样的,主要是grep调用test文件并查找对应字符
grep "\n" test 查找为空 ,但并不改变原文件的内容
>表示覆盖原文件并添加,文件不存在则创建

linux下默认的换行符手动回车换行,但不存在文件中

你可以
echo '\n' >> test
grep "\n" test >test 后test文件变成只有\n
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6c0f575
2013-04-17 · TA获得超过520个赞
知道小有建树答主
回答量:533
采纳率:0%
帮助的人:498万
展开全部
grep "\n" test 没有过滤到任何东西输出为空
将空的重定向到test
test当然清空了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式