답변:
# possibility 1:
echo "line 1" >> greetings.txt
echo "line 2" >> greetings.txt
# possibility 2:
echo "line 1
line 2" >> greetings.txt
# possibility 3:
cat <<EOT >> greetings.txt
line 1
line 2
EOT
파일에 쓰는 데 sudo (다른 사용자 권한)가 필요한 경우 다음을 사용하십시오.
# possibility 1:
echo "line 1" | sudo tee -a greetings.txt > /dev/null
# possibility 3:
sudo tee -a greetings.txt > /dev/null <<EOT
line 1
line 2
EOT
( echo "line 1" ; echo "line 2" ) >>greetings.txt
입니다.
{ echo "line 1" ; echo "line 2"; } >>greetings.txt
cat <<EOT
은 EOT
임의의 문자열입니다. 도 될 수 있습니다 cat <<FOO
.
다른 접근 방식은 tee
tee -a ~/.ssh/config << END
Host localhost
ForwardAgent yes
END
tee
의 매뉴얼 페이지 에서 몇 가지 선택 라인 :
티 유틸리티는 표준 입력을 표준 출력에 복사하여 0 개 이상의 파일로 복사합니다.
-a-파일을 덮어 쓰지 않고 출력을 파일에 추가합니다.
SED는 다음과 같이 파일의 끝에 행을 추가 할 수 있습니다. 파일의 끝을
sed -i '$ a text to be inserted' fileName.file
$
선택 a
하고 추가 하도록 지시 한 후 삽입 할 텍스트를 표시합니다. 물론 파일 이름입니다.
출처 :
http://www.yourownlinux.com/2015/04/sed-command-in-linux-append-and-insert-lines-to-file.html
========== EDIT == ==========
이 방법은 다른 솔루션보다 추가 이점이 있습니까?
예,이 접근 방식은 다음과 같이 검색시 반환되는 파일에 추가 할 수있는 이점이 있습니다.
find . -name "*.html" -exec sed -i '$ a </html>' {} \;
위 예제를 사용하여 여러 디렉토리 내의 모든 html 페이지에서 누락 된 html 태그를 삽입했습니다.
====================================
sed
. BSD sed
는 다음 오류와 함께 중단됩니다 command a expects \ followed by text
. 따라서 스크립트 솔루션에는 이것을 사용하지 마십시오. 깨지기 쉽다. (또는 BSD 필수 구문이 POSIX와 호환되며 GNU sed
에서도 작동하므로 올바르게 수행하십시오 .
find
다음과 같이 사용할 수 있습니다 find . -name "*.txt" -exec sh -c 'printf "%s\n\t%s\n" "Host localhost" "ForwardAgent yes" >> "$1"' sh {} ";"
.
>
, >>
달리기 등 자신의 문제에서 고통을하지 않습니다 따라서) 및 sudo echo 'something' > /file
. 나를 위해 그것은 lxd 컨테이너의 파일에 다음과 같은 행을 완벽하게 추가 할 수 있습니다 lxc exec c sed -- '$ a newline' /myfile
.
echo "a new line" >> foo.file
파일이 새로운 라인의 끝 아니라, 새로운 라인을 만들지 않습니다 sed -i '$ a a new line' foo.file
, 그래서 할 것이다 sed
, 특히 당신은 항상 파일에 새 줄을 추가하려는 좋습니다.
sudo와 함께 사용할 수 있기 때문에 sed를 사용했습니다. 예를 들면 다음과 같습니다.
sudo sed -i '$ a text to be inserted' fileName.file
대안은 다음과 같이 매우 추악합니다.
sudo bash -c "echo a text to be inserted >> fileName.file"
ssh로 끝났을 때 더 못 생겼습니다.
sed -i
인수로 확장을하지? 예제에 잘못된 매개 변수가있을 수 있습니다.
cat >> out.txt
Perl 또는 Python으로 에뮬레이션 하여 동일한 효과를 얻을 수 있습니다. 펄 :
perl -e 'open(fh,">>","./out.txt");while(<>){printf(fh "%s",$_)};close(fh);'
그리고 파이썬 :
python -c 'import sys;f=open(sys.argv[1],"a");l=[i for i in sys.stdin];f.write("".join(l))' out.txt
파이썬의 경우 Ctrl+를 D두 번 눌러야합니다. 자세한 내용 은 stackoverflow에 대한 관련 질문을 참조하십시오 .
다음은 파일에 여러 줄을 추가하는 예입니다.
{
echo ' directory "/var/cache/bind";'
echo ' listen-on { 127.0.0.1; };'
echo ' listen-on-v6 { none; };'
echo ' version "";'
echo ' auth-nxdomain no;'
echo ' forward only;'
echo ' forwarders { 8.8.8.8; 8.8.4.4; };'
echo ' dnssec-enable no;'
echo ' dnssec-validation no;'
} >> your_file.txt
주요 답변 외에도 파일에 슈퍼 사용자 권한이 필요한 경우 sudo
앞에 추가하면 echo
작동하지 않습니다.
쉘이 명령을 깨뜨리고 echo
루트로 실행되었지만 >>
일반 권한으로 실행 되었기 때문 입니다.
이것은 수퍼 유저에게 효과적입니다.
sudo su -c "echo 'Line 3' >> greetings.txt"
su
여기 필요하지 않습니다 ( sudo su
좋지 않습니다). 그러나 쉘 재 지정을 관리 할 무언가가 필요하다는 것은 옳다. 아마 sudo sh -c "echo stuff >> file.txt"
. 순 절약은 아니지만 더 나은 방법입니다.