当前位置: 技术问答>linux和unix
重定向符号 > 的困惑
来源: 互联网 发布时间:2017-05-26
本文导语: 问题的提出 重定向符号 > 表示向文件写入,如果该文件存在的话,就清空文件的内容,再将内容写入该文件;如果该文件不存在,就创建文件,再将内容写入该文件。但在实际中发现用top指令一直是...
问题的提出
重定向符号 > 表示向文件写入,如果该文件存在的话,就清空文件的内容,再将内容写入该文件;如果该文件不存在,就创建文件,再将内容写入该文件。但在实际中发现用top指令一直是追加而不是先清空再写入。例如:
top -d 2 > 1.txt
运行后发现1.txt文件的内容每次都是追加的,但其他指令如ls 等不存在这样的问题。比如:
ls -l > 1.txt
执行一次ls -l 后,1.txt文件内容、大小和执行任意多次ls -l后的文件内容、大小都相同,为何top就特殊呢
重定向符号 > 表示向文件写入,如果该文件存在的话,就清空文件的内容,再将内容写入该文件;如果该文件不存在,就创建文件,再将内容写入该文件。但在实际中发现用top指令一直是追加而不是先清空再写入。例如:
top -d 2 > 1.txt
运行后发现1.txt文件的内容每次都是追加的,但其他指令如ls 等不存在这样的问题。比如:
ls -l > 1.txt
执行一次ls -l 后,1.txt文件内容、大小和执行任意多次ls -l后的文件内容、大小都相同,为何top就特殊呢
|
top命令没有结束之前,文件一直是打开状态,标准输出数据流也一直没关闭,执行过程中只要有新的输出数据就被重定向到文件了。
按q终止top命令后,再次执行top -d 2 > 1.txt就把前一次的内容覆盖了~
按q终止top命令后,再次执行top -d 2 > 1.txt就把前一次的内容覆盖了~
|
很好理解,你while一个循环,不停地printf ,然后重定向到文件中,肯定会不断增加的。
top也是在一直输出。
top也是在一直输出。
|
使用> 是公覆盖原来内容的,原来不想覆盖,可以试试追加>> 这样,不会覆盖原来的内容,是在文件后面新建一行开始添加内容
|
把 top 命令的输出重定向到文件的正确做法是这样的:
top -b -n 1 > a.txt
用 -b 把特殊字符过滤掉
用 -n 指定获取信息的次数(否则会不停的获取)
top -b -n 1 > a.txt
用 -b 把特殊字符过滤掉
用 -n 指定获取信息的次数(否则会不停的获取)
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。