새 줄 아래로 콘텐츠 리디렉션(추가 구문이나 매개변수가 필요하지 않음)

새 줄 아래로 콘텐츠 리디렉션(추가 구문이나 매개변수가 필요하지 않음)

파일에 내용을 추가하기 위해 다음을 시도했습니다.

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 구문을 사용합니다. 또한 여기 문자열에 개행 문자를 추가하는 방법을 모르고 이 방법에서 그러한 방법을 찾지 못했습니다.printfecho문서.

내가 찾고 있는 것은 매개변수나 구문을 추가하지 않고 자동으로 줄을 삭제할 수 있는 유틸리티입니다. nix 텍스트 처리 유틸리티에 대해 읽어보았으나 원하는 내용을 찾지 못했습니다. 그런 유틸리티를 알고 있나요?

답변1

cat"잘못된 방향"이라는 줄을 쓸 필요는 없습니다 . 이렇게 하면 문제 없이 작동합니다(물론 여기 문자열의 화살표는 여전히 이상한 방향을 가리킵니다).

$ cat <<< "some text" >> testfile
$ cat testfile
some text

주석에서 언급했듯이 here-string은 끝에 개행 문자를 추가하는 반면 with printfechoyou는 다음을 사용합니다.\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

가능하기 때문에 appendPython에서 명령을 실행하는 방법은 다음과 같습니다.

#!/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

관련 정보