La mayoría de los comandos que aceptan --foo
como opción también aceptan --
por sí mismos como un marcador de "fin de opciones, inicio de argumentos", por lo que podría hacer:
printf -- "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
Pero la respuesta más específica a su ejemplo exacto es que el primer argumento para printf es un especificador de formato, y está haciendo las cosas más difíciles de lo necesario al no usar printf para sus capacidades de formateo. Esta sería una mejor manera de hacer lo que quieres:
printf "%s\n" --no-color --format-doc --no-profile >> ~/.rspec-test
Eso le dice a printf que tome cada argumento que obtenga e imprima, seguido de una nueva línea. Es más fácil que repetirlo \n
usted mismo y evita el --
problema principal al que se enfrentaba. Y elimina la necesidad de escapar de cualquier %
señal que puedan contener sus cadenas.
En cuanto a cómo hacer múltiples líneas echo
, puede usar:
echo -ne "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
O, mucho más portátil:
{ echo --no-color; echo --format-doc; echo --no-profile; } >> ~/.rspec-test
O usando cat junto con un documento aquí:
cat >>.rspec-test <<EOF
--no-color
--format-doc
--no-profile
EOF