Bash
訪問函式內解壓縮文件的名稱
我在 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 個字元,然後將其傳遞給其他所有字元?
使用 bash,使用
%
char 替換來刪除內容的結尾:$ 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