環境:MacOS Monterey, 2022
Macのunzipコマンド
最近よく使うTeamsアプリですが、ファイルを一括ダウンロードするとzipファイルでダウンロードされます。それをTerminalなどでunzip ~~.zip
すると、illegal byte sequence
のエラーが出てしまいます。
ありがたいことにそれを解決するコマンド の記事はあります。しかし毎度忘れる頃にこの問題に直面してしまい、ストック先ページを見に行くのがわりと手間です…
自作コマンド
長いコマンドはaliasにしてしまえ、と思いましたが引数を2つ入力するのも面倒です。
ということでzshの自作コマンドをちょこっと書き、zipファイル名だけ入力すればいい方式にしました。
muz(){
local fname
# 引数は解凍したい ~~~.zip が入る
fname=$1
# 拡張子削除
fname="${fname:r}"
# 展開先作成
eval "mkdir $fname"
# 展開
eval "ditto -V -x -k --sequesterRsrc --rsrc $1 $fname"
}
muz AAA.zip
と入力するとAAAディレクトリが作成され、その中にzipの中身が展開されます。
muz = MacUnZipからつけたもので、コマンド名が衝突しないなら何でも良いです。
好きな名前をお付けください。
ちょっと細かい話
これはファイル名に日本語が入っていると起きる問題です。
Windows系で圧縮したファイルをMacで解凍、またはその逆のパターンで発生します。
TeamsアプリのサーバサイドがAzure等のWindows系のサーバで、今回は手元がMacだから起こった問題ですね。
参考元
Macのunzipで "illegal byte sequence "
蛇足
シェルスクリプトは得意じゃないので、最近流行りのChatGPT君に監修してもらいました。