이 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"