好奇~为什么linux创建文件是touch而不是create
2 回答

杨魅力
TA贡献1811条经验 获得超6个赞
touch的作用本来不是创建文件,而是将指定文件的修改时间设置为当前时间。就是假装“碰”(touch)了一下这个文件,假装文件被“修改”了,于是文件的修改时间就是被设置为当前时间。这带来了一个副作用,就是当touch一个不存在的文件的时候,它会创建这个文件。然后,由于touch已经可以完成创建文件的功能了,就不再需要一个单独的create了。

郎朗坤
TA贡献1921条经验 获得超9个赞
@fefe回答的已经很好了。我做点儿补充吧,这个命令最早出现在UnixVersion7中,是KenThompson和DennisRichie两位大神写的一个工具。至于为什么叫这个名字,外网上也有很多讨论,但两位当事人并没有回应过。如果看下Unix/Linux源码,你会发现touch里有这么一行代码:open("t",O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK,0666)=3其中的O_CREAT常量就是文件不存在就创建的原因。
添加回答
举报
0/150
提交
取消