文字列の前に "--" を付けた bash を使用してファイルに複数行を追加する方法

文字列の前に

問題は次のようによく似ています。Bashを使用してファイルに複数行を追加する方法--しかし、ファイルを起動し、可能であればファイルに追加したいと思います。

printf "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test

問題は、「--」で始まるファイルが以下を提供することです。

-bash: printf: --: invalid option
printf: usage: printf [-v var] format [arguments]

脱出する方法はありますか--?他のオプションがありますか?複数行の操作を実行するために使用する方法がわかりませんechocat良いオプションではありません。自動化されたスクリプトに入れたいです。

ベストアンサー1

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

またはこちらのドキュメントでcatを使用してください。

cat >>.rspec-test <<EOF
--no-color
--format-doc
--no-profile
EOF

おすすめ記事