我想要一个 Bash one-liner,如果文件不存在,它会自动创建一个文件。这基本上意味着“如果文件不存在,则创建它”,但要确保没有其他人设法在执行 if 和创建文件之间的小空间中创建文件。
从各种评论和 [SO] 链接中窃取答案。似乎有一种符合 POSIX 的方法不涉及mkdir
我在下面的原始答案中提到的
set -o noclobber # or set -C
{ > file ; } &> /dev/null
Run Code Online (Sandbox Code Playgroud)
如果文件已存在,则重定向到文件返回 0 或失败并返回非零值。
原答案
您必须使用mkdir
- 这是原子性的,要么创建目录,您可以继续,要么不创建,以便您采取适当的操作。
当然,mkdir
不会创建文件,但是一旦您知道您对该目录具有独占访问权限,那么您就可以在其中创建您想要的文件。
至于单班轮 - 我会把它留给你。就我个人而言,我会将它写成几行,因为这样更易于维护。