我可以创建一个新文件并在其中输入日期。
touch example.txt
date >> example.txt
但是我必须在创建新文件时在文件中加上日期。如何只用一个命令就能做到这一点?
答案1
只需使用 date 命令重定向到文件即可创建:
date > example.txt
首选方法是使用>>
附加运算符:
date >> example.txt
如果目标文件不存在,重定向运算符 ( >
) 和追加运算符 ( >>
) 都会创建目标文件。您无需先创建它,然后再写入它。
答案2
值得注意的是,如果问题
我必须在创建新文件时在文件中标明日期
是由于竞争条件(例如,有一个进程定期扫描具有该名称的文件,并期望在其中找到日期),即使这样做
date > example.txt
是不正确的,因为在 shell 打开文件和date
实际写入内容(也可能以非原子方式写入)之间仍然有一个非常小的窗口。
在这种情况下,解决方案是写入单独的文件进而执行mv
正确的文件名:
date > example.txt.tmp
mv example.txt.tmp example.txt
同一文件系统上的移动保证是原子的,因此当example.txt
出现时,它已经包含了预期的内容。
如果问题只是输入一个命令,那么原始解决方案当然是正确且最直接的。