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


9

질문 은 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좋은 옵션이 아닙니다, 나는 자동화 된 스크립트에 그것을 가지고 싶습니다.

답변:


17

--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

또는 here-doc과 함께 cat을 사용하십시오.

cat >>.rspec-test <<EOF
--no-color
--format-doc
--no-profile
EOF
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.