OS X は「UNIX オペレーティング システム」ですが、そのコード、API、標準なども Mac OS 9 からかなりの部分を派生させています。UNIX では、ファイル パスには要素を区切る「/」があり、「:」を使用できます。個々のファイルとディレクトリの名前。Mac OS 9 では逆で、ファイル パスの要素間に「:」があり、個々のファイル名で「/」が許可されていました。Apple が OS X を開発したとき、UNIX スタイルのファイル パスを使用する一部の API と、OS 9 スタイルのパスを使用する一部の API をサポートする必要があり、両方が同じファイル システムで動作できる必要がありました。
彼らがしたことは、コンテキストに応じて区切り文字と許可された文字を交換することです。UNIX API を使用してファイルシステムにアクセスするプログラムを作成 (/実行) すると、名前にコロンが含まれ、パス要素がスラッシュで区切られているファイルが表示されます。古い OS 9 API (またはその派生物) を使用するプログラムを作成 (/実行) すると、名前にスラッシュが含まれ、パス要素がコロンで区切られているファイルが表示されます。もう少し議論が必要な場合は、Apple の開発者向け Q&A #1392と、AppleScript でのパスの指定に関する注意事項を参照してください。
(他にもいくつかの違いがあります。UNIX パスは、区切り文字 ("/") で始まる場合は絶対パスであり、絶対パスはルート ボリュームの先頭から始まります。OS 9 パスは、開始しない場合は絶対パスです。 OS 9 の絶対パスはボリューム名で始まります. したがって、UNIX パス "/tmp/foo:bar" は OS 9 パス "Macintosh HD:tmp:foo/bar" と同等です.)
では、実際にファイル名に含まれている文字は、スラッシュかコロンか? ファイル名はかなり抽象的なものですが、ディスクに実際に保存されているバイト数について質問している場合は... HFS+ (別名 Mac OS 拡張) ボリューム上にある場合、ファイルシステムに保存されています。 OS 9 (技術的には Mac OS 8.1) API で動作するように設計されているため、スラッシュは許可されますが、コロンは禁止されます。したがって、HFS+ ボリュームでは、ファイルの名前に「実際に」スラッシュが含まれます。OTOH ファイルを unixish ボリュームに保存すると、unix 規則を使用して保存され、「実際には」名前にコロンが含まれます。ただし、ディスクから生のバイトを読み取ったり、ファイルシステムドライバーを作成したりしない限り、違いは実際には問題になりません...
最後に、なぜ Finder は物議を醸しているファイル名の文字をコロンではなくスラッシュで表示するのですか? 私はそれがほとんど慣性であると確信しています。Go To Folder オプション (Command-Shift-G) を使用して「/Users/Shared」と入力すると、Finder はそれを UNIX パスとして処理するため、Finder はこれについて完全に一貫していません。「Macintosh HD:Users:Shared」と入力しても、何を言っているのかわかりません。さらに、 を実行する場合はtouch /tmp/foo:bar
、[フォルダへ移動] でアクセスしてみてください:
- 「/tmp/foo:bar」と入力すると機能します。
- 「/tmp/fo」と入力してタブを押すと、「/tmp/foo/bar/」にオートコンプリートされ、機能します。
- オートコンプリートとまったく同じですが、「/tmp/foo/bar/」と入力すると失敗します。
- 「/tmp/foo」と入力してタブを押すと、「/tmp/foo/」にオートコンプリートされます。これ以上オートコンプリートできず、まったく機能しません。
更新: Konrad Rudolph が指摘したように、Go To Folder の動作は El Capitan の時点で変更されており、物議を醸しているキャラクターを含むフォルダーに移動するためにそれを使用する方法はもうありません。