ReferencefileReferenceTOPKeywords概要ファイル名を引数とするすべてのTclコマンドとC関数は、ファイル名がプラットフォームに依存する3つの形式のうちの1つであることを仮定します。トフォームで標準形式のファイル名をサポートします。加えてすべてのプラットフォームで単純なファイル名を構築する簡便な方法を提供するために、TclはUnix式の文法をサポートします。移植性を意識したスクリプトはファイル名に特定の形式を仮定しないほうがよいでしょう。joinコマンドを使わなければなりません。的なタイプに分類されます。絶対的、相対的、そしてボリューム相対的です。絶対的な名前は完全に確定されます。これは特定のボリュームとそのボリュームのルートディレクトリからたどられるファイルパスです。相対的な名前は確定ではありません。相対的な名前は現在の作業ディレクトリからたどられるファイルパスを与えます。トリからたどられるパスです。pathtypeコマンドは与えられたパスのタイプを判定するために使えます。パス文法ネイティブな名前に関するルールは、Tcl配列の要素tcl_platform(platform)の値に依存します。mac:MyFileMyDisk:MyFile:MyDir:MyFile::MyFile:::MyFile/MyDisk/MyFile../MyFileunix//etc/passwd.foofoo/bar../foowindows\\Host\share/filec:fooc:/foofoo\bar\foo\\foomacAppleのMacintoshシステムには、Tclは2つの形式のパス名をサポートします。普通のMacスタイルの名前にはコロンをパス区切りとして使います。パスは相対的或いは絶対的で、ファイル名はコロンを除くあらゆる文字を含むことができます。先頭に1つのコロンがある場合は、残りのパスがカレントディレクトリに相対的であることを意味します。先頭にはコロンがないパスは絶対的なパスであることを意味します。パス内の2つ以上のコロンの連続出現は、どこであっても、相対的なパスを作成することを意味します。::は現在のディレクトリの親を参照し、:::は親の親を参照します。Macintoshスタイルの名前に加えて、TclはUnix式の名前のサブセットをサポートします。パスにはコロンがない場合、それはUnix式のパスであることを意味します。スラッシュがパス区切りとして使われます。"は現在のディレクトリを参照し、".."は現在のディレクトリの親を参照します。"/"や"/.."のようないくつかの名前は、対応定義がなく、Macintoshスタイルの名前として解釈されます。基本的に、ファイル名を生成するコマンドはMacintoshスタイルの名前を返しますが、ファイル名を受け入れるコマンドはMacintoshとUnix式の名前ルールの両方を認めます。次の例はパス名の様々形式を示しています。:現在フォルダに対する相対パス。MyFile現在フォルダにMyFileという名前のファイルに対する相対パス。MyDisk:MyFileMyDiskというデバイス上でMyFileというファイルに対する絶対パス。いうファイルに対する相対パス。:::MyFile現在フォルダの親親フォルダにあるMyFileというファイルに対する相対パス。/MyDisk/MyFileMyDiskというデバイス上でMyFileというファイルに対する絶対パス。いうファイルに対する相対パス。unixUnixプラットフォームでは、Tclは各部がスラッシュで区切られたパス名を使います。パス名は相対的か絶対的で、ファイル名はスラッシュを除くいかなる文字を含むことができます。ファイル名"/"や"/.."は特別で、現在のディレクトリと現在のディレクトリの親をそれぞれ表します。複数の隣接するスラッシュは単一の区切りとして解釈されます。以下の例ではパス名の様々な形式を示します。/ルートディレクトリへの絶対パス。/etc/passwdルートディレクトリのetcディレクトリにあるpasswdというファイルへの絶対パス。.現在のディレクトリへの相対パス。foo現在のディレクトリにあるfooというファイルに対する相対パス。foo/bar現在のディレクトリにあるfooというディレクトにあるファイルbarに対する相対パス。../foo現在のディレクトリの親ディレクトリにあるfooというファイルに対する相対パス。windowsMicrosoftのWindowsプラットフォームでは、Tclはドライブ相対とUNC式の名前の両方をサポートします。/と\の両方がディレクトリ区切りとして使用されます。ドライブ相対の名前では、絶対あるいは相対パスの前に省略可能なドライブ指定子を入れることができます。パスは一般的に"\\servername\sharename\path\file"形式に従い、少なくともサーバとシェアコンポーネント、即ち\\servername\sharenameを含みます。どちらの形式でも、ファイル名/や/..は特別で、現在のディレクトリと現在ディレクトリの親をそれぞれ表します。以下の例はパス名の様々な形式を示しています。トディレクトリにあるfileというファイルへの絶対UNCパス。dirnameを繰り返し使うと//Host/shareを得ますが、決して"/fB//Host/fR"を得られません。c:fooドライブc上の現在ディレクトリにあるファイルfooへのボリューム相対パス。c:/fooドライブcのルートディレクトリにあるファイルfooへの絶対パス。fooというディレクトリにあるファイルbarへの相対パス。\foo現在のボリュームのルートディレクトリにあるファイルfooへのボリューム相対パス。\\foo現在のボリュームのルートディレクトリにあるファイルfooへのボリューム相対パス。これは有効なUNCパスではありません。従って先頭の余分なbackslasheが必要ではありません。式のチルダ置換もサポートします。ファイル名がチルダで始まる場合、そのファイル名の最初の要素はユーザのホームディレクトリの場所に置換えられます。チルダの直後に区切りがあれば、$HOME環境変数と置き換えられます。リは置き換えに使われます。名がある場合のチルダ置換はサポートされていません。これらのプラットフォームでユーザ名付きのチルダ置換を試みるとエラーが生成されます。ユーザ名が付かないチルダを含むファイル名はちょうどUnixのように、$HOME環境変数によって置き換えられます。移植性の問題すべてのファイルシステムが大文字小文字を区別するわけではありません。よって、スクリプトではファイル名の大文字小文字に依存するコードは避けるべきです。文字を含まないファイル名を選ぶことは賢明です。安全なアプローチは文字数字だけを含む名前を使うことです。イル名だけをサポートします。Windowsプラットホームで、ファイル名またパス名の長さに制限があります。長さが260文字を超える完全なパスまたファイル名は大部分のファイル操作にエラーをもたらします。