listen = 127.0.0.1:9000
나는 로 교체하고 싶다listen = '/var/run/php56-fpm.sock'
sudo sed -i 's/listen = 127.0.0.1:9000/listen = \'/var/run/php56-fpm.sock\'/g' /etc/php-fpm.d/www.conf
실수:
bash: -c: line 63: unexpected EOF while looking for matching `''
bash: -c: line 64: syntax error: unexpected end of file
답변1
먼저, A single quote may not occur between single quotes, even when preceded by a backslash.
참고자료배쉬 매뉴얼
둘째, 문자열의 구분 기호를 /
바꾸는 대신 다른 문자를 구분 기호로 사용할 수도 있습니다 ./
결과 :
sudo sed "s#listen = 127.0.0.1:9000#listen = '/var/run/php56-fpm.sock'#g" /etc/php-fpm.d/www.conf
아직 사용되지 않았습니다 -i
. 인쇄물을 확인하여 예상대로 작동하는지 확인하세요.
답변2
구분을 위해 / 대신 다른 문자를 사용해 보세요.
sudo sed -i "s@listen = 127.0.0.1:9000@listen = '/var/run/php56-fpm.sock'@g" /etc/php-fpm.d/www.conf
또는
sudo sed -i "s/listen = 127.0.0.1:9000/listen = '\/var\/run\/php56-fpm.sock'/g" /etc/php-fpm.d/www.conf
문제는 /
as를 이스케이프 처리하지 않고 \/
@를 구분 기호로 사용하면 문제가 해결된다는 것입니다. 일관성이 있는 한 sed에서는 어떤 구분 기호라도 사용할 수 있습니다.
@David의 설명이 정확합니다. bash 매뉴얼을 따르고 큰따옴표를 사용하세요.
팁: 모든 UX 파일의 마지막 빈 줄에는 EOF가 필요합니다.