web-dev-qa-db-ja.com

WindowsがパスとUNIXのスラッシュにバックスラッシュを使用するのはなぜですか?

大学でUnixを使用していて、現在はWindows側で作業していることが私を困らせます。この決定の背後にある歴史は何ですか?なぜそれがこのようにうまくいったのか誰か知っていますか?

88
jrsconfitto

Unixは1970年頃にディレクトリ区切り文字として/を導入しました。なぜこの文字が選択されたのか正確にはわかりません。祖先システムMulticsは>を使用していましたが、Unixの設計者はすでに><とともにシェルでのリダイレクトに使用していました( ルートディレクトリが/記号で示されている理由 を参照してください)。

MS-DOS 2.0は、1980年代初頭にディレクトリ区切り文字として\を導入しました。 /が使用されなかった理由は、MS-DOS 1.0(ディレクトリをまったくサポートしていなかった)がすでに/を使用してコマンドラインオプションを導入していたためです。 CP/M からこの/を使用しました [〜#〜] vms [〜#〜] から使用しました。その選択が行われた理由の詳細な説明を読むことができます Larry Ostermanのブログ (MS-DOSには、オプション文字を-に変更し、ディレクトリ区切り文字を/に変更するオプションさえありましたが、実際には固執しない)。

/は、ほとんどのプログラマーレベルのAPI(DOSおよびWindowsのすべてのバージョン)で認識されます。したがって、Windowsでは、ディレクトリ区切り文字として/を使用することで、常にそうであるとは限りません。注目すべき例外は /プレフィックスの後にセパレータとして\\?を使用できない (Windows 7でも)これは、Unicodeを使用するか、260文字を超えるパスを指定する唯一の方法です。

一部のユーザーインターフェイス要素は、Windowsではディレクトリ区切り文字として/をサポートしていますが、すべてではありません。一部のプログラムはファイル名を基礎となるAPIに渡すだけなので、/\を無差別にサポートします。コマンドインタープリター(command.comまたはcmd内)では、多くの場合/を使用できますが、常に使用できるわけではありません。これは部分的にWindowsのバージョンに依存しています(たとえば、cd /windowsはXPおよび7では機能しますが、Windows 9xでは機能しません)。エクスプローラパスエントリボックスは、/を受け入れます(少なくともXP以上から。おそらくURLも受け入れるため)。一方、標準のファイルを開くダイアログ スラッシュを拒否

基盤となるWindows API は、バックスラッシュまたはスラッシュのいずれかを受け入れて、パスのディレクトリおよびファイルコンポーネントを分離できますが、Microsoftの慣習では、バックスラッシュを使用し、パスを返すAPIではバックスラッシュを挿入します。

MS-DOS 2. 階層ファイルシステムをUnixからコピーし、スラッシュを使用しましたが、(おそらく [〜#〜] ibm [〜#〜]の要求に応じてMS-DOS 1. および CP/M との互換性を維持しながら、パスがコマンドシェルに入力できるようにバックスラッシュを追加しました。ここで、スラッシュはコマンドラインオプションインジケーターでした。 。

比較する

dir/w

現在のディレクトリをワイドフォーマットで表示します

dir\w

wdirファイルを実行します。

参照:

9
Tamara Wijsman