저는 WSL2에서 Ubuntu를 실행하고 있습니다. 나는 종종 학교 웹사이트에서 압축된 과제 파일을 다운로드합니다. Windows의 다운로드 폴더로 이동합니다. 내 Linux 파일 시스템의 특정 경로에 복사하고 압축을 푼 다음 파일 이름 앞에 내 이름을 넣도록 이름을 바꾸고 싶습니다.
이것이 내가 지금까지 가지고 있는 것입니다:
params: $1: filename, $2: week_x, $3: day_y
hwcopy() {
cp $1 /home/myName/homework/$2/$3
rm -r $1
cd /home/myName/homework/$2/$3
unzip $1
}
함수가 있는데 addname
문제는 함수를 호출하면 addname $1
압축된 폴더의 이름만 바뀐다는 것입니다.
제가 생각해낸 해결책은 다음과 같습니다.
hwcopy() {
cp $1.zip /home/myName/homework/$2/$3
rm -r $1.zip
cd /home/myName/homework/$2/$3
unzip $1.zip
addname $1
}
이것이 효과가 있을 것 같지만 $1에 대한 파일 이름을 자동 완성한 후 인수에서 .zip을 제거하는 함수를 호출할 때마다 백스페이스를 4번 눌러야 하기 때문에 약간 짜증납니다. 이를 수행하는 쉬운 방법이 있습니까?
저는 Linux를 처음 접해서 어떻게 해야 할지 모르겠지만 $1을 함수 내부의 문자열로 저장한 다음 마지막 4자를 잘라서 다른 모든 항목에 전달할 수 있는 방법이 있을지도 모른다고 생각했습니다.
답변1
Bash에서는 문자 대체를 사용하여 %
콘텐츠의 끝을 제거합니다.
$ file="myfile.zip"
$ echo "${file%.zip}"
myfile
와일드카드를 사용할 수 있습니다.
$ file="myfile.zip"
$ echo "${file%.*}"
myfile
테마를 최대화하려면 double을 사용할 수 있습니다 %
.
$ file="myfile.tar.gz"
$ echo "${file%.*}"
myfile.tar
$ echo "${file%%.*}"
myfile