$ ls -a
. .git Dockerfile node_modules tsconfig.json .. .github ENTRYPOINT.sh package.json yarn.lock .dockerignore .gitignore build public .eslintrc .prettierrc db.json src
$ cp -r {sourceDirectory}/* {destinationDirectory}
위 실행의 결과는 어떻게 될까요.
위 명령을 실행했을 때, 처음 (sourceDirectory)의 내용과 같은 상태가 출력될까요?
안됩니다.
이렇게 될 겁니다.
$ ls -a {destinationDirectory}
. Dockerfile node_modules tsconfig.json .. ENTRYPOINT.sh package.json yarn.lock build public db.json src
$
와일드카드를 이용해, 개별파일을 복사하거나 이동할 경우, '.'문자로 시작하는 숨김파일은 처리되지 않습니다.
숨김파일까지 처리하려면 어떤 방법을 써야할까요?
> 방법 1 ( bash로만 가능 )
bash에는 shopt( shell option )라는 커맨드가 있습니다. (zsh에는 없네요..?)
여기에서 각종 편의기능을 제공하는데, dotglob기능을 이용하면 됩니다.
shopt -s dotglob # (turn on dot files)
## cp or mv any files with or without dot ##
shopt -u dotglob # (turn off dot files)
첫 줄의 커맨드로 .숨김파일이 글로벌하게 노출되고, 셋째 줄의 커맨드로 원래 상태로 되돌립니다.
그 사이에 와일드카드를 이용한 원하던 복사 이동 작업을 하면 되죠!
( 사실 새로운 bash환경을 열어서 작업을 수행했다면, 그냥 나가면 되기 때문에, 세 번 째 라인이 필요없죠. 개꿀! )
> 방법 2 ( 평-범 )
위의 방법은 깔끔하지만 굳이 bash로 가야하는 오묘한 귀찮음이 있습니다.
그냥 내가 쓰는 환경에서 대강 할 수는 없단 말인가?
여러 방법을 모색해 보았으나, 그럴 땐 이 방법이 그냥 최선인 것 같네요.
cp -r {sourceDirectory}/* {destinationDirectory}
cp -r {sourceDirectory}/.* {destinationDirectory}
넹.
두 번 작업하면 됩니다.
' . '을 명시한 와일드카드를 사용하면, 모든 숨김파일을 처리해 줍니다.
만약에 숨김폴더 안의 숨김폴더 안의 숨김파일같은 중첩된 숨김파일은 어떻게 되냐구요??
폴더를 통채로 옮기는 경우에는, 숨김파일까지 한 번에 완전히 옮겨집니다!
그 외에도 여러 기발한 방법들이(find를 사용한다거나..) 있지만, 실제 작업에 적용하기엔 무리가 있는 난해한 해답이란 생각이 드네요.
( 아래에 적어 둔 참고 페이지에는 제대로 작동하지 않는 각종 어설픈 답변들이 있으니 잘 걸러서 보시길 바랍니다. )
참고
'Developing > others' 카테고리의 다른 글
[ AWS, CodeDeploy ] 분명히 고쳤는데 CodeDeploy가 계속 실패 뜬다면 (1) | 2023.03.12 |
---|---|
[ Shell ] 셔뱅을 근본있게 작성하자 (0) | 2023.03.04 |
[ ?? ] 카카오톡의 신기능으로 놀아보자 (0) | 2022.12.20 |
[ Python ] pip: bad interpreter: no such file or directory (MacOS) (0) | 2022.11.22 |