bash – Unix:将文件输出到自身 – 为什么这会使文件空白?
发布时间:2020-12-15 21:33:07 所属栏目:安全 来源:网络整理
导读:参见英文答案 Why a linux redirect truncates the file?????????????????????????????????????3个 有人可以向我解释为什么这段代码有效(即file2.txt是按字母顺序排序的file1.txt内容): cat file1.txt | sort file2.txt 但是当我这样做时,file1.txt会自行清
参见英文答案 >
Why a linux redirect truncates the file?????????????????????????????????????3个
有人可以向我解释为什么这段代码有效(即file2.txt是按字母顺序排序的file1.txt内容): cat file1.txt | sort > file2.txt 但是当我这样做时,file1.txt会自行清空……? cat file1.txt | sort > file1.txt 你可以猜到,我试图按字母顺序排序文件的内容,然后写回同一个文件…… (我正在使用mac 10.8.3的终端.写作日期是19may2013) 解决方法
shell打开file1.txt进行输出(截断它,即丢弃所有数据)后开始排序.然后它启动cat并打开file1.txt进行阅读. shell的语义是这样的,管道可以从file.txt获取一个或多个输入的页面,但实际上几乎所有的shell(也就是所有的shell,但也许有一些shell我从来没有使用过那种不这样做的方法)会在cat读取任何数据之前截断文件.
要执行此操作,您必须使用临时文件. (好吧,使用临时文件不是强制性的.如果文件足够小,这样的东西可能会起作用cat file1.txt |(sleep 2; sort> file1.txt),但不保证.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |