OS標準の機能で「他OS向けZIP」をつくる
MacのZIP対応において問題があるとすれば、「Mac独自の部分」の扱いだろう。OS Xで作成したZIPには、リソースフォークやメタデータまでもが収録されてしまい、Windowsなど他のOSで展開するときに混乱を招きかねない。OS Xにおいてリソースフォークは有用だが、他のOSではまったく無用の長物だ。
ファインダの機能でZIPを作成すると、ファイル本体(データフォーク)以外のファイルリソースは名前の先頭が「._
」で始まる「AppleDouble Headerファイル」として分離され、「__MACOSX
」というフォルダに保存される。Macで作成したZIPをWindowsユーザーの知人に渡したとき、「このフォルダは何?」という質問を受けたことのあるユーザーも多いことだろう。
これを取り除くサードパーティー製アプリケーションもあるが、利便性も考えれば使わないに越したことはなく、OS標準の機能を使う対処法を知っていたほうが心強い。
その対処法とは、ターミナルで「zip」コマンドを実行することだ。通常の方法でZIP書庫を作成し(ファインダの「○○○を圧縮」メニューを使えばいい)、その後ターミナルを起動、以下のとおりコマンドを入力して引数に対象のZIPファイルを指定し、行末に「"*__MACOSX*"
」を入力すればOK。ファイル名の入力が面倒な場合は、ターミナルにZIPファイルをドラッグ&ドロップし、その後「"*__MACOSX*"
」と入力すればいいだろう。
$ zip --delete [ファイル名] "*__MACOSX*"
なお、ZIP書庫にはファインダ情報が記録されたOS X独自の不可視属性ファイル「.DS_Store
」も混入されがちなため、併せて取り除いたほうがいい。だから、前述のコマンドラインは以下のとおり実行したほうがベターだ。
$ zip --delete [ファイル名] "*__MACOSX*" "*.DS_Store"
ターミナルの利用はまだしも、毎回「"*__MACOSX*" "*.DS_Store"
」などと入力するのは我慢できないという場合は、以下のとおりbashのログインスクリプトに関数を定義しよう。以下のリストを「~/.bashrc
」に追加し、ターミナルまたはシェルを起動し直せば、「undot
」に続けてZIPファイルを指定するだけでAppleDouble Headerファイルと「.DS_Store
」を一気に取り除ける。なかなか実用的と思うが、いかがだろう?
function undot(){
/usr/bin/zip --delete $@ "*__MACOSX*" "*.DS_Store"
}
この連載の記事
-
第187回
iPhone
NFCの世界を一変させる!? iOS 11「Core NFC」の提供開始が意味するもの -
第186回
iPhone
Appleと「4K HDR」 - iOS 11で写真/動画を変える「HEIF」と「HEVC」 -
第185回
iPhone
iPhone 7搭載の「A10 Fusion」「W1」は何を変えるか -
第184回
iPhone
オープンソース化された「PowerShell」をMacで使う -
第183回
iPhone
アップル製デバイス連携の鍵、「Continuity」とは? -
第182回
iPhone
DCI-P3準拠へと歩むiPhone/iPad - WWDC基調講演で秘められた新技術は、ここにある(2) -
第181回
iPhone
WWDC基調講演で秘められた新技術は、ここにある(1) -
第180回
iPhone
WWDC直前、買い替え前にマイMacのココをチェック -
第179回
iPhone
私がiTunesを使わなくなった5つの理由 -
第178回
iPhone
今あえてiPhone「Live Photos」を知る -
第177回
iPhone
「Windows Subsystem for Linux」はOS Xのライバルとなるか? - この連載の一覧へ