일치하는 항목이 있는데 왜 "일치 항목을 찾을 수 없음" 오류가 발생합니까?

일치하는 항목이 있는데 왜 "일치 항목을 찾을 수 없음" 오류가 발생합니까?
centos@ip-10-0-5-4 ~ $ sudo ls -l /var/solr/data/new_core/_default/*
zsh: no matches found: /var/solr/data/new_core/_default/*
centos@ip-10-0-5-4 ~ $ sudo ls -l /var/solr/data/new_core/_default/ 
total 4
drwxr-xr-x. 3 root root 4096 Mar 28 07:34 conf

답변1

*호출되기 전에 쉘에 의해 확장됩니다 sudo. 디렉토리에 대한 액세스 권한이 없으면 zsh쉘은 "일치하는 항목을 찾을 수 없습니다"라는 메시지를 표시합니다. shell NOMATCH에 쉘 옵션이 설정되어 있지 않으면 쉘 zsh은 패턴을 확장하지 않은 상태로 두고 ls"해당 파일 또는 디렉토리가 없습니다" 오류를 생성합니다( *디렉토리에 리터럴 이름을 가진 항목이 없는 경우). NOMATCH기본적으로 설정되어 있으면 호출 sudo ls되지도 않습니다.

다음을 수행할 수 있습니다.

sudo sh -c 'ls -l /var/solr/data/new_core/_default/*'

이렇게 하면 현재 셸이 루트로 실행하려는 명령줄을 사용하여 확장 *및 호출되는 것을 방지할 수 있습니다.sh

답변2

첫 번째 경우:

  1. 액세스 권한이 있으면 shell(*) /var/solr/data/new_core/_default/*centos.

  2. /var/solr/data/new_core/_default/*그런 다음 첫 번째 경우와 같이 명령을 확장합니다.

  3. 에는 *파일이나 디렉터리 가 /var/solr/data/new_core/_default/없으므로 no match found.

두 번째 경우에는 ls가 파일을 찾아 나열합니다.

(*) 이는 Filename Expansionzsh의 확장입니다(참고자료 참조 man zshexpn).

파일 이름 생성

단어에 "*" 문자 중 하나가 인용되지 않은 인스턴스로 포함된 경우...

단어는 패턴과 일치하는 정렬된 파일 이름 목록으로 대체됩니다.

centos이전 과 마찬가지로 sudozsh는 dir(예: file conf) 에 액세스할 수 없으므로 no match found.

관련 정보