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
. 즉, 쉘은 글로빙을 시도하고 쉘의 글로빙 결과가 올바른 구문이면 정규식 검색이 수행됩니다.filee
fileee
locate
b) 따옴표는 별표를 유지하도록 쉘에 지시합니다. locate
로 시작하는 파일을 찾습니다 file
. 정규식 검색이 없습니다.
c) 쉘은 a)에서와 같이 와일드카드를 시도합니다. 일치하는 항목이 없으면 locate
검색이 시작됩니다 file
. 정규 표현식이 없습니다.
d) 쉘은 표현식을 고려하지 않습니다. locate
정규식 검색이 수행되고 이름 등 의 파일 file
이 검색됩니다 .filee
fileee