문자열 앞에 "--"가 있는 bash를 사용하여 파일에 여러 줄을 추가하는 방법

문자열 앞에 "--"가 있는 bash를 사용하여 파일에 여러 줄을 추가하는 방법

문제는 다음과 매우 유사합니다.Bash를 사용하여 파일에 여러 줄을 추가하는 방법--하지만 파일을 시작 하고 가능하다면 파일에도 추가하고 싶습니다 .

printf "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test

문제는 "--"로 시작하는 파일이 다음을 제공한다는 것입니다.

-bash: printf: --: invalid option
printf: usage: printf [-v var] format [arguments]

탈출할 방법이 있나요 --? 다른 옵션이 있나요? 여러 줄 작업을 수행하는 데 를 사용하는 방법을 잘 모르겠습니다 echo. cat좋은 옵션이 아닙니다. 자동화된 스크립트에 넣고 싶습니다.

답변1

--foo옵션으로 받아들이는 대부분의 명령은 --스스로를 "옵션 끝, 인수 시작" 표시로도 받아들입니다. 따라서 다음과 같이 할 수 있습니다.

printf -- "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test

그러나 정확한 예에 대한 더 구체적인 대답은 printf에 대한 첫 번째 인수가 형식 지정자이고 printf의 형식 지정 기능을 사용하지 않으면 상황이 필요 이상으로 어려워진다는 것입니다. 이것은 당신이 원하는 것을 수행하는 더 좋은 방법이 될 것입니다:

printf "%s\n" --no-color --format-doc --no-profile >> ~/.rspec-test

이는 printf에게 각 인수를 가져와서 인쇄하고 그 뒤에 개행 문자가 오도록 지시합니다. 반복하는 것보다 쉬우며 \n직면하는 주요 문제를 피할 수 있습니다. 그리고 --문자열에 포함될 수 있는 기호를 이스케이프할 필요가 없습니다 .%

여러 줄 작업을 수행하는 방법은 다음을 echo사용할 수 있습니다.

echo -ne "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test

또는 더 휴대성이 뛰어납니다.

{ echo --no-color; echo --format-doc; echo --no-profile; } >> ~/.rspec-test

또는 여기 문서와 함께 cat을 사용하세요.

cat >>.rspec-test <<EOF
--no-color
--format-doc
--no-profile
EOF

관련 정보