好奇~ 为什么linux 创建文件是touch 而不是create
@fefe 回答的已经很好了。
我做点儿补充吧,这个命令最早出现在 Unix Version 7 中,是 Ken Thompson 和 Dennis Richie 两位大神写的一个工具。至于为什么叫这个名字,外网上也有很多讨论,但两位当事人并没有回应过。
如果看下 Unix/Linux 源码,你会发现 touch
里有这么一行代码:
open("t", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
其中的 O_CREAT
常量就是文件不存在就创建的原因。
其实能满足你“创建”一个空文件需求的命令有很多,大多都是某个命令的“副作用”。
比如 echo >
、cat /dev/null >
、printf "" >
等等。还有很多,不一一列举了。
2 回答1.8k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
2 回答1.5k 阅读
1 回答2.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
3 回答1.8k 阅读
4 回答1.2k 阅读
touch 的作用本来不是创建文件,而是将指定文件的修改时间设置为当前时间。
就是假装“碰”(touch)了一下这个文件,假装文件被“修改”了,于是文件的修改时间就是被设置为当前时间。
这带来了一个副作用,就是当 touch 一个不存在的文件的时候,它会创建这个文件。
然后,由于 touch 已经可以完成创建文件的功能了,就不再需要一个单独的 create 了。