Noclobber를 설정할 때 >(프로세스 교체)를 허용하는 방법은 무엇입니까?

Noclobber를 설정할 때 >(프로세스 교체)를 허용하는 방법은 무엇입니까?

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

프로세스 교체( )의 일부가 아닌 >|리디렉션 기호( )를 동반 해야 합니다 .>>(…)

관련 정보