## Tcl9.0.3/Tk9.0.3 Documentation > Tcl Commands > filename

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    filename — Tcl命令に運用されているファイル名規則 File name conventions supported by Tcl commands
  緒論 INTRODUCTION
  経路の型 PATH TYPES
  経路構文 PATH SYNTAX
    Unix
      /
      /etc/passwd
      .
      foo
      foo/bar
      ../foo
    Windows
      \\Host\share/file
      c:foo
      c:/foo
      foo\bar
      \foo
      \\foo
    Zipfs
  波型符(~)置換 TILDE SUBSTITUTION
  互換性の問題 PORTABILITY ISSUES
  SEE ALSO
  KEYWORDS

### NAME

filename — Tcl命令に運用されているファイル名規則 File name conventions supported by Tcl commands

### 緒論 INTRODUCTION

ファイル名を引数に取る全てのTcl 命令とC函数は､OSに従って､ファイル名が三つの書式の内の一つを採ると期待している｡それぞれのOSで､Tclは､そのOSに叶った標準書式のファイル名を運用している｡更に､全てのOS中で､単純なファイル名を構築する便利な方法をもたらすことを意図して､Unix風の構文を運用している｡しかし､互換性を意図した記述譜はファイル名に特定の形式を仮定しない方が好い｡その代り､移植を意図した記述譜では､ファイル名を操作するには､ file split と file join 命令を使うべきである(詳細は取扱説明書の file を参照されたい)｡ 　　 All Tcl commands and C procedures that take file names as arguments expect the file names to be in one of three forms, depending on the current platform. On each platform, Tcl supports file names in the standard forms(s) for that platform. In addition, on all platforms, Tcl supports a Unix-like syntax intended to provide a convenient way of constructing simple file names. However, scripts that are intended to be portable should not assume a particular form for file names. Instead, portable scripts must use the file split and file join commands to manipulate file names (see the file manual entry for more details).

### 経路の型 PATH TYPES

ファイルの名前は､ファイルの指定に使用される経路の出発点に基づき三つの種類に類別される: 絶対法､相対法､巻-相対法｡絶対法の名前は､特定の巻(装置)と､その巻の根本ディレクトリーからの相対的なファイルへの経路を与えて完全に定めている｡相対法の名前は､完全に決まったものではなく､現在の活動ディレクトリーへの相対的なファイルの経路を与える｡巻-相対法の名前は､現在の巻の上の根本特定の巻の根本ディレクトリーへの相対的なファイルの経路及び､指定した巻の現在のディレクトリーへの相対経路を与えて､部分的に定めている｡file pathtype 命令は､与えられた経路の型の決定に使用できる｡ 　　　 File names are grouped into three general types based on the starting point for the path used to specify the file: absolute, relative, and volume-relative. Absolute names are completely qualified, giving a path to the file relative to a particular volume and the root directory on that volume. Relative names are unqualified, giving a path to the file relative to the current working directory. Volume-relative names are partially qualified, either giving the path relative to the root directory on the current volume, or relative to the current directory of the specified volume. The file pathtype command can be used to determine the type of a given path.

### 経路構文 PATH SYNTAX

固有の名前の規則は､ tcl_platform 配列の platform 要素内に報告された値に依存する｡ The rules for native names depend on the value reported in the Tcl platform element of the tcl_platform array:

Unix
  UnixとアップルMacOSのOS上では､Tclは､構成要素が斜線で区切られる経路の名前を使用する｡経路の名前は､絶対法又は､相対法であり､ファイル名は斜線以外の如何なる文字も含み得る｡ファイル名｢ .｣と｢ ..｣は特別であり､それぞれ､現在のディレクトリー及び､現在のディレクトリーの親ディレクトリーを参照している｡隣接した複数の斜線文字は一つの区切り記号と解釈される｡経路末尾の任意個数の斜線文字も単に無視されるので､経路 foo と foo/R と foo// は全て同一になり､取分け foo/ は､必ずしもディレクトリーが参照されていることを意味している訳けではない｡ 　　　 On Unix and Apple macOS platforms, Tcl uses path names where the components are separated by slashes. Path names may be relative or absolute, and file names may contain any character other than slash. The file names . and .. are special and refer to the current directory and the parent of the current directory respectively. Multiple adjacent slash characters are interpreted as a single separator, except for the first double slash // in absolute paths. Any number of trailing slash characters at the end of a path are simply ignored, so the paths foo, foo/ and foo// are all identical, and in particular foo/ does not necessarily mean a directory is being referred.

  次の例は､経路の種々の形式を示す: 　　　 The following examples illustrate various forms of path names:

  /
    根本ディレクトリーへの絶対経路 　　　 Absolute path to the root directory.

  /etc/passwd
    根本ディレクトリーの中の etc と謂ふディレクトーの中の passwd と謂ふ名前のファイルへの絶対経路｡ Absolute path to the file named passwd in the directory etc in the root directory.

  .
    現在のディレクトリーへの相対経路 　　　 Relative path to the current directory.

  foo
    現在のディレクトリーの中のファイル foo への相対経路 　　　 Relative path to the file foo in the current directory.

  foo/bar
    現在のディレクトリーの中のディレクトリー bar の中のファイル foo への相対経路 　　　 Relative path to the file bar in the directory foo in the current directory.

  ../foo
    上述の現在のディレクトリーの中のファイル foo への相対経路 Relative path to the file foo in the directory above the current directory.

Windows
  マイクロソフト社のWindows OSでは､装置-相対とUNC 方式の名前の両方が運用されている｡両方の型の名前で / と \ の両方が区切り記号に使用されている｡装置-相対の名前は､任意付加的な装置指定に絶対或は相対経路を添えて構成される｡UNC 経路は､一般形式 \\servername\sharename\path\file に従うが､集中処理装置と共有構成要素を最低限含む必要がある｡即ち次のものを､ \\servername\sharename ｡両方の形式で､ファイル名｢.｣と｢..｣は特別であり､それぞれ､現在のディレクトリー及び､現在のディレクトリーの親ディレクトリーを参照している｡次の例は､経路の種々の形式を示す: 　　　 On Microsoft Windows platforms, Tcl supports both drive-relative and UNC style names. Both / and \ may be used as directory separators in either type of name. Drive-relative names consist of an optional drive specifier followed by an absolute or relative path. UNC paths follow the general form \\servername\sharename\path\file, but must at the very least contain the server and share components, i.e. \\servername\sharename. In both forms, the file names . and .. are special and refer to the current directory and the parent of the current directory respectively. The following examples illustrate various forms of path names:

  \\Host\share/file
    中央装置 Host 上に移動した位置 share の根本ディレクトリー中の file と呼ばれるファイルへの絶対的UNC経路｡註意すべきは､この経路上の file dirname の繰返し使用は､ //Host/share を意味し､ //Host を意味しない｡ 　　　 Absolute UNC path to a file called file in the root directory of the export point share on the host Host. Note that repeated use of file dirname on this path will give //Host/share, and will never give just //Host.

  c:foo
    装置c上の現在のディレクトリー中のファイル foo への巻相対経路｡ 　　 Volume-relative path to a file foo in the current directory on drive c.

  c:/foo
    装置c上の根本ディレクトリー中のファイル foo への絶対経路 Absolute path to a file foo in the root directory of drive c.

  foo\bar
    現在の巻上の現在のディレクトリーの中のディレクトリー foo の中のファイル bar への相対経路 　　　 Relative path to a file bar in the foo directory in the current directory on the current volume.

  \foo
    現在の巻上の根本ディレクトリー中のファイル foo への巻相対経路 Volume-relative path to a file foo in the root directory of the current volume.

  \\foo
    現在の巻上の根本ディレクトリー中のファイル foo への巻相対経路｡之は､UNC 経路に適合しない､従って､余分の斜線は不必要なものと仮定される｡ 　　　 Volume-relative path to a file foo in the root directory of the current volume. This is not a valid UNC path, so the assumption is that the extra backslashes are superfluous.

Zipfs
    zipfs対応が可能な全てのOS上では､ZIP書庫内部に据えられた経路はzipfs root命令によって返される文字列で始まる｡zipfs経路は全てのOS上で､大文字小文字を区別する｡ On all platforms where zipfs support is enabled, paths within mounted ZIP archives begin with the string returned by the zipfs root command. Zipfs paths are case-sensitive on all platforms.

### 波型符(~)置換 TILDE SUBSTITUTION

以前の版のTclと違い､Tclは 下に註記した例外の条件下で､ファイル経路上の暗黙の波型符置換を行わない｡file home命令とfile tildeexpand命令は明示的に同じことを遂行する為に使われ得る｡ Unlike earlier versions of Tcl, Tcl 9 does not do implicit tilde substitution on file paths with the exception noted below. The commands file home and file tildeexpand may be used to explicitly accomplish the same.

上述の例外は､auto_path変数の初期化､及び､tclvarsとtmに関する説明書の頁に記載された通りの､Tcl構成単位の経路捜索である｡ これらを初期化する為に使われる環境変数内のどのような経路も波型符で始まる時､それは恰も､最初の要素が､与えられた使用者の我家ディレクトーの場所で､置換えられる と解釈される｡ もし､波型符にすぐに分離譜が続いている場合､$HOME変数が置換される｡ それ以外は､波型符と次の分離譜の間が使用者名として採用され､それは､置換の為の使用者我家頁を取出す為に使われる｡これは､WindowsとPOSIXと, macOS上で働く｡ [訳註:訳がへろへろ??] The exception to the above is initialization of the auto_path variable and the Tcl module search paths as documented in the manpages for tclvars and tm. When any path in an environment variable used to initialize these starts with a tilde, it will be interpreted as if the first element is replaced with the location of the home directory for the given user. If the tilde is followed immediately by a separator, the $HOME environment variable is substituted. Otherwise the characters between the tilde and the next separator are taken as a user name, which is used to retrieve the user's home directory for substitution. This works on POSIX, macOS and Windows platforms.

### 互換性の問題 PORTABILITY ISSUES

全てのOSが大文字小文字を区別しているわけではない｡そこで､ファイル名の大文字小文字に依存するプログラムは避けることが好ましい｡更に､異なる装置では､異なる文字体系が許容されるかもしれないので､記述譜のファイル名に特殊文字譬えば: <>:?"/\|. を含まない名前を撰ぶことが好ましい｡最も安全な方法は数字とローマ字のみを含む名前を使うことである｡註意が必要なのは空白を含むファイル名(Windows で頻用される)と､ディレクトリーの区切りが逆斜線のファイル名(Windows の固有経路名)を扱う時である｡ Not all file systems are case sensitive, so scripts should avoid code that depends on the case of characters in a file name. In addition, the character sets allowed on different devices may differ, so scripts should choose file names that do not contain special characters like: <>:?"/\|. The safest approach is to use names consisting of alphanumeric characters only. Care should be taken with filenames which contain spaces (common on Windows systems) and filenames where the backslash is the directory separator (Windows native path names).

Windows では経路の長さに制限がある｡およそ２６０ 文字以上のファイル名又は全経路の表記は殆どのファイル操作で不具合になる｡ 　　 On Windows platforms there are file and path length restrictions. Complete paths or filenames longer than about 260 characters will lead to errors in most file operations.

その他のWindows の特殊性は､ファイルの末尾の任意の長さの “.” は無視されることで､譬えば､ “foo.” という名前のファイル又はディレクトリーを作成しようとすると､ “foo” になってしまう｡この事実は､ file normalize の結果に反映される｡更に､点だけで構成した名前 “.........” や点列の末尾に文字を付けて構成した名前 “.....abc” のファイル名は許可されない｡ 　　　 Another Windows peculiarity is that any number of trailing dots “.” in filenames are totally ignored, so, for example, attempts to create a file or directory with a name “foo.” will result in the creation of a file/directory with name “foo”. This fact is reflected in the results of file normalize. Furthermore, a file name consisting only of dots “.........” or dots with trailing characters “.....abc” is illegal.

### SEE ALSO

file, glob, zipfs

### KEYWORDS

current directory, absolute file name, relative file name, volume-relative file name, portability
Copyright © 1995-1996 Sun Microsystems, Inc.