set -o noclobber
대화형 셸()에서 noclobber를 설정하면 프로세스 대체가 작동하지 않는 것으로 나타났습니다 .
# echo hello > >(cat)
-bash: /dev/fd/62: cannot overwrite existing file
noclobber를 영구적으로 끄면( set +o noclobber
) 잘 작동합니다.
# echo hello > >(cat)
hello
나는 >|
다음과 같이 noclobber를 재정의하려고 시도했습니다.
echo hello > >|(cat)
-bash: syntax error near unexpected token `>|'
노클로버를 일시적으로 비활성화할 수 있는 방법이 있습니까?
업데이트: 파일이 "손상"되지 않기 때문에 출력이 프로세스 교체로 진행될 때 noclobber가 적용되는 것은 실제로 비합리적인 것 같습니다. noclobber가 실수로 열리는 경우 "기존 파일을 덮어쓸 수 없습니다" 오류를 방지하기 위해 항상 noclobber를 사용 >|
하고 재정의하는 것이 2>|
좋고 안전한 습관인 것 같습니다 .
답변1
파일과 같은 방식으로 noclobber를 재정의합니다 >|
.
# echo hello >| >(cat)
hello
프로세스 교체( )의 일부가 아닌 >|
리디렉션 기호( )를 동반 해야 합니다 .>
>(…)