![zip - -r 플래그를 사용할 때 "."와 "*.[^.]*" 패턴의 차이점](https://linux55.com/image/191880/zip%20-%20-r%20%ED%94%8C%EB%9E%98%EA%B7%B8%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EB%95%8C%20%22.%22%EC%99%80%20%22*.%5B%5E.%5D*%22%20%ED%8C%A8%ED%84%B4%EC%9D%98%20%EC%B0%A8%EC%9D%B4%EC%A0%90.png)
zip
디렉터리 내용(숨겨진 파일 및 디렉터리 포함)을 반복적으로 압축하기 위해 플래그와 함께 명령을 사용할 때 -r
다음의 차이점은 무엇입니까?
zip ../foo.zip -r .
그리고:
zip ../foo.zip -r * .[^.]*
아니면 정확히 같은가요?
첫 번째 명령은 .
현재 디렉터리( )를 대상으로 해야 하며 -r
인수에는 모든 숨겨진 파일과 디렉터리가 포함되어야 합니다.
두 번째 명령은 내가 올바르게 기억한다면 현재 디렉터리(첫 번째 디렉터리 *
)에서 점이 아닌 모든 파일과 일치한 다음 .
char로 시작하고 그 뒤에 [^.]
점( )을 제외한 모든 문자가 오는 모든 파일과 일치하므로 ..
상위 디렉터리는 제외됩니다.
온라인 예제에서 두 번째 명령을 찾았지만 정확히 동일한 작업을 수행한다면 더 간단한 첫 번째 명령 대신 이 명령을 사용할 의미가 없습니다.
또한 POSIX 쉘 스크립트에서 ShellCheck는 대체되어야 하는 기호에 대해 불평합니다 . 이는 * .[^.]*
간단한 함수가 동일한 작업을 수행할 수 있다면 이를 사용하지 않는 또 다른 좋은 이유입니다../* .[!.]*
.
zip ../foo.zip * .[^.]*
내 생각엔 (플래그 없이 ) 발견한 예제에서 -r
명령이 실행되었고 -r
플래그는 -r
현재 경로( .
)가 대신 대상이 되었다고 생각하지 않고 추가된 것입니다 * .[^.]*
.
그래서 내 질문은: 이 플래그를 사용할 때 이 두 명령이 동일합니까 -r
? 내 추측이 맞나요?