이 명령의 기능을 알아내도록 도와주세요.

이 명령의 기능을 알아내도록 도와주세요.

cron 작업 실행 문제를 해결하기 위한 명령을 stackoverflow에서 보았습니다. https://stackoverflow.com/questions/21926465/issues-running-cron-in-docker-on- Different-hosts 나는 유닉스 명령을 처음 접했기 때문에 이 명령이 정확히 무엇을 하는지 잘 모르겠습니다. 각 부분의 기능을 알려줄 수 있는 전문가가 있나요?

sed --regexp-extended --in-place 's/^session\s+required\s+pam_loginuid.so$/session optional pam_loginuid.so/' /etc/pam.d/crond

답변1

sed다음과 같이 사용할 수 있는 명령줄 텍스트 편집기입니다 sed -flags command file. 정규식을 사용하여 찾기 및 바꾸기에 가장 일반적으로 사용됩니다. 나는 그것이 많은 일을 할 수 있다는 것을 알았다https://www.grymoire.com/Unix/Sed.html좋은 초보자 가이드를 만듭니다. ( man페이지보다 사용자 친화적입니다.)

정규식(regex)은 특정 항목이 아닌 텍스트 패턴을 찾을 수 있는 일종의 복잡한 와일드카드 시스템과 같습니다.

--regexp-extended더 많은 기능을 갖춘 확장 정규식을 사용하도록 지시합니다.

--in-place출력을 쉘이나 표준 출력으로 인쇄하는 대신 파일을 변경하도록 지시합니다.

's/foo/bar'sed에 대한 대체 명령입니다(s는 Alternative를 나타냄). 각 줄에서 첫 번째 'foo'를 찾아 'bar'로 바꿉니다.

^session: ^정규식에서 줄의 시작을 나타냅니다.

\s+: \s"모든 공백"을 의미합니다. 즉, 정규 표현식의 공백이나 탭 또는 유사한 문자는 +하나 이상을 의미하므로 하나 이상의 공백/탭/등과 일치합니다. +정규식을 확장해야 함

...nuid.so$: $정규식의 줄 끝을 나타냅니다.

따라서 이것은 유사하지만 더 많은 공백/탭이 있는 파일의 모든 줄을 찾아서 하나의 공백 session optional pam_loginuid.so으로 바꾸고 파일에서 , 로 바꾸는 것입니다 .session optional pam_loginuid.sorequiredoptional/etc/pam.d/crond

이는 &&"이 명령이 0을 반환하면 다음 명령을 실행하십시오"를 의미하며 bash의 대부분은 충돌하지 않으면 0을 반환합니다. sed는 대체할 항목을 찾지 못하더라도 0을 반환하므로 거의 항상 이런 일이 발생합니다.

마지막 명령은 \줄바꿈을 무시하게 하므로 뭔가 작동하지 않는 한 다음 줄의 명령도 실행됩니다.

따라서 기본적으로 추가 공백을 변경 required하고 제거하지만 이것이 일반적으로 수행되는 작업을 optional파악하는 데 도움이 되기를 바랍니다.sed 's/thing/otherThing/'

관련 정보