我有这个 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"