ed(1)은 파일의 각 줄에 ^M을 추가합니다.

ed(1)은 파일의 각 줄에 ^M을 추가합니다.

WordPress 설치 자동화 작업을 하고 있습니다. wp-config.php 파일을 편집할 때 put your unique phrase here포함된 8줄을 WordPress.org 서버에서 생성된 Salt로 바꿔야 합니다 .

그래서 나는 최고의 답변을 사용했습니다.이 페달이 스크립트를 실행하라는 메시지가 표시됩니다.

#!/bin/sh

SALT=$(curl -L https://api.wordpress.org/secret-key/1.1/salt/)
STRING='put your unique phrase here'
printf '%s\n' "g/$STRING/d" a "$SALT" . w | ed -s wp-config.php

이는 필요한 행을 적절한 솔트로 대체하므로 잘 작동합니다. 그러나 ^M새로 추가된 문자열을 제외하고 wp-config.php의 모든 문자열 끝에 1을 추가합니다.

이제 다음과 같이 보입니다.

 */^M
^M
define('AUTH_KEY',         '|%)Y1>vzXGRbE?`FFZX3Mq|ur?tN/,R&%@)juSc?f@bNPYm~P=aF&Fl?!HGF4V}a');
define('NONCE_SALT',       '6;KHO6=[<daU7t|]dA`Ta-h7.2B@3Sa`daIinz/6!O=GQWE(@r(<3L+X,/:[du%Q');
/**
**/^M
^M
/**^M
 * WordPress Database Table prefix.^M

나는 ed(1)에 대해 잘 모르므로 어떤 도움이라도 주시면 감사하겠습니다.

답변1

질문에서 언급한 일련의 명령은 ^M텍스트 파일에 캐리지 리턴(things)을 추가하지 않습니다.

그러나 모든 DOS 텍스트 파일과 같이 파일의 각 줄 끝에 이미 캐리지 리턴이 있는 경우 파일에 DOS가 아닌 줄이 추가됩니다. 즉, 편집 후 텍스트 파일에 일부 줄이 있음을 의미합니다. Unix 텍스트 줄과 그 중 일부는 DOS 텍스트 줄입니다. 파일을 보는 데 어떤 편집기를 사용하든 관계없이 파일을 어떻게 처리할지 파악하고 파일을 Unix 텍스트 파일로 표시할지, 캐리지 리턴을 다음과 같이 표시할지 결정해야 합니다 ^M( vim예: 이렇게 하면 됩니다).

dos2unix해결책은 파일에서 실행하는 것입니다 wp-config.php. 혼합 유형의 라인을 처리하고 전체 파일을 Unix 텍스트 파일로 변환할 수 있습니다.

또한 ed스크립트를 편집하면깨끗하게put your unique phrase here문서의 문자열을 바꿉니다. 문서를 보면

000
AAA
put your unique phrase here
BBB
XXX

...명령 시퀀스가 ​​생성됩니다.

000
AAA
BBB
define('AUTH_KEY',...
...
XXX

BBB(앞줄과 뒷줄의 위치를 ​​참고하세요) 위의 텍스트 앞에 행이 추가되도록 이 문제를 해결하려면 define명령을 command로 변경하십시오.BBBai현재 줄 앞에 삽입끝에 추가하는 대신 ("현재 줄"은 명령이 수정한 줄 뒤에 BBB오기 때문에 해당 줄이 됩니다).g//d

관련 정보