「/etc/nginx/nginx.conf」ファイルのバックアップを作成したい
次に、ファイル内の次の行を編集します。
include /etc/nginx/sites-enabled/*;
代わりに次のように表示されます...
include /etc/nginx/sites-enabled/*;
server {
listen 8081;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect default;
auth_basic "Server Administration";
auth_basic_user_file /etc/nginx/passwords;
}
}
問題は、Linux にまだ慣れていないことです。sed を使用できると思っていましたが、新しい理解では、sed は行ごとに読み取るため、複数行のコンテンツには適していないということです。一部の文字が perl に干渉するため、perl で sed を動作させる方法がわかりません。NGINX の動作を学習しているだけで頭が疲れてしまいました... どのような助けでも大歓迎です。
私の現在のSEDコマンド....
問題なく動作するはずです。やったー!:D
sudo sed -i.bak 's/^ include \/etc\/nginx\/sites-enabled\/\*\;$/&\n \n server {\n listen 8081\;\n \n location \/ {\n proxy_pass http:\/\/127.0.0.1:8080\/\;\n proxy_redirect default\;\n auth_basic "Server Administration"\;\n auth_basic_user_file \/etc\/nginx\/passwords\;\n }\n}\n/' /home/pi/Public/NGINX-test/nginx.conf
答え1
sed
1 行を複数行に変換できます。
以下のサンプルの「概念実証」スクリプトをご覧ください。変換された「ヒア ドキュメント」ドキュメントを出力します。
#!/bin/sh
sed 's/^include \/etc\/nginx\/sites-enabled\/\*;$/&\nYES!/' <<END
input-line:1
include /etc/nginx/sites-enabled/*;
input-line:3
include /etc/nginx/sites-enabled/*;
END
答え2
Andrzej A. Flip が提供した情報に加えて、セミコロン (;)、アスタリスク (*)、およびスラッシュ (/) 文字をエスケープする必要があります。\n は新しい行になり、.bak 拡張子で変更を行う前に -i.bak を使用してファイルのバックアップを作成します。
sudo sed -i.bak 's/^ include \/etc\/nginx\/sites-enabled\/\*\;$/&\n \n server {\n listen 8081\;\n \n location \/ {\n proxy_pass http:\/\/127.0.0.1:8080\/\;\n proxy_redirect default\;\n auth_basic "Server Administration"\;\n auth_basic_user_file \/etc\/nginx\/passwords\;\n }\n}\n/' /home/pi/Public/NGINX-test/nginx.conf