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