Question very similar to How to append multiple lines to a file with bash but I want to start the file with --, and also append to the file, if possible.printf --no-color\n--format-doc\n--no-profile\n >> ~/.rspec-testThe issue is starting the file with -- gives me a:-bash: printf: --: invalid optionprintf: usage: printf [-v var] format [arguments]Is there a way to escape the --? Are there any alternatives? I'm not sure how to do multiple lines using echo, and cat isn't a good option, I'd like to have it in an automated script.
How to append multiple lines to a file with bash, with -- in front of string
shell script;options
Most commands that accept --foo as an option also accept -- by itself as an end of options, start of arguments marker - so you could do:printf -- --no-color\n--format-doc\n--no-profile\n >> ~/.rspec-testBut the more specific answer to your exact example is that the first argument to printf is a format specifier, and you're making things more difficult than necessary by not using printf for its formatting abilities.  This would be a better way to do what you want:printf %s\n --no-color --format-doc --no-profile >> ~/.rspec-testThat tells printf to take each argument it gets and print it, followed by a newline.  Easier than repeating the \n yourself, and it avoids the leading -- problem you were facing.  And it removes the need to escape any % signs that your strings might contain.As for how to do multiple lines with echo, you could use:echo -ne --no-color\n--format-doc\n--no-profile\n >> ~/.rspec-testOr, much more portably:{ echo --no-color; echo --format-doc; echo --no-profile; } >> ~/.rspec-testOr using cat along with a here-doc:cat >>.rspec-test <<EOF--no-color--format-doc--no-profileEOF