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
첫 번째 경우:
액세스 권한이 있으면 shell(*)
/var/solr/data/new_core/_default/*
이centos
./var/solr/data/new_core/_default/*
그런 다음 첫 번째 경우와 같이 명령을 확장합니다.에는*
파일이나 디렉터리 가/var/solr/data/new_core/_default/
없으므로no match found
.
두 번째 경우에는 ls가 파일을 찾아 나열합니다.
(*) 이는 Filename Expansion
zsh의 확장입니다(참고자료 참조 man zshexpn
).
파일 이름 생성
단어에 "*" 문자 중 하나가 인용되지 않은 인스턴스로 포함된 경우...
단어는 패턴과 일치하는 정렬된 파일 이름 목록으로 대체됩니다.
centos
이전 과 마찬가지로 sudo
zsh는 dir(예: file conf
) 에 액세스할 수 없으므로 no match found
.