Bash

為什麼沒有任何 shell 命令來創建文件?

  • May 30, 2016

請注意:

不是在問如何從命令行創建文件!


多年來我一直在使用它touch來製作文件,卻沒有註意到它的主要目的是別的。如果想從命令行創建文件,有很多可能性:

touch foo.bar
> foo.bar
cat > foo.bar
echo -n > foo.bar
printf '' > foo.bar

我敢肯定還有更多。

但事實是,上述命令實際上都不是為創建文件而設計的。例如,man touch建議此命令用於更改文件時間戳。為什麼像 Unix(或 Linux)這樣完整的作業系統沒有專門用於創建文件的命令?

我會說,因為幾乎沒有必要創建一個不會立即在命令行或 shell 腳本中填充內容的空文件。

首先創建文件,然後使用 I/O 重定向寫入文件絕對沒有任何好處,如果您可以一步完成的話。

在那些你真的想創建一個空文件並留下它的情況下,我認為這> "${file}"不能更簡潔和更優雅。

TL;DR:它不存在,因為創建空文件通常沒有用,而且在它有的情況下,已經有無數的選項可以實現這個目標。

附帶說明,使用touch僅在文件不存在時才有效,而使用重定向的選項將始終截斷文件,即使它存在(因此從技術上講,這些解決方案並不相同)。> foo是首選方法,因為它可以節省 afork並且echo -n通常應該避免,因為它非常不便攜。

引用自:https://unix.stackexchange.com/questions/124081