パス(コンピューティング)

パス(またはファイルパスファイルパスパス名など)は、階層型ファイルシステム内の項目を一意に識別する文字列です。一般的に、パスはディレクトリ名、特殊な書式指定子、そしてオプションでファイル名で構成され、これらはすべて区切り文字で区切られます。この区切り文字はオペレーティングシステムによって異なりますが、一般的な最近のシステムではスラッシュバックスラッシュ、またはコロンが使用されています。 /\:

個々のパス構成要素の大文字と小文字の区別は、オペレーティングシステムによって、またはファイルシステムの作成時または初回使用時に指定されたオプションによって変わります。実際には、大文字と小文字を区別するcomponent1システムでは、とという名前のパス構成要素がComponent1階層内の同じレベルに共存できますが、大文字と小文字を区別するファイルシステムでは共存できません(エラーが発生します)。macOSとWindowsのネイティブファイルシステムはデフォルトで大文字と小文字を区別しませんが、一般的なLinuxファイルシステムは大文字と小文字を区別します。[ 1 ] [ 2 ] [ 3 ]

パスは相対パス絶対パスのどちらかです。相対パスは、別のパス(通常は作業ディレクトリ)を基準としたパスです。絶対パスは、現在のディレクトリとは関係なく、ファイルシステムのルートから始まるすべてのパス要素を指定するもので、相対パスのようにコンテキストに依存しません。

パスは、 URLUNC パスに見られるように、階層的に編成されたネットワーク リソースを見つけるためにも不可欠です。

歴史

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
DOSCOMMAND.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 では失敗します
  • Javaでは、File.separatorフィールドにシステム依存のセパレータが格納されます。[ 20 ]一部の関数ではセパレータが全く必要ありません。
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" ) ;
  • Pythonでは、pathlibモジュールはシステムに依存しないパス操作を提供します。[ 21 ]
pathlibからPathをインポート( Path ( "path" ) / "to" / "file.txt" ) . open ()をopen_fileとして実行します: ...

Unixの場合

ほとんどのUnix系システムは同様の構文を使用しています。[ 22 ] POSIXでは、2つのスラッシュで始まるパスを実装定義の方法で扱うことができますが、[ 23 ]他の場合には、システムは連続するスラッシュを1つとして扱う必要があります。[ 24 ]

Unix 系システム上の多くのアプリケーション (たとえば、scprcprsync ) は、 などのリソース定義hostname:/directorypath/resource、またはのようなサービス名 (ここでは「smb」)を含むURIスキームを使用します。 smb://hostname/directorypath/resource

macOSの場合

macOSの開発中、クラシック Mac OSUnix 系NeXTSTEPからパス名の選択肢をいくつか継承しました。クラシック Mac OS は を使用し、:UnixUnix 系システムは を/パス区切り文字として使用します。ソフトウェアの互換性とユーザーの慣れを維持し、ディスクファイルシステムをクラシック Mac OS と macOS の両方で使用できるようにするために、解決策として、macOS の一部ではパス名のコロンとスラッシュを変換します。[ 25 ]たとえば、クラシック Mac OS の HFS+ ファイルシステムは、ファイル名のコロンをスラッシュに変換し、ディレクトリを読み込むときにはファイル名のスラッシュをコロンに変換します。[ 26 ]また、Carbonツールキットはパス名のコロンをスラッシュに、パス名のスラッシュをコロンに変換し、呼び出し元にファイル名とパス名を提供するときにはそれらを逆に変換します。[ 26 ]

DOSとWindowsの場合

ディレクトリ内のファイル名を表示するWindowsコマンド プロンプトシェルのスクリーンショット

DOS と Windows には単一のルート ディレクトリはありません。各ストレージ ドライブごとにルートが存在し、ドライブ文字または UNC によって示されます。

ディレクトリ名とファイル名の比較では大文字と小文字は区別されません。「test.TXT」は「Test.txt」と一致します。[ 27 ]

Windows は次の種類のパスを認識します。

  • などのローカル パスC:\File
  • 汎用命名規則 (UNC)
  • DOSデバイスパス( または など\\?\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汎用命名規則UNCuniform 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{\\\\}

参照

  • basename  – パスから姓を抽出するためのシェルコマンド
  • デバイスファイル – ファイルシステムに表示されるデバイスドライバへのインターフェース
  • dirname  – パスからディレクトリパス部分を抽出するシェルコマンド
  • 分散ファイルシステム – 分散ファイルシステムの種類リダイレクト先の簡単な説明を表示するページ
  • ファイル名 – コンピュータファイルを一意に識別するために使用されるテキスト文字列
  • ファイルシステム階層標準 – ディレクトリ構造の Linux 標準
  • 完全修飾ファイル名 – コンピュータコード内での明確な名前リダイレクト先の簡単な説明を表示するページ
  • PATH(変数)  – コンピュータ環境変数
  • URL  – ワールドワイドウェブ上のアドレス

注記

  1. ^ a b互換性が限られており、すべてのWindowsプログラムで動作するとは限りません
  2. ^順番に、フィールドはddnn:[g,m]:filename.type;version
  3. ^&、、%@それぞれ現在のユーザーのルート、ライブラリ、現在のディレクトリを参照するためにも使用できます。
  4. ^ファイル名拡張子を持つファイルシステムがマウントされると、上記のJapan/gifの例のように、.文字は に変更されます/
  5. ^ Tandem Advanced Command Languageの略
  6. ^[prefix]は数字(0~31)、  *(ブートボリューム)、または@(AppleShareホームディレクトリ)

参考文献

  1. ^ 「Macのディスクユーティリティで利用できるファイルシステムフォーマット」 Appleサポート。 2025年9月12日閲覧macOSのデフォルトのファイルシステムであるAPFSの説明が含まれています
  2. ^ Matt Wojciakowski. 「大文字と小文字の区別」 . learn.microsoft.com . 2025年9月12日閲覧Windows ファイルシステムでは、ファイル名とディレクトリ名の大文字と小文字は区別されません。FOO.txt と foo.txt は同じファイルとして扱われます。Linux ファイルシステムでは、ファイル名とディレクトリ名の大文字と小文字が区別されます。FOO.txt と foo.txt は異なるファイルとして扱われます。
  3. ^ Day, Brittany. 「Linuxファイルシステムの大文字と小文字の区別に関する議論を理解する」 Linuxセキュリティ. 2025年9月12日閲覧。Linuxにおける大文字と小文字の区別とは、ファイルとディレクトリにおいてファイル名の大文字と小文字の違いを認識することです。例えば、「File.txt」と「file.txt」はそれぞれ異なるファイルとして扱われます。この概念は、Linuxを含むUnix系オペレーティングシステムに不可欠なものです。
  4. ^ Daley, RC; Neumann, PG (1965). 「二次記憶装置のための汎用ファイルシステム」. 1965年11月30日~12月1日開催の秋季合同コンピュータ会議議事録、第1部 XX - AFIPS '65 (秋季、第1部) . 第1巻、第1部、pp.  213– 229. doi : 10.1145/1463891.1463915 . S2CID 16236414 . 
  5. ^ 「なぜ Windows ではバックスラッシュが使用され、その他すべてではスラッシュが使用されるのか」 2014 年 2 月 10 日。
  6. ^ 「なぜ DOS パス文字は "\" なのでしょうか?」 2005 年 6 月 24 日。
  7. ^ 「ファイルシステムの基礎」 . developer.apple.com . 2018年4月9日. 2025年9月7日閲覧
  8. ^ 「UNCネットワーク共有アクセス(Windows)」www.ibm.com . 2025年9月7日閲覧
  9. ^ RSX-11M-PLUS MCR操作マニュアル、RSX-11M-PLUSバージョン4.0(PDF)。Digital Equipment Corporation。1987年8月。2.2 ファイル仕様。AA-JS12A-TC。
  10. ^ Herkert, Mark Klause Herman; Smith, Sheri Lynn (1985年12月).国防データネットワーク/TOPS-20チュートリアル. 対話型コンピュータプログラム(PDF) (技術レポート).
  11. ^ Rabe, Bernhard (2011年6月6日). 「AlphaおよびVAX上のOpenVMSとDCL」(PDF) .
  12. ^ 「VSI OpenVMS ユーザーズマニュアル」(PDF) . VMSソフトウェア. 2025 . 2025年9月7日閲覧
  13. ^ ProDOS ユーザーズマニュアル. Apple Computer . 1983年.  56~ 62頁.
  14. ^ AmigaDOSマニュアル。Commodore-Amiga, Inc.発行。Bantam Computer Books。1986年2月。6  16ページ。ISBN 978-0-553-34294-9{{cite book}}: CS1 メンテナンス: その他 (リンク)
  15. ^ 「RISC OS PRMs: Volume 2: Chapter 44: Writing a file system」 . www.riscos.com テクニカルサポート: プログラマーズリファレンスマニュアル. 3QD Developments Ltd. 2015年11月3日. 2025年9月7日閲覧
  16. ^ 「ドメイン/OS入門」 (PDF) . Apollo Computer . 1988年5月. pp.  7-1 – 7-7 .
  17. ^ CP/Mオペレーティングシステムマニュアル(第3版). Digital Research . 1983年9月.
  18. ^ 「シェルの紹介」 . GitHub . OpenAtom OpenHarmony . 2024年3月13日閲覧。
  19. ^ "exec" . GitHub . OpenAtom OpenHarmony . 2024年3月14日閲覧
  20. ^ 「Java Development Kit バージョン 17 API 仕様」 . docs.oracle.com . 2025年9月7日閲覧
  21. ^ "os.path — 一般的なパス名操作" . Pythonドキュメント. 2025年9月7日閲覧
  22. ^ 「UNC定義」 . ComputerLanguage.com .
  23. ^ 「POSIX パス名解決仕様」
  24. ^ 「POSIX パス名定義」
  25. ^ Chan, Alex (2021年12月1日). 「2つのパスセパレーターの物語」 . alexwlchan.net . 2025年9月7日閲覧
  26. ^ a b Sanches, Wilfredo (2000). 「UnixとMac OS環境の統合における課題」 .
  27. ^ a b De George, Andy (2022年12月14日). 「Windowsシステムのファイルパス形式」 . Microsoft Docs . 2019年7月14日閲覧
  28. ^ Ashcraft, Alvin (2024年8月28日). 「ファイル、パス、名前空間の命名」 . Microsoft Docs .
  29. ^ Ashcraft, Alvin (2024年7月16日). 「最大パス長制限 - Win32 アプリ」 . learn.microsoft.com . 2025年9月7日閲覧
  30. ^ Wheeler, Sean. 「about_Path_Syntax - PowerShell」 . learn.microsoft.com . 2025年9月7日閲覧
  31. ^ 「バックスラッシュがバックスラッシュでないのはいつですか?」すべてを整理する
  32. ^ 「DavGetHTTPFromUNCPath 関数」 . WebDAV: Windows. Microsoft Docs . シリーズ. 2021年10月13日. 2023年10月4日閲覧