[linux] 파일에 텍스트를 어떻게 추가합니까?

Linux에서 파일에 텍스트를 추가하는 가장 쉬운 방법은 무엇입니까?

나는 이 질문 을 보았지만 허용 된 답변은 추가 프로그램을 사용합니다 ( sed) 나는 더 쉬운 방법이 있어야한다고 확신합니다 echo.



답변

cat >> filename
This is text, perhaps pasted in from some other source.
Or else entered at the keyboard, doesn't matter.
^D

기본적으로 파일에 원하는 텍스트를 덤프 할 수 있습니다. CTRL-D는 입력을 종료하고 쉘로 돌아가는 파일 끝 신호를 보냅니다.


답변

어때 :

echo "hello" >> <filename>

>>연산자를 사용하면 파일 끝에 데이터가 추가되고를 사용 >하면 이미있는 경우 파일의 내용을 덮어 씁니다.

당신은 또한 사용할 수 있습니다 printf동일한 방식으로 .

printf "hello" >> <filename>

위의 내용을 사용하는 것은 위험 할 수 있습니다. 예를 들어 이미 파일이 있고 파일 끝에 데이터를 추가해야하는데 마지막 추가를 잊어 버린 >경우 파일의 모든 데이터가 파괴됩니다. 에서 noclobber변수를 설정하여이 동작을 변경할 수 있습니다 .bashrc.

set -o noclobber

이제 그렇게하려고하면 다음과 echo "hello" > file.txt같은 경고가 표시 cannot overwrite existing file됩니다.

파일에 강제로 쓰려면 이제 특수 구문을 사용해야합니다.

echo "hello" >| <filename>

또한 기본적으로 플래그 echo를 사용하여 억제 할 수있는 후행 개행 문자를 추가 한다는 것을 알아야합니다 -n.

echo -n "hello" >> <filename>

참고 문헌


답변

다른 가능한 방법은 다음과 같습니다.

echo "text" | tee -a filename >/dev/null

그만큼 -a 파일 끝에 추가됩니다.

필요한 sudo경우 다음을 사용하십시오.

echo "text" | sudo tee -a filename >/dev/null


답변

수락 된 답변에 대한 후속 조치를 취하십시오.

스크립트에서 이것을 사용하는 경우 끝을 지정하려면 CTRL-D 이외의 것이 필요합니다 . 대신 이것을 시도하십시오.

cat << EOF >> filename
This is text entered via the keyboard or via a script.
EOF

이렇게하면 명시된 파일에 텍스트가 추가됩니다 ( “EOF”제외).

그것은 사용 여기에 문서 (또는 히어 닥을) .

그러나 명시된 파일에 추가하기 위해 sudo가 필요한 경우 명령 줄에 직접 입력하는 경우 I / O 리디렉션으로 인해 heredoc을 사용하는 데 문제가 발생합니다.

이 변형은 명령 줄에 직접 입력 할 때 작동합니다.

sudo sh -c 'cat << EOF >> filename
This is text entered via the keyboard.
EOF'

또는 tee대신 cat과 함께 heredoc을 사용할 때 나타나는 명령 줄 sudo 문제를 피할 수 있습니다 .

tee -a filename << EOF
This is text entered via the keyboard or via a script.
EOF


답변