如果文件不存在,bash重定向到文件

如果文件不存在,bash重定向到文件

我有这个 bash 代码:

  if [[ ! -f "$HOME/.oresoftware/package.json" ]]; then
       cat "node_modules/@oresoftware/package.json" > "$HOME/.oresoftware/package.json";
    fi

但是有没有一种方法可以仅在一行代码中不存在该文件时才重定向到该文件?像这样的东西:

   cat "node_modules/@oresoftware/package.json" ?> "$HOME/.oresoftware/package.json";

我想那会很有趣

答案1

如果设置该noclobber选项,bash 将拒绝覆盖现有文件:

$ set -C    # or set -o noclobber
$ touch foo
$ cat bar > foo
bash: foo: cannot overwrite existing file

所以:

set -C
cat "node_modules/@oresoftware/package.json" > "$HOME/.oresoftware/package.json"

如果想忽略退出状态,可以在命令!前添加cat

set -C; ! cat "node_modules/@oresoftware/package.json" > "$HOME/.oresoftware/package.json"

相关内容