방금 이 글이 적힌 것을 봤습니다.
$ some-command >| /tmp/output.txt
한 명령의 출력을 다른 명령으로 "파이프"하기 위해 표준 리디렉션에 사용되는 수직 파이프는 >|
이 경우와 동일하므로 실제로는 전혀 쓸모가 없습니다 >
.
답변1
그것은 쓸모가 없습니다. 이것은 >
일반 리디렉션 연산자의 특별한 형태입니다(그리고 아마도 혼란스럽게도 파이프와는 아무 관련이 없습니다). 대부분의 다른 최신 셸에는 리디렉션이 기존 파일을 덮어쓰거나 손상시키는 것을 방지하는 bash
옵션이 있습니다 . noclobber
예를 들어 noclobber
true이고 파일이 /tmp/output.txt
이미 존재하는 경우 실패합니다.
$ some-command > /tmp/output.txt
noclobber
그러나 리디렉션 연산자를 사용하여 설정을 명시적으로 재정의할 수 있습니다. >|
리디렉션은 설정되어 있어도 작동합니다.noclobber
noclobber
현재 환경에 설정되어 있는지 확인하는 데 사용할 수 있습니다 set -o
.
기록에 따르면 "noclobber" 옵션과 해당 우회 기능은 csh
70년대 후반부터 사용되었습니다. ksh
복사되었지만(1980년대 초) POSIX가 구문을 지정합니다 >|
( 따라서 bash를 포함한 모든 POSIX 쉘과 일부 시스템에서 sh로 사용되는 최신 ash 파생물이 이를 지원함). Zsh는 두 구문을 모두 지원합니다. Bourne 쉘 변형에는 추가되지 않았다고 생각하지만 틀릴 수도 있습니다.>!
ksh