와일드카드 문자 `* `는 일부 문자열과 일치할 수 없습니까?

와일드카드 문자 `* `는 일부 문자열과 일치할 수 없습니까?
ls  -al  .functions*
-rw-r--r-- 1 root root 471040 Mar  2 10:01 .functions.php.swo
-rw-r--r-- 1 root root 438272 Mar  2 09:57 .functions.php.swp

*일치할 수 .php.swo있으며 .php.swp
*일치하지 않습니까 .functions.php?

ls  -al  *.swo
ls: cannot access '*.swo': No such file or directory
ls  -al  *swo
ls: cannot access '*swo': No such file or directory

답변1

점으로 시작하는 파일은 기본적으로 파일 목록에서 숨겨집니다. 이러한 종류의 파일을 일치시키는 가장 쉬운 방법은 표현식 시작 부분에 점을 넣는 것입니다. 그러나 이는 ..

ls  -al  .*.swo

대안은 dotglob명령을 실행하기 전에 설정하는 것입니다. 그러면 다음으로 시작하는 파일이 .포함됩니다.

shopt -s dotglob

~/.bashrc기본적으로 설정하려면 에 추가하세요 .

참고하세요설정 dotglob으로 인해 의도하지 않은 결과가 발생할 수 있습니다.bash 쉘을 사용할 때 .(현재 디렉토리)와 ..(상위 디렉토리)가 모두 나타나기 때문입니다 *. 세트 로 dotglob,절대을 사용해보십시오 rm -R *.

답변2

로서확대-aShaido의 답변에 대해 여기서 옵션이 작동하지 않는 이유를 설명하고 싶습니다 .

명령 ls~ 아니다와일드카드를 처리합니다. 명령줄 해석기는 다음 단계를 수행합니다.

명령줄 " "을 입력하면 mycommand *.c명령줄 해석기는 먼저 와일드카드 문자열 " *.c"을 일치하는 파일 목록으로 바꾼 다음 결과 명령줄을 실행합니다.

mycommand a.c file.c test.c

-a명령줄 해석기는 모든 명령에 대해 동일한 방식으로 작동하므로 명령 의 경우 "숨겨진 파일 포함"을 의미하는지 알 수 없습니다 ls( -a다른 명령의 경우 완전히 다른 의미를 가짐).

관련 정보