"/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을 어떻게 작동하게 만드는지 잘 모르겠습니다. 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
답변1
sed
한 줄을 여러 줄로 변환할 수 있습니다.
아래의 샘플 "개념 증명" 스크립트를 살펴보세요. 변환된 "여기 문서" 문서를 출력합니다.
#!/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