A maioria dos comandos que aceitam --foo
como opção também aceitam --
por si só como um marcador "fim de opções, início de argumentos" - para que você possa fazer:
printf -- "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
Mas a resposta mais específica ao seu exemplo exato é que o primeiro argumento para printf é um especificador de formato, e você está dificultando as coisas do que o necessário, não usando printf para suas habilidades de formatação. Essa seria a melhor maneira de fazer o que você deseja:
printf "%s\n" --no-color --format-doc --no-profile >> ~/.rspec-test
Isso diz ao printf para pegar cada argumento recebido e imprimi-lo, seguido por uma nova linha. Mais fácil do que repetir a \n
si mesmo e evita o principal --
problema que você estava enfrentando. E remove a necessidade de escapar quaisquer %
sinais de que suas cordas pode conter.
Quanto a como fazer várias linhas echo
, você pode usar:
echo -ne "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
Ou, de maneira muito mais portável:
{ echo --no-color; echo --format-doc; echo --no-profile; } >> ~/.rspec-test
Ou usando o gato junto com um documento aqui:
cat >>.rspec-test <<EOF
--no-color
--format-doc
--no-profile
EOF