programing

파일에 쓰지만 파일이 있는 경우 덮어씁니다.

minimums 2023. 5. 18. 20:52
반응형

파일에 쓰지만 파일이 있는 경우 덮어씁니다.

echo "text" >> 'Users/Name/Desktop/TheAccount.txt'

파일이 없는 경우 파일을 생성하지만 이미 있는 경우 덮어쓰도록 하려면 어떻게 해야 합니까?지금은 이 스크립트가 나타납니다.

>>리디렉션 연산자는 지정된 파일의 끝에 줄을 추가합니다. 여기서 단일은 다음보다 큽니다.>파일을 비우고 덮어씁니다.

echo "text" > 'Users/Name/Desktop/TheAccount.txt'

바시에서 클로버 ala를 설정하지 않은 경우set -o noclobber그런 다음 구문을 사용합니다.>|

예:

echo "some text" >| existing_file

파일이 아직 존재하지 않는 경우에도 작동합니다.


  • 다음으로 설정된 클로버가 없는지 확인합니다.set -o | grep noclobber

  • 이 특별한 유형의 운영자에 대한 자세한 설명은 이 게시물을 참조하십시오.

  • 리디렉션 연산자에 대한 자세한 목록은 이 게시물을 참조하십시오.

의 대답에도 불구하고, 그것은 "일종의" 정확합니다.이런 식으로 파일을 덮어쓸 수 없었습니다.

echo "i know about Pipes, girlfriend" > thatAnswer

zsh: file exists: thatAnswer

내 문제를 해결하기 위해..나는... >!알라..

[[ $FORCE_IT == 'YES' ]] && echo "$@" >! "$X" || echo "$@" > "$X"

분명히, 조심해요...

사용자 환경에서 을(를) 덮어쓸 수 없는 경우>파이프를 사용합니다.|그리고.tee대신 다음과 같이 입력합니다.

echo "text" | tee 'Users/Name/Desktop/TheAccount.txt'

이것도 stdout에 인쇄됩니다.원하지 않는 경우 출력을 다음으로 리디렉션할 수 있습니다./dev/null다음과 같이:

echo "text" | tee 'Users/Name/Desktop/TheAccount.txt' > /dev/null
#!/bin/bash

cat <<EOF > SampleFile

Put Some text here 
Put some text here
Put some text here

EOF

클로버가 설정되지 않은 상태에서 stderr과 stdout을 모두 파일로 리디렉션하려는 경우(즉,set -o noclobber), 다음 코드를 사용할 수 있습니다.

cmd >| file.txt 2>&1

이에 대한 자세한 내용은 https://stackoverflow.com/a/876242 에서 확인할 수 있습니다.

또한 이 답변은 위에서 제공한 답변 @BrDaHa에 대한 @TuBui의 질문으로 18년 8월 9일 9시 34분에 작성되었습니다.

한 파일의 내용을 다른 파일로 덮어쓰려면 하나 이상의 기호를 사용합니다. 두 개를 사용하면 추가됩니다.

echo  "this is foo" > foobar.txt
cat foobar.txt
    > this is foo

echo "this is bar" > foobar.txt
cat foobar.txt
    > this is bar
    

echo "this is foo, again" >> foobar.txt
cat foobar.txt
    > this is bar
    > this is foo, again
    

다른 답변에서 언급했듯이, 만약 당신이noclobber를 설정한 다음 사용합니다.>|교환입니다.

텍스트가 다음과 같은 명령의 출력인 경우ls사용할 수 있습니다.cat.

노브를 설정한 경우:

ls | cat>| TheAccount.txt

그렇지 않으면 강제 삭제(파일 존재 여부에 관계없이)와ls명령:

file=TheAccount.txt && rm -f $file && ls | cat > $file

출력에 오류가 있을 수 있는 경우 다음과 같이 앰퍼샌드 이상을 사용할 수 있습니다.

my_task &> 'Users/Name/Desktop/task_output.log'이렇게 하면 stderr 및 stdout이 모두 로그 파일로 리디렉션됩니다(stdout 대신).

언급URL : https://stackoverflow.com/questions/4676459/write-to-file-but-overwrite-it-if-it-exists

반응형