加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

有趣的bash行为

发布时间:2020-12-15 22:10:49 所属栏目:安全 来源:网络整理
导读:为什么这个命令(创建一个空文件夹,更改为它,触摸文件,调用ls然后将其命名)显示两个文件? root@ubuntu:~# mkdir a ; cd a ; touch b ; ls c ; cat cbc 我相信我应该只得到“b”. 解决方法 当你将ls的输出重定向到文件c时,它是鸡和蛋的问题: 如果不预先创建c
为什么这个命令(创建一个空文件夹,更改为它,触摸文件,调用ls然后将其命名)显示两个文件?

root@ubuntu:~# mkdir a ; cd a ; touch b ; ls > c ; cat c
b
c

我相信我应该只得到“b”.

解决方法

当你将ls的输出重定向到文件c时,它是鸡和蛋的问题:

如果不预先创建c,那就意味着shell需要将输出存储在缓冲区中(最后)将该缓冲区写入文件.

由于在许多情况下这不是最好的方法(因为内存管理,管理在完成之前中断的命令失败等),文件会被预先创建.

因此,命令的标准输出可以用新创建的文件替换,命令输出可以流式传输到该文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读