有趣的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需要将输出存储在缓冲区中(最后)将该缓冲区写入文件. 由于在许多情况下这不是最好的方法(因为内存管理,管理在完成之前中断的命令失败等),文件会被预先创建. 因此,命令的标准输出可以用新创建的文件替换,命令输出可以流式传输到该文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容