이름이 귀찮은 폴더에 쉘 함수 scp를 사용하는 방법

이름이 귀찮은 폴더에 쉘 함수 scp를 사용하는 방법

나는 네트워크의 고정된 위치로 파일을 쉽게 보낼 수 있도록 내 모든 컴퓨터에 배치할 수 있는 함수를 작성하려고 합니다.

이것은 지금까지 내 스크립트입니다. 내 컴퓨터의 일부 폴더에는 이름이 중복될 수 있으므로 폴더 이름 끝에 uuid를 추가했습니다.

function putOnSG3() {
uuid=`uuidgen`
if [[ -d $1 ]]; then scp -rv "$1" shiny:/Volumes/Seagate3To/"$1.$uuid";
else echo $1 " is not a directory. Not copying.";
fi;
}

나는 그것을 이렇게 부른다:

$ putOnSG testFo\[l\}der

문제는 이것이다:

zsh:1: bad pattern: /Volumes/Seagate3To/testFo[l}der.d84abc26-501b-4f89-a636-518b4059a770

이러한 성가신 파일 이름을 어떻게 관리합니까?

대상 파일 시스템은 대소문자를 구분하는 hfsplus이고 소스 파일 시스템은 Linux 시스템 및 NTFS의 다양한 extf입니다.

답변1

가능한 해결책은 다음과 같습니다.

function putOnSG() {
uuid=`uuidgen`
if [[ -d $1 ]]; then du -sh "$1";
scp -rv "$1" shiny:/Volumes/Seagate3To/\"$1\".$uuid
else echo $1 "is not a directory. Not copying.";
fi;
}

작동하지 않는 원래 솔루션과의 유일한 차이점은 scp의 두 번째 매개변수에 있는 따옴표 주위의 백슬래시였습니다.

답변2

[,], (,), # 등 모든 특수 기호는 백슬래시 "\" 뒤에 써야 합니다. 다음을 시도해 볼 수 있습니다.

$ touch test\[ ; ll test\[ ;
-rw-r--r-- 1 s.gvozdetskiy s.gvozdetskiy 0 Dec 12 12:00 test[
$ mkdir test\[ ; ll ./
...
drwxr-xr-x 2 s.gvozdetskiy s.gvozdetskiy     4096 Dec 12 12:04 test[
...

hfsplus에 대한 구체적인 지원이 있다고 생각합니다.

관련 정보