위치 지정 명령 정규식에 대해 알아보기

위치 지정 명령 정규식에 대해 알아보기

locate정규식과 함께 명령을 사용 하려면 패턴을 따옴표로 묶고 --regex옵션을 전달해야 합니까? 그렇다면 다음은 무엇을 의미합니까?

ㅏ) locate --regex file*? 여기서 정규식이나 쉘 와일드카드가 발생합니까?

b) locate 'file*'?통과하지 못하더라도 정규식 검색이 대상이 되나요 --regex?

c) locate file* // 쉘 와일드카드가 발생한다는 것을 알고 있습니다.

d) locate --regex 'file*'// 정규식 검색이 데이터베이스 파일에서 수행된다는 것을 알고 있습니다.

답변1

쉘 프롬프트에서 명령을 입력할 수 있습니다. 쉘은 와일드카드, 대체 변수, 대체 $()등을 포함하여 입력한 내용을 처리합니다. 입력을 처리한 후 셸은 명령을 실행합니다.

문자열에 셸 특정 문자(예: 공백 또는 별표)가 포함되어 있지만 셸에서 해당 문자를 처리하지 않으려면 따옴표를 사용해야 합니다. 현재 디렉터리에 일치하는 파일이 없으면 별표를 인용하지 않고는 벗어날 수 없지만 어쨌든 인용하는 것이 좋습니다.

--regex이 옵션은 쉘 작동에 아무런 영향을 미치지 않는다는 점을 이해하는 것이 중요합니다 . 먼저, 쉘은 사용자가 입력하는 명령을 처리합니다. locate이 처리 결과를 가져옵니다.

a) 현재 디렉토리에 일치하는 파일이 있으면 file*쉘은 이를 file*이러한 파일 목록으로 대체합니다.전화하기 전에locate. 일치하는 항목이 없으면 쉘은 건드리지 않고 이름 등 의 파일을 file*찾습니다 file. 즉, 쉘은 글로빙을 시도하고 쉘의 글로빙 결과가 올바른 구문이면 정규식 검색이 수행됩니다.fileefileeelocate

b) 따옴표는 별표를 유지하도록 쉘에 지시합니다. locate로 시작하는 파일을 찾습니다 file. 정규식 검색이 없습니다.

c) 쉘은 a)에서와 같이 와일드카드를 시도합니다. 일치하는 항목이 없으면 locate검색이 시작됩니다 file. 정규 표현식이 없습니다.

d) 쉘은 표현식을 고려하지 않습니다. locate정규식 검색이 수행되고 이름 등 의 파일 file이 검색됩니다 .fileefileee

관련 정보