파일에 내용을 추가하기 위해 다음을 시도했습니다.
printf "\nsource ~/script.sh" >> /etc/bash.bashrc
echo -e "\nsource ~/script.sh" >> /etc/bash.bashrc
cat >> "/etc/bash.bashrc" <<< "source ~/script.sh"
세 가지 방법 모두 작동합니다. cat
여기서 문자열은 끝부터 읽어야 하기 때문에( 에 cat
추가한 후) 덜 편안하다고 생각합니다 .[end]
[start]
어떤 방법도 자동으로 줄을 끊지 않으며 \n
개인적으로 최후의 수단으로 and 구문을 사용합니다. 또한 여기 문자열에 개행 문자를 추가하는 방법을 모르고 이 방법에서 그러한 방법을 찾지 못했습니다.printf
echo
문서.
내가 찾고 있는 것은 매개변수나 구문을 추가하지 않고 자동으로 줄을 삭제할 수 있는 유틸리티입니다. nix 텍스트 처리 유틸리티에 대해 읽어보았으나 원하는 내용을 찾지 못했습니다. 그런 유틸리티를 알고 있나요?
답변1
cat
"잘못된 방향"이라는 줄을 쓸 필요는 없습니다 . 이렇게 하면 문제 없이 작동합니다(물론 여기 문자열의 화살표는 여전히 이상한 방향을 가리킵니다).
$ cat <<< "some text" >> testfile
$ cat testfile
some text
주석에서 언급했듯이 here-string은 끝에 개행 문자를 추가하는 반면 with printf
및 echo
you는 다음을 사용합니다.\n
앞에끈.
echo
여기에 있는 문자열처럼 일반적으로 후행 줄 바꿈이 추가되므로 이것이 필요한 전부라면 echo
괜찮을 것입니다(대부분의 셸에 내장된 함수입니다.)
모든 명령은 개행에서 약간 다르게 작동합니다.
cat >> file <<< "string" # newline at end
printf "\nstring" >> file # newline at beginning
echo -e "\nstring" >> file # newline at beginning and at the end
솔직히, 나는 이 표기법에 익숙해지는 것이 가장 좋다고 생각 \n
하지만, 마음에 들지 않으면 항상 여기에 문서가 있습니다(선행 및 후행 줄 바꿈이 여기에 포함됩니다).
cat >> file <<EOF
some text
EOF
답변2
파일이 개행으로 끝나는 경우(모든 올바른 POSIX 텍스트 파일이 그렇듯이) 개행을 추가할 필요가 없습니다.앞으로파일에 추가하는 텍스트입니다.
파일이 개행 문자로 끝나는지 확인하는 한 가지 방법은 다음 명령을 실행하는 것입니다.
$ sed -i -e '$a\' file
개행 문자가 추가됩니다.오직파일에 개행 문자가 누락된 경우.
그런 다음 원하는 텍스트와 개행 문자를 추가하여 텍스트 파일이 여전히 개행 문자로 끝나는지 확인할 수 있습니다.
a="source ~/script.sh"
echo -e "$a" >> file # with trailing new line
printf "$a\n" >> file # with trailing new line
<<< "$a" cat >> file # with trailing new line
cat 명령의 순서가 게시한 순서와 변경되었습니다.
필요하다면추가의새 라인을 부팅하려면 다음을 사용하십시오.
a="source ~/script.sh"
{ echo; echo -e "$a" ; } >>file
echo -e "\n$a" >>file
printf '%b' "\n$a\n" >>file
a=$'\nsource ~/script.sh'
<<<"$a" cat >>file
cat 옵션을 사용하여 추가 줄바꿈을 원하면 다음을 사용하세요.
a=$'\nsource ~/script.sh\n'
<<<"$a" cat >>file
이것은 추가됩니다둘후행 새 줄, 변수에서 한 줄 , (여기서는 문자열) $a
에서 (필연적으로) 한 줄 .<<<
답변3
가능하기 때문에 append
Python에서 명령을 실행하는 방법은 다음과 같습니다.
#!/usr/bin/env python
import sys
with open(sys.argv[2],"a") as f:
f.write(sys.argv[1] + "\n")
그리고 이렇게 작동합니다.
$ echo "first line" > input.txt
$ ./append "Hello Unix.se" input.txt
$ cat input.txt
first line
Hello Unix.se