나는 네트워크의 고정된 위치로 파일을 쉽게 보낼 수 있도록 내 모든 컴퓨터에 배치할 수 있는 함수를 작성하려고 합니다.
이것은 지금까지 내 스크립트입니다. 내 컴퓨터의 일부 폴더에는 이름이 중복될 수 있으므로 폴더 이름 끝에 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에 대한 구체적인 지원이 있다고 생각합니다.