私は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