パス(またはファイルパス、ファイルパス、パス名など)は、階層型ファイルシステム内の項目を一意に識別する文字列です。一般的に、パスはディレクトリ名、特殊な書式指定子、そしてオプションでファイル名で構成され、これらはすべて区切り文字で区切られます。この区切り文字はオペレーティングシステムによって異なりますが、一般的な最近のシステムではスラッシュ、バックスラッシュ、またはコロンが使用されています。 /\:
個々のパス構成要素の大文字と小文字の区別は、オペレーティングシステムによって、またはファイルシステムの作成時または初回使用時に指定されたオプションによって変わります。実際には、大文字と小文字を区別するcomponent1システムでは、とという名前のパス構成要素がComponent1階層内の同じレベルに共存できますが、大文字と小文字を区別するファイルシステムでは共存できません(エラーが発生します)。macOSとWindowsのネイティブファイルシステムはデフォルトで大文字と小文字を区別しませんが、一般的なLinuxファイルシステムは大文字と小文字を区別します。[ 1 ] [ 2 ] [ 3 ]
パスは相対パスと絶対パスのどちらかです。相対パスは、別のパス(通常は作業ディレクトリ)を基準としたパスです。絶対パスは、現在のディレクトリとは関係なく、ファイルシステムのルートから始まるすべてのパス要素を指定するもので、相対パスのようにコンテキストに依存しません。
パスは、 URLやUNC パスに見られるように、階層的に編成されたネットワーク リソースを見つけるためにも不可欠です。
Multicsは1960年代半ばにディレクトリ(「>」で区切られた)を持つ階層型ファイルシステムを初めて導入しました。 [ 4 ]
1970 年頃、Unix は/ディレクトリ区切り文字として スラッシュを導入しました。
もともと、MS-DOSはディレクトリをサポートしていませんでした。この機能を追加する際に、多くの既存コマンドがスイッチのプレフィックスとしてスラッシュを使用していたため、Unix標準のスラッシュを使用することは適切な選択肢ではありませんでした(例:dir /w)。対照的に、Unixはスイッチのプレフィックスとしてダッシュを使用します。最終的に、スラッシュとの類似性と既存のコマンドと競合しないという理由から、-バックスラッシュが選択されました。この慣習はWindowsにも引き継がれました。ただし、 PowerShellなど、Windowsの一部の領域ではUnixスタイルのスラッシュも受け入れまたは理解します。[ 5 ] [ 6 ]\
次の表は、主要なオペレーティング システムにおけるパスの構文を示しています。
| システム | ルートディレクトリ | パスを区切ります。 | 作業ディレクター | 親ディレクター | ホームディレクトリ | 例 |
|---|---|---|---|---|---|---|
| UnixおよびUnix系システム(macOSを含む) [ 7 ] | / | / | 。 | .. | 〜 | /home/user/docs/Letter.txt ./child ../../greatgrandparent ~/.rcinfo |
| Windows、コマンドプロンプト | \ (現在の作業ディレクトリのルートからの相対)または[ドライブ文字]:\または\\.\または\\?\または UNC | / [ a ]または\ | 。 | .. | C:\user\docs\Letter.txt /user/docs/Letter.txt C:\user\docs\somefile.ext:代替ストリーム名 C:picture.jpg \\?\UNC\Server01\user\docs\Letter.txt \\.\COM1 | |
| パワーシェル | [ドライブ文字]:/または[ドライブ名]:\または[PSSnapIn 名]\[PSProvider 名]::[PSDrive ルート]または UNC | / [ a ]または\ | 。 | .. | 〜 | C:\user\docs\Letter.txt ~\Desktop UserDocs:/Letter.txt変数:PSVersionTableレジストリ::HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft.PowerShell.Security\Certificate::CurrentUser\ |
| UNC [ 8 ] | \\[サーバー]\[共有名]\ | / | \\Server01\user\docs\Letter.txt | |||
| DOS、COMMAND.COM | [ドライブ文字]:\または\\[サーバー名]\[ボリューム]\ | \ | 。 | .. | C:\USER\DOCS\LETTER.TXT A:PICTURE.JPG \\SERVER01\USER\DOCS\LETTER.TXT | |
| OS/2 | [ドライブ文字]:\または\\[サーバー名]\[ボリューム]\ | /または\ | 。 | .. | C:\user\docs\Letter.txt A:Picture.jpg \\SERVER01\USER\docs\Letter.txt | |
| RSX-11 MCR [ 9 ] | [デバイス名]: | DR0:[30,12]レター.TXT;4 [ b ] | ||||
| TOPS-20 DCL [ 10 ] | [デバイス名]: | 。 | 追伸:<USER.DOCS>LETTER.TXT,4 | |||
| OpenVMS DCL [ 11 ] [ 12 ] | [デバイス名]:[000000]または[NODE["アカウント名 パスワード"]]::[デバイス名][000000]: | 。 | [] | [-] | SYS$ログイン: | NODE$DISK:[USER.DOCS]PHOTO.JPG USER:[000000]000000.DIR []IN_THIS_DIR.COM; [-.-]GreatGrandParent.TXT SYS$SYSDEVICE:[.DRAFTS]LETTER.TXT;4 GEIN::[000000]LETTER.TXT;4 SYS$LOGIN:LOGIN.COM |
| ProDOS AppleSoft BASIC [ 13 ] | /[ボリュームまたはドライブ名]/ | / | /SCHOOL.DISK/APPLEWORKS/MY.REPORTフライトシミュレーター、D2 | |||
| AmigaOS Amiga CLI / AmigaShell [ 14 ] | [ドライブ、ボリューム、デバイス、または名前の割り当て]: | / | 空の文字列 | / | ワークベンチ:ユーティリティ/マルチビューDF0:S/スタートアップシーケンスS:スタートアップシーケンスTCP:en.wikipedia.com/80 | |
| RISC OS ShellCLI [ 15 ] | [fsタイプ[#オプション]:][:ドライブ番号またはディスク名]$ [ c ] | 。 | @ | ^ | & | ADFS::MyDrive.$.Documents.Letter Net#MainServer::DataDrive.$.Main.sy10823 LanMan::WindowsC.$.Pictures.Japan/gif NFS:&.!Choices ADFS:%.IfThere @.inthisdir ^.^.greatgrandparent [ d ] |
| Symbian OSファイルマネージャー | \ | \ | \user\docs\Letter.txt | |||
| ドメイン/OSシェル[ 16 ] | // (ドメインのルート)または/ (現在のノードのルート) | / | 。 | \ | 〜 | //node/home/user/docs/Letter.txt ./inthisdir \\greatgrandparent ~rcinfo |
| メニューエットOSコマンド | / | / | /ファイル | |||
| ストラタス VOS CLI | %[システム名]#[モジュール名]> | > | < | %sysname#module1>サブディレクトリ>別のディレクトリ | ||
| ノンストップカーネルTACL [ e ] | 。 | \NODE.$DISK.SUBVOL.FILE \NODE.$DEVICE \NODE.$DEVICE.#SUBDEV.QUALIFIER | ||||
| CP/M CCP [ 17 ] | [ドライブ文字:] | サブディレクトリなし、ユーザー領域0~Fのみ | A:レター.TXT | |||
| GS/OS | :[ボリューム名]:または.[デバイス名]:または[プレフィックス]: [ f ] | :または/ | @ | :Apps:Platinum.Paint:Platinum.Paint *:System:Finder .APPLEDISK3.5B/ファイル | ||
| OpenHarmonyの幹部、Oniro、HarmonyOSを含む[ 18 ] [ 19 ] | hb set -root [ROOT_PATH]またはhb set -p --product [PRODUCT_NAME] | > または / | ./ | ../ | LOCAL/MEDIA_TYPE_/ダウンロード/Letter.txt | |
ほとんどのプログラミング言語は、基盤となるシステムのパスの表現を使用しますが、システムに依存しない言語もあります。
たとえば、次の C コードはシステムに依存しており、他のシステムでは失敗する可能性があります。
uxFile = fopen ( "project/readme.txt" , "r" ) // Windows では失敗します。winFile = fopen ( "C: \\ Program Files \\ bin \\ config.bat" , "r" ) // Unix では失敗します。import java.io.File ; import java.nio.file.Path ; import java.nio.file.Paths ; // ... File file = new File ( "path" + File .separator + "file.txt" ); Path path = Paths.get ( "path" , " file.txt" ) ;pathlibからPathをインポート( Path ( "path" ) / "to" / "file.txt" ) . open ()をopen_fileとして実行します: ...ほとんどのUnix系システムは同様の構文を使用しています。[ 22 ] POSIXでは、2つのスラッシュで始まるパスを実装定義の方法で扱うことができますが、[ 23 ]他の場合には、システムは連続するスラッシュを1つとして扱う必要があります。[ 24 ]
Unix 系システム上の多くのアプリケーション (たとえば、scp、rcp、rsync ) は、 などのリソース定義hostname:/directorypath/resource、またはのようなサービス名 (ここでは「smb」)を含むURIスキームを使用します。 smb://hostname/directorypath/resource
macOSの開発中、クラシック Mac OSとUnix 系NeXTSTEPからパス名の選択肢をいくつか継承しました。クラシック Mac OS は を使用し、:UnixとUnix 系システムは を/パス区切り文字として使用します。ソフトウェアの互換性とユーザーの慣れを維持し、ディスクファイルシステムをクラシック Mac OS と macOS の両方で使用できるようにするために、解決策として、macOS の一部ではパス名のコロンとスラッシュを変換します。[ 25 ]たとえば、クラシック Mac OS の HFS+ ファイルシステムは、ファイル名のコロンをスラッシュに変換し、ディレクトリを読み込むときにはファイル名のスラッシュをコロンに変換します。[ 26 ]また、Carbonツールキットはパス名のコロンをスラッシュに、パス名のスラッシュをコロンに変換し、呼び出し元にファイル名とパス名を提供するときにはそれらを逆に変換します。[ 26 ]

DOS と Windows には単一のルート ディレクトリはありません。各ストレージ ドライブごとにルートが存在し、ドライブ文字または UNC によって示されます。
ディレクトリ名とファイル名の比較では大文字と小文字は区別されません。「test.TXT」は「Test.txt」と一致します。[ 27 ]
Windows は次の種類のパスを認識します。
C:\File。\\?\C:\File)\\.\UNC\Server\Volume\File。前者は\\?\パスの正規化を省略します。後者は\\.\rawデバイスの名前空間を使用します。[ 27 ] [ 28 ]Windows APIでは、ファイルI/O関数は自動的/に に変換されます\(\\?\プレフィックスを使用する場合を除く)。プレフィックスが使用されていない場合、パスはMAX_PATH\\?\で定義された長さに制限されます。この変数はWindows 10まではデフォルトで260文字でしたが、Windows 10では32,767文字まで拡張されました。[ 29 ]
PowerShellは後方互換性のためにスラッシュ相互運用性を許可している: [ 30 ]
PS C :\> Get-Content -Path "C:/path/to/file.txt"これはファイル内のテキストです日本語版と韓国語版のWindowsでは、ディレクトリ区切り文字の代わりに「¥」文字や「₩」文字が表示されることが多かった。これは、ANSIコードページでは0x5Cの文字がバックスラッシュであるのに対し、日本語と韓国語のコードページではそれぞれ円記号とウォン記号であったためである。そのため、バックスラッシュの文字が使用されると、他のグリフが表示されることがあった。[ 31 ]
Microsoft汎用命名規則(UNC、uniform naming convention、またはネットワークパス)は、共有ファイル、ディレクトリ、プリンタなどのネットワークリソースの場所を記述するための構文です。UNCパスの一般的な形式は次のとおりです。
\\コンピュータ名\共有フォルダ\リソース
一部のWindowsインターフェースでは、WebDAV共有へのアクセスにURLではなくUNC構文が使用可能または要求されます。UNC構文は、SSLの使用とTCP/IPポート番号を示すためのオプションコンポーネントで拡張されています。したがって、WebDAV URLは とhttps://hostname:443/SharedFolder/Resourceなります\\hostname@SSL@443\SharedFolder\Resource。[ 32 ]
リモートから見ると、「SharedFolder」の名前は、サーバー上のプログラムが「\SharedFolder」を開いたときに表示される名前と異なる場合があります。実際には、SharedFolder の名前は共有の作成時に割り当てられた任意の名前です。
UNCは2つのバックスラッシュで始まり、バックスラッシュはエスケープシーケンスや正規表現にも使用されるため、「傾きつまようじ症候群」が発生する可能性があります。UNCに一致する正規表現のエスケープ文字列は、文字列と正規表現の両方でエスケープが必要となるため、8つのバックスラッシュで始まります。これは、 C#、Python 、Perlなどのraw文字列を\\\\\\\\使用することで簡素化できます。 @"\\\\"r'\\\\'qr{\\\\}
Windows ファイルシステムでは、ファイル名とディレクトリ名の大文字と小文字は区別されません。FOO.txt と foo.txt は同じファイルとして扱われます。Linux ファイルシステムでは、ファイル名とディレクトリ名の大文字と小文字が区別されます。FOO.txt と foo.txt は異なるファイルとして扱われます。
Linuxにおける大文字と小文字の区別とは、ファイルとディレクトリにおいてファイル名の大文字と小文字の違いを認識することです。例えば、「File.txt」と「file.txt」はそれぞれ異なるファイルとして扱われます。この概念は、Linuxを含むUnix系オペレーティングシステムに不可欠なものです。
{{cite book}}: CS1 メンテナンス: その他 (リンク)