- ベストアンサー
MAC UNIX 拡張子の関係
今までずっとWindowsを使ってきたのですが最近MACを買って、今はMACのことを勉強中です。OSはTigerです。 そこで質問なのですが、MACはOSXになってDarwinというUNIXベースのOSになったというのを知りました。 ですが僕がUNIX関連の本を読んだときに、UNIXにはWIndowsのような拡張子は存在しないみたいなことが書いてありました。 .txtみたいなファイル名はつけられるけど、それはあくまでただのファイル名の一部として認識されるだけだと書いてあったような気がします。 でもMACをつかっていると.dmgのような拡張子がついていますし、以前のMACは拡張子がいらなかったけれど、今のOSXでは拡張子が必要みたいなことが書かれていました。 なぜUNIXベースなのに拡張子で関連付けをしてるのでしょうか?? またUNIXの場合、本来拡張子を付けずにどうやってファイルとアプリの関連付けを行っているのでしょうか? ファイルにそれを開くアプリケーションの情報を目に見えない形で書き込んであるのでしょうか? 以上の2点です。 お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
UNIX に拡張子がないというのは正しい理解ではなく、拡張子とシステムが密接に結びついていないという方が正しいかと思います。 Windows では拡張子に対してアプリケーションが対応付けられているため、特定の拡張子のファイルを「開く」と、そのアプリが起動していなくても、Windows システムがアプリを起動してくれます。そして、アプリにそのファイルを渡してくれます(ファイル→アプリの順)。 UNIX の場合(コマンドライン)では、利用者が明示的にアプリケーションを指定して、その引数としてファイルを渡します(アプリ→ファイルの順)。この場合、システムではなく利用者がアプリもファイルもどちらも指定するので、システム自体が拡張子を意識する必要はありません。しかし、利用者としては意識する必要があるために、慣習的に拡張子をつけています。例えば、tar コマンドで扱うアーカイブファイルは .tar 、gzip コマンドで圧縮したファイルは .gz という感じです。 Mac OS X はベースとしては UNIX ですので、code2501 さんが書いてらっしゃる通り、本来であれば明示的な拡張子の概念は不要です。しかし、Windows や Mac のようなグラフィカルなユーザインタフェースを用いる OS の場合、一般的にファイルを取り扱うには、アプリ→ファイルの順だけでなく、ファイル→アプリの順で使えることが必要になります。その為に、Windows 同様に拡張子によってファイル→アプリの順で取り扱える必要がでてくるのですね。 以前の Mac では、拡張子とは異なる「ファイル→アプリ」を導き出す方法として、リソースフォークと呼ばれるデータをファイルに含ませることで、結果として同じ効果を得ていたそうです(当時の Mac については詳しくないので、間違いがあったらどなたかご指摘ください)。 なお、UNIX の場合、利用者の便のために拡張子をつけるということで、あるファイルに拡張子を付け忘れたりした場合に、そのファイルがどのアプリ用なのかが判らなくなることがあります。そういう場合でも、ファイルの特徴(ファイルの先頭にどのようなデータが含まれているか等)を /etc/magic というデータベースに記録することで、当該ファイルがどのアプリ用のものなのかを調べることができます。"file" というコマンドですので、もし Linux 等の UNIX 系 OS をお使いになれるのでしたら、実際に試してみてください。Mac OS X でも Terminal から file コマンドが使えるかもしれません(自分は試したことがないので、なかったらスミマセン)。
その他の回答 (3)
- harawo
- ベストアンサー率58% (3742/6450)
> 前の回答でunixの拡張子は利用者がどのファイルかわからなくならないようにメモしておくくらいの感じのものだと理解したのですが、open ファイル名 ではどのアプリで開くか指定していないのにiTunesで普通に開けるのはやっぱり拡張子がどのアプリで開くかを指定しているのでしょうか? > それともこれはGUI環境で使うのを前提にしているMac独自の機能なのでしょか? 私もUNIXのコマンドに詳しいわけでないないと最初に断っておきますが…… jPEG画像をひとつ用意してください。自分で作ってもいいし、Safari(ウェブブラウザ)のウィンドウから画像をデスクトップにドラッグするだけでも作ることができます。 それをコピーしてください。Optionキーを押しながらドラッグすると、コピーが作成されます。 JPEG画像のアイコンを、Controlキーを押しながらクリックすると、プルダウンメニューが出ます。Windowsの右クリックにあたります。 プルダウンメニューの「情報を見る」を選ぶと、Windowsの「プロパティ」にあたる、情報ウィンドウが開きます。 「このアプリケーションで開く:」で、「Safari」に切り替えます。 コピーしたJPEG画像ファイルの情報も開き、こちらは、「Quicktime Player」に切り替えます。 アイコンが変化したことで、もうおわかりだと思いますが、それぞれダブルクリックすると、異なるアプリケーションで開きます。べつに拡張子は書き換えられていません。 これでWindowsのように「拡張子とアプリケーションを関連づけている」のでないことがわかります。そうではなく、ファイルひとつひとつに対し、個別にOSが管理を行っているということがわかると思います。 個別にアプリケーションの関連付けが(まだ)行われていないファイルについては、拡張子を見て、起動するアプリケーションを決めます。
お礼
ありがとうございます。 おっしゃった通りにやってみました結果、なるほど、そういうことだったのか!と理解できるようになりました。 要するにMacでは関連づけのあるファイルは拡張子に関係なく関連づけをしたアプリで開かれ、そうでない場合だけ拡張子で判断するのですね。 拡張子はあくまで補足的なものなんですね。 両方が混在しているのでこんがらがってわけがわからなくなってました。 これでスッキリしました。ありがとうございます。
Macは『リソースフォーク』と『データフォーク』をデータが持っています。 このデータベースはOS9では『ディスクトップファイル』に記録されています。 OSXでは不可視のファイルに記録されています。 ですからWindowsのファイル管理の様に『拡張子』の概念は有りません。 開く時にMacは『書類のリソースフォーク』を見てアプリを選択します。 Windowsはアプリから開かないと、同じ拡張子の違う書類を開く 可能性が有りますね。 *次期のWindowsではMacの様にデータベースを作る様です。
お礼
ありがとうございます。 そのへんはunixとはちがうやり方でファイルと関連づけをしてるんですね。 ただ.jpgのファイルの拡張子を.mpgに変えたら、プレビューで開いたファイルがQuickTimeで開くようになりました。 これは拡張子の概念が関係しているのではないのでしょうか? それとも拡張子を変更するとリソースフォークとデータフォークが書き換えられるということなのでしょうか?
- harawo
- ベストアンサー率58% (3742/6450)
> ただunixの場合でも file1 開くのような動作は行えないものなんでしょうか? > あとよろしければターミナルのコマンドからiTunesの曲を聞くやり方なども教えていただけないでしょうか? 「open (ファイルパス)」で開けますが?
お礼
ありがとうございます。 unixについて基本的なコマンドのことがまだわかってなかったみたいで。お恥ずかしい。。 ただまた疑問がでてきちゃいました。 harawoさんのおっしゃるようにopenでiTunesのm4pファイルを開けましたが、そのときopen ファイル名.m4p でiTunesが勝手に立ち上がり、曲が再生されました。 前の回答でunixの拡張子は利用者がどのファイルかわからなくならないようにメモしておくくらいの感じのものだと理解したのですが、open ファイル名 ではどのアプリで開くか指定していないのにiTunesで普通に開けるのはやっぱり拡張子がどのアプリで開くかを指定しているのでしょうか? それともこれはGUI環境で使うのを前提にしているMac独自の機能なのでしょか?
お礼
さっそくの回答ありがとうございます。 たいへんわかりやすい説明でした。 たしかにunixの場合は vi file1.txt のようにアプリ→ファイルの順でどちらも利用者が指定する形になっていますね。 それと同時にcatコマンドで中身を見ることはできても file1 開く のようなやり方は確かにCUI環境ではやらないですよね。 言われてみればなるほどそうか!という感じです。 一方GUIの環境ではわざわざwordを開いてからファイルを開くということをしなくてもwordファイルをダブルクリックすればwordも文章も開けますものね。だからunixベースのMacもそういうことができるように手を加えてあるのですね。 あとファイルの拡張子を消してもfileコマンドでMacのターミナルからファイルの種類がわかりました。 またひとつ知識が深くなったような気がします。 ありがとうございます。 ただunixの場合でも file1 開くのような動作は行えないものなんでしょうか? あとよろしければターミナルのコマンドからiTunesの曲を聞くやり方なども教えていただけないでしょうか? そんなのGUIでやったほうが早いだろと言われればその通りなのですがunixのことも勉強したいのでお願いします。