답변:
* nix 파이프의 작동 방식에 대한 약간의 이해가 도움이 될 것입니다.
간단히 말해서, 경로 >>
재 지정 연산자는 지정된 파일의 끝에 행을 추가 >
합니다.
echo "text" > 'Users/Name/Desktop/TheAccount.txt'
-bash: TheAccount.txt: cannot overwrite existing file
.
>
및 >>
있는 출력 리디렉션 연산자. 파이프 연산자는 |
입니다.
>|
기존 덮어 쓰기에 사용
Bash에서 noclobber a la를 설정 set -o noclobber
한 경우 구문을 사용합니다>|
예를 들면 다음과 같습니다.
echo "some text" >| existing_file
파일이 아직없는 경우에도 작동합니다
echo "aaa" &>| test.txt
오류가 발생 -bash: syntax error near unexpected token |
합니다. 내 noclobber가 켜져 있습니다.
echo "aaa" >| test.txt 2>&1
다른 쉘 을 고수 하거나 사용해야합니다.
NylonSmile
의 답변 에도 불구하고 "정렬 한"맞습니다. 이 방법으로 파일 을 덮어 쓸 수 없었습니다 .
echo "i know about Pipes, girlfriend" > thatAnswer
zsh: file exists: thatAnswer
내 문제를 해결하기 위해 .. 내가 사용했다 ... >!
, 일품 ..
[[ $FORCE_IT == 'YES' ]] && echo "$@" >! "$X" || echo "$@" > "$X"
분명히, 이것을 조심하십시오 ...
NOCLOBBER
세트 가 있음을 의미합니다 . setopt clobber
기본 동작을 복원하는 데 사용 합니다.
#!/bin/bash
cat <<EOF > SampleFile
Put Some text here
Put some text here
Put some text here
EOF
noclobber 설정 (예 :)이있는 동안 std :: cerr 및 std :: cout을 파일로 리디렉션하려는 경우 set -o noclobber
코드를 사용할 수 있습니다.
cmd >|file.txt 2>&1
이에 대한 자세한 내용은 https://stackoverflow.com/a/876242 에서 확인할 수 있습니다 .
또한이 답변이 제공하는 응답 @BrDaHa에 TuBui의 질문 @의 위 9시 34분에서 8월 9일 '18에서.