" ls "*" " 명령이 아무것도 표시하지 않는 이유는 무엇입니까?

" ls "*" " 명령이 아무것도 표시하지 않는 이유는 무엇입니까?
 ls "*"

이것은 내 디렉토리에 아무것도 표시하지 않습니다. 왜?

*와일드카드가 모든 것을 보여주지 않나요?

답변1

큰따옴표로 묶인 경우 *전역으로 간주되지 않으므로 확장되지 않습니다. 따라서 존재하지 않을 수 있는 ls이름의 파일을 나열 하도록 요청하고 있습니다 .*

모든 파일을 보려면 ls기본 동작이 현재 디렉터리의 모든 파일을 표시하는 것이므로 인수 없이 실행할 수 있습니다. ls어떤 이유로든 모든 파일을 인수로 전달하려면 따옴표를 제거하고 다음을 실행하세요 .

ls *

근데 좀 닮음

ls

파일이 많은 경우를 제외하고는 *너무 많은 인수를 전달하여 디렉터리의 내용을 표시하도록 확장될 수 있으며, ls그 자체로는 디렉터리가 하위 디렉터리로 내려오지 않고 현재 디렉터리에 있다는 것만 표시합니다.ls *ls

답변2

ls *.* /Dir (dir is optional) 

사용자의 현재 작업 디렉토리(pwd로 검색됨) 또는 /Dir에 있는 모든 파일(파일 유형에 관계없이)을 나열하고

ls * /Dir (dir optional)

사용자의 현재 작업 디렉터리 또는 /Dir에 있는 모든 파일과 디렉터리를 나열합니다. 하지만,

ls "*" & ls *.* 

필요하기 때문에 재귀적으로 나열하지 않습니다.

ls -R *.* /Dir

또는

ls -R "*" /Dir

왜인지는

ls "*"

작동하지 않습니다. 맞습니다. *는 다음과 같이 ls를 호출할 때 와일드카드입니다.

ls "*"

이름에 별표가 있는 파일 및/또는 디렉토리를 찾도록 bash에 요청하고 있습니다. IDE를 설치했지만 해당 구성과 기본 파일을 찾을 수 없어서 다음 명령을 사용하여 파일을 찾았습니다.

(패턴과 일치하는 파일을 찾아 특정 파일로 리디렉션)

locate *eclipse* >locate_eclipse.txt
locate *tar* > locate_tar.txt
locate *.tar* > locate_".tar".txt
locate *compiler* > locate_compiler.txt
locate *JRE* > locate_JRE.txt
locate *jre* > locate_jre.txt

(파일시스템 전체를 검색하여 패턴과 일치하는 것만 출력)

ls -R / | grep "eclipse"
ls -R / | grep "tar"
ls -R / | grep ".tar"
ls -R / | grep "compiler"
ls -R / | grep "JRE"

글이 길어져서 죄송하지만 대부분의 기본 사항을 다루려고 노력했습니다.

관련 정보