[bash] 파일에 쓰지만 존재하는 경우 덮어 씁니다.

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

파일이 존재하지 않으면 파일을 작성하지만 이미 존재하는 경우 파일을 덮어 쓰도록하려면 어떻게해야합니까? 지금이 스크립트는 추가합니다.



답변

* nix 파이프의 작동 방식에 대한 약간의 이해가 도움이 될 것입니다.

간단히 말해서, 경로 >>재 지정 연산자는 지정된 파일의 끝에 행을 추가 >합니다.

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


답변

Bash에서 noclobber a la를 설정 set -o noclobber한 경우 구문을 사용합니다>|

예를 들면 다음과 같습니다.

echo "some text" >| existing_file

파일이 아직없는 경우에도 작동합니다


  • 클로버가 설정되어 있지 않은지 확인하십시오 : set -o | grep noclobber

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

  • 리디렉션 연산자의 전체 목록은 이 게시물을 참조하십시오.


답변

NylonSmile의 답변 에도 불구하고 “정렬 한”맞습니다. 이 방법으로 파일 을 덮어 쓸 수 없었습니다 .

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


답변

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에서.


답변

한 파일의 내용을 다른 파일로 덮어 씁니다. 예를 들어 고양이를 사용하십시오.

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

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

이제 foobar를 덮어 쓰려면 아래와 같이 cat 명령을 사용할 수 있습니다

cat bar.txt >> foobar.txt
cat foobar.txt

여기에 이미지 설명을 입력하십시오