Większość poleceń, które akceptują --foo
jako opcję --
, samo w sobie akceptuje również znacznik „koniec opcji, początek argumentów” - dzięki czemu możesz:
printf -- "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
Ale bardziej szczegółową odpowiedzią na twój dokładny przykład jest to, że pierwszym argumentem printf jest specyfikator formatu, a ty utrudniasz to, niż jest to konieczne, nie używając printf do jego zdolności formatowania. Byłby to lepszy sposób na robienie tego, co chcesz:
printf "%s\n" --no-color --format-doc --no-profile >> ~/.rspec-test
Oznacza to, że printf musi pobrać każdy otrzymany argument i wydrukować go, a następnie nowy wiersz. Łatwiejsze niż powtarzanie \n
siebie i pozwala uniknąć wiodącego --
problemu. I eliminuje potrzebę ucieczki od wszelkich %
znaków, które mogą zawierać twoje łańcuchy.
Jeśli chodzi o sposób wykonywania wielu linii echo
, możesz użyć:
echo -ne "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
Lub, znacznie bardziej przenośnie:
{ echo --no-color; echo --format-doc; echo --no-profile; } >> ~/.rspec-test
Lub używając kota wraz z dokumentem tutaj:
cat >>.rspec-test <<EOF
--no-color
--format-doc
--no-profile
EOF