为什么linux 创建文件是touch 而不是create

fsme
  • 773

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

回复
阅读 1.1k
2 个回答
✓ 已被采纳

touch 的作用本来不是创建文件,而是将指定文件的修改时间设置为当前时间。

就是假装“碰”(touch)了一下这个文件,假装文件被“修改”了,于是文件的修改时间就是被设置为当前时间。

这带来了一个副作用,就是当 touch 一个不存在的文件的时候,它会创建这个文件。

然后,由于 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 "" > 等等。还有很多,不一一列举了。

你知道吗?

宣传栏