나는 “/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;
}
}
내 문제는 내가 리눅스에 여전히 아주 익숙하지 않은데, 나는 sed를 사용할 수있을 것이라고 생각했지만, 나의 새로운 이해는 그것이 한 줄씩 읽으므로 여러 줄의 내용에 좋지 않다는 것이다. 나는 캐릭터의 일부가 perl을 방해 할 것이기 때문에 perl 작업을하는 법을 잘 모르고있다. 내 뇌는 NGINX가 어떻게 작동하는지 배우는 것만으로도 튀김이됩니다 …. 어떤 도움도 크게 받으실 수 있습니다.
내 현재 SED 명령 ….
잘 작동해야합니다. 예! :디
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
답변
sed
한 줄을 여러 줄로 변환 할 수 있습니다.
아래의 샘플 “proof of concept”스크립트를 살펴보십시오. 변환 된 “here doc”문서를 출력합니다.
#!/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
답변
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