last update 2017年7月24日 17:18

catコマンドで連結するファイルの間に改行や文字列を追加する方法

コネタですが、先日、nginx に中間証明書をインストールした時の話し。

cat コマンドでサーバー証明書と中間証明書ファイルを連結して、`nginx -s t` で設定ファイルをテストしたら、

PEM_read_bio:bad end line.

というエラーが出てしまいました。

なんじゃらほい、と思って cat で連結した証明書ファイルを確認すると、証明書チェーンが、

-----BEGIN CERTIFICATE-----
(証明書1)
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
(証明書2)
-----END CERTIFICATE-----

なんていう形式になっており、こりゃあかん。

vi とかでENDとBEGINの間にある10個の「-」のうち、5個目と6個目の間に改行を入れても良いのですが、そういえば cat って間に任意の文字列を挿入できないのかなー。と、ふと思ったので調べてみました。

いろんな方法があろうとは思いますが、個人的に一番しっくりくるのが、

cat head.pem <(echo) body.pem > chain.pem

これで、chain.pem に「head.pem」+改行+「body.pem」が出力されます。

ちなみに、文字列入りの行を挿入する場合は、

cat head.pem <(echo foobar) body.pem > chain.pem

とすればOK。

えーと、スプラトゥーン2ばっかりやってて忙しいので、適当なネタでお茶を濁してるんじゃ?と思われそうですが、正解です。

コメントを記入