Linux的sort命令排序后重定向原来的文件为什么为空?

恋喵大鲤鱼
博客专家认证
2017-03-10 03:21:19
Linux的sort命令排序后重定向到原来的文件为什么为空?

比如文件file.txt的内容是:
hello1
hello2

那么使用命令 sort file.txt > file.txt 后,file.txt变为空,为什么?
...全文
1672 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
utt@Delimola 2020-02-19
  • 打赏
  • 举报
回复
引用 7 楼 codingMozart 的回复:
这么说吧 open(file_right) clear(file_right) res = sort(file_left) write(res, file_right) 由于你的左右文件相同,所以在sort(file_left)时,file_left已经是空文件了,所以res是空的,写到right_file也是空的
恋喵大鲤鱼 2017-07-16
  • 打赏
  • 举报
回复
引用 6 楼 codingMozart 的回复:
引用 5 楼 K346K346 的回复:
[quote=引用 3 楼 codingMozart 的回复:] > 在shell里大概是这样 打开文件 -> 清除原有内容 ->执行左边的程序 ->输出到该文件 所以排序的时候文件已经是空的了
按照您的理解,sort file>newfile,执行完毕后原文件file应该为空,但是并不为空!
是清空new file(如果newfile存在的话),不是清空file[/quote]
引用 6 楼 codingMozart 的回复:
引用 5 楼 K346K346 的回复:
[quote=引用 3 楼 codingMozart 的回复:] > 在shell里大概是这样 打开文件 -> 清除原有内容 ->执行左边的程序 ->输出到该文件 所以排序的时候文件已经是空的了
按照您的理解,sort file>newfile,执行完毕后原文件file应该为空,但是并不为空!
是清空new file(如果newfile存在的话),不是清空file[/quote]感谢您的解答,这个有什么参考文献可以佐证吗?
引用 2 楼 K346K346 的回复:
引用 1 楼 q3733353520 的回复:
sort -n -r file.txt -o file.txt
感谢您的答案,这个确实可以,但是我想知道为什么重定向命令会导致文件为空。
引用 2 楼 K346K346 的回复:
引用 1 楼 q3733353520 的回复:
sort -n -r file.txt -o file.txt
感谢您的答案,这个确实可以,但是我想知道为什么重定向命令会导致文件为空。
感谢您的解答,这个有什么参考文献吗?
codingMozart 2017-03-10
  • 打赏
  • 举报
回复
这么说吧 open(file_right) clear(file_right) res = sort(file_left) write(res, file_right) 由于你的左右文件相同,所以在sort(file_left)时,file_left已经是空文件了,所以res是空的,写到right_file也是空的
codingMozart 2017-03-10
  • 打赏
  • 举报
回复
引用 5 楼 K346K346 的回复:
[quote=引用 3 楼 codingMozart 的回复:] > 在shell里大概是这样 打开文件 -> 清除原有内容 ->执行左边的程序 ->输出到该文件 所以排序的时候文件已经是空的了
按照您的理解,sort file>newfile,执行完毕后原文件file应该为空,但是并不为空![/quote] 是清空new file(如果newfile存在的话),不是清空file
恋喵大鲤鱼 2017-03-10
  • 打赏
  • 举报
回复
引用 3 楼 codingMozart 的回复:
> 在shell里大概是这样 打开文件 -> 清除原有内容 ->执行左边的程序 ->输出到该文件 所以排序的时候文件已经是空的了
按照您的理解,sort file>newfile,执行完毕后原文件file应该为空,但是并不为空!
  • 打赏
  • 举报
回复
引用 2 楼 K346K346 的回复:
引用 1 楼 q3733353520 的回复:
sort -n -r file.txt -o file.txt
感谢您的答案,这个确实可以,但是我想知道为什么重定向命令会导致文件为空。
具体原因我也不太清楚,但是>符号会先清空文件再写。>>才是追加到文件尾
codingMozart 2017-03-10
  • 打赏
  • 举报
回复
> 在shell里大概是这样 打开文件 -> 清除原有内容 ->执行左边的程序 ->输出到该文件 所以排序的时候文件已经是空的了
恋喵大鲤鱼 2017-03-10
  • 打赏
  • 举报
回复
引用 1 楼 q3733353520 的回复:
sort -n -r file.txt -o file.txt
感谢您的答案,这个确实可以,但是我想知道为什么重定向命令会导致文件为空。
  • 打赏
  • 举报
回复
sort -n -r file.txt -o file.txt

19,619

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧