2016-09-18 2 views

답변

3

일치하는 부분입니다.

case '-*' 스위치 된 매개 변수가 "-"로 시작될 때마다 실행됩니다.

첫 번째 일치하는 사례 만 사용되므로 마지막 사례 인 case '*'은 "기본값 :"과 유사합니다. 이전에 가지고 있었다면, 그 이후의 모든 사례를 삼킬 것입니다.

또한 물고기가 해당 glob을 확장하여 case -*이 현재 디렉토리에서 일치하는 모든 파일 이름을 매개 변수로 갖게되므로이 따옴표가 필요합니다. 전환 된 매개 변수가 파일 이름 인 경우 true가됩니다. 현재 디렉토리는 "-"로 시작합니다.

2

@faho's answer의 도움으로 -*의 목적을 이해합니다.

-*은 glob 패턴입니다. *.pdf 또는 Report_2016_*과 같은 패턴과 전혀 다릅니다.

작성자는 -으로 시작하는 모든 디렉토리를 무시하도록이 검사를 추가했습니다. -으로 시작하지만 CWD를 설정하지 않는 디렉토리가 생성됩니다.

이유는 -이 쉘에서 특별한 사용법을 가지고 있기 때문입니다.

예를 들어, cd -- 디렉토리로 디렉토리를 변경하지 않습니다. 대신 마지막 디렉토리로 전환합니다.

이름이 -으로 시작하는 디렉토리 또는 파일이 문제의 원인입니다. 자매 사이트에 대한 질문 다음에 아이디어가 있습니다.

당연 저자

  • How to cd into a directory with this name “-2” (starting with the hyphen)?
  • How do I delete a file whose name begins with “-” (hyphen a.k.a. dash or minus)?

    How do you enter a directory that's name is only a minus?

    1. -로 시작하는 디렉토리를 무시하기로 결정했다.