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

### 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
    file — ファイルの名前と属性を操作する Manipulate file names and attributes
  構文 SYNOPSIS
  説明 DESCRIPTION
    file atime name ?time?
    file attributes name
    file attributes name ?option?
    file attributes name ?option value option value...?
      -archive
      -compsize
      -crc
      -mount
      -offset
      -uncompsize
    file channels ?pattern?
    file copy ?-force? ?--? source target
    file copy ?-force? ?--? source ?source ...? targetDir
    file delete ?-force? ?--? ?pathname ... ?
    file dirname name
    file executable name
    file exists name
    file extension name
    file home ?username?
    file isdirectory name
    file isfile name
    file join name ?name ...?
    file link ?-linktype? linkName ?target?
    file lstat name ?varName?
    file mkdir ?dir ...?
    file mtime name ?time?
    file nativename name
    file normalize name
    file owned name
    file pathtype name
    file readable name
    file readlink name
    file rename ?-force? ?--? source target
    file rename ?-force? ?--? source ?source ...? targetDir
    file rootname name
    file separator ?name?
    file size name
    file split name
    file stat name ?varName?
    file system name
    file tail name
    file tempdir ?template?
    file tempfile ?nameVar? ?template?
    file tildeexpand name
    file type name
    file volumes
    file writable name
  互換性の問題 　PORTABILITY ISSUES
    Unix
    Windows
  用例 EXAMPLES
  SEE ALSO
  KEYWORDS

### NAME

file — ファイルの名前と属性を操作する Manipulate file names and attributes

### 構文 SYNOPSIS

file option name ?arg arg ...?

### 説明 DESCRIPTION

この命令はファイルの名前や属性の操作を幾つか提供する｡name引数は殆どの場合､ファイルの名前である｡option引数は､ファイル名に何をすべきかを指し示す｡option は､混同が生じない限りどのような略名も受入れられる｡有効な option は次の通り: This command provides several operations on a file's name or attributes. The name argument is the name of a file in most cases. The option argument indicates what to do with the file name. Any unique abbreviation for option is acceptable. The valid options are:

file atime name ?time?
  name のファイルを最後に使用した時刻が十進数で返る｡もし time を指定すると､そのファイルに設定する利用時刻になる｡時刻は POSIX 規格方式で測定され､特定の時刻(普通は1970年１月１日)からの秒数である｡もし､ファイルが実在しない､又は､利用時刻の問合せや設定ができない場合は不具合が発生する｡ Windows では､FAT ファイル系は利用時刻を運用していない｡ zipfsファイル系上では､利用必要時間は修正時間に対応する｡ Returns a decimal string giving the time at which file name was last accessed. If time is specified, it is an access time to set for the file. The time is measured in the standard POSIX fashion as seconds from a fixed starting time (often January 1, 1970). If the file does not exist or its access time cannot be queried or set then an error is generated. On Windows, FAT file systems do not support access time. On zipfs file systems, access time is mapped to the modification time.

file attributes name

file attributes name ?option?

file attributes name ?option value option value...?
  この副命令は､ファイルに関連したOSに固有の値を返したり設定したりする｡ 第１の形式はOS固有の指定項目とその値のリストを返す｡ 第２の形式は､特定の指定項目の値を返す｡ 第３の形式は一つ又はそれ以上の値を設定する｡値は次の通りである: 　　 This subcommand returns or sets platform-specific values associated with a file. The first form returns a list of the platform-specific options and their values. The second form returns the value for the given option. The third form sets one or more of the values. The values are as follows:

  ユニクスでは､-groupはファイルに関する群名を得るか設定する｡群名識別子は本命令に与えられるが､群名を返す｡ -ownerは､ファイルの所有者の使用者名を得るか設定する｡本命令は所有者名を返すが､名前の識別子は所有者を設定する時に渡すことができる｡ -permissionsは､無為設定では八進表記を使って､ファイルの利用権限を取出すか設定する｡この指示項目は､chmod命令に受容れられる記号表記を使って､[ugo]?[[+-=][rwxst],[...]]の形式に従って､権限の設定の為の限定された支援を提供する｡多重権限仕様は､コンマで句切って与えられ得る｡譬えば､u+s,go-rwは､setuid識別ビットをファイルの所有者の為に設定し､同じく､ファイルの群と他の使用者の為の読出しと書込み許可を除去する｡ls-様式文字列の形式のrwxrwxrwxも又受容れられるが､常に9文字長でなければならない｡譬えば､rwxr-xr-tは01755と等価である｡ファイル旗徴に対応しているユニクスの版上では､-readonlyはファイルの読出しのみの属性､即ち､chflags命令への使用者変更不能旗徴(uchg)の値を返すか､設定するか､刷新する｡ On Unix, -group gets or sets the group name for the file. A group id can be given to the command, but it returns a group name. -owner gets or sets the user name of the owner of the file. The command returns the owner name, but the numerical id can be passed when setting the owner. -permissions retrieves or sets a file's access permissions, using octal notation by default. This option also provides limited support for setting permissions using the symbolic notation accepted by the chmod command, following the form [ugo]?[[+-=][rwxst],[...]]. Multiple permission specifications may be given, separated by commas. E.g., u+s,go-rw would set the setuid bit for a file's owner as well as remove read and write permission for the file's group and other users. An ls-style string of the form rwxrwxrwx is also accepted but must always be 9 characters long. E.g., rwxr-xr-t is equivalent to 01755. On versions of Unix supporting file flags, -readonly returns the value of, or sets, or clears the readonly attribute of a file, i.e., the user immutable flag (uchg) to the chflags command.

  Windows上では､-archiveはファイルの書庫属性の値を与えるか､設定するか､削除する｡ -hiddenはファイルの秘匿属性の値を与えるか､設定するか､削除する｡ -longnameはそれぞれの経路要素を長い版に拡張する｡この属性は設定できない｡ -readonlyはファイルの読出し専用属性の値を与えるか､設定するか､削除する｡ -shortnameは可能なら､全経路要素がその短い版(8.3)に置換えられた文字列を与える｡短い名前に対応付けできない経路要素に関しては､長い名前が保持される｡この属性は設定できない｡ -systemはファイルの系属性の値を与えるか､設定するか､削除する｡ On Windows, -archive gives the value or sets or clears the archive attribute of the file. -hidden gives the value or sets or clears the hidden attribute of the file. -longname will expand each path element to its long version. This attribute cannot be set. -readonly gives the value or sets or clears the readonly attribute of the file. -shortname gives a string where every path element is replaced with its short (8.3) version of the name if possible. For path elements that cannot be mapped to short names, the long name is retained. This attribute cannot be set. -system gives or sets or clears the value of the system attribute of the file.

  マックとダルワンでは､ -creatorは､ファイルの捜索者作成者型を与えるか設定する｡ -hiddenはファイルの秘匿属性を与えるか､設定するか､削除する｡ -readonlyはファイルの読出し専用属性を与えるか､設定するか､削除する｡ -rsrclengthはファイルのなんたらかんたらの長さを与える､この属性は値0にのみ設定でき､ファイルからなんたらを剥ぎ取る結果になる｡ On macOS and Darwin, -creator gives or sets the Finder creator type of the file. -hidden gives or sets or clears the hidden attribute of the file. -readonly gives or sets or clears the readonly attribute of the file. -rsrclength gives the length of the resource fork of the file, this attribute can only be set to the value 0, which results in the resource fork being stripped off the file.

  全てのOS上では､zipfs据付書庫内のファイルは次の属性を返す｡これ等は全て読出し専用であり､直接には設定できない｡ On all platforms, files in zipfs mounted archives return the following attributes. These are all read-only and cannot be directly set.

  -archive
    据付られたZIP書庫の経路はファイルを含む｡　　　　　　 The path of the mounted ZIP archive containing the file.

  -compsize
    書庫内部のファイルの圧縮された寸法｡ディレクトーに関しては0である｡ The compressed size of the file within the archive. This is 0 for directories.

  -crc
    もし存在すれば､ファイルの巡回冗長検査､無ければ0｡ 　 The CRC of the file if present, else 0.

  -mount
    含まれている書庫が据付られている経路｡ The path where the containing archive is mounted.

  -offset
    書庫内部のファイルの偏移｡ The offset of the file within the archive.

  -uncompsize
    ファイルの非圧縮寸法｡ディレクトリーに関しては0｡ The uncompressed size of the file. This is 0 for directories.

  返されたリストに他の書庫が存るかもしれない｡それらは無視すべし｡ Other attributes may be present in the returned list. These should be ignored.

file channels ?pattern?
  もし､ pattern が指定されていないと､この解釈実行機能中の登録されている開いている通信路全ての名前のリストを返す｡もし､ pattern が指定されてると､ pattern に合致するものの名前だけが返される｡合致は string match と同じ規則を使って決定される｡ 　　　 If pattern is not specified, returns a list of names of all registered open channels in this interpreter. If pattern is specified, only those names matching pattern are returned. Matching is determined using the same rules as for string match.

file copy ?-force? ?--? source target

file copy ?-force? ?--? source ?source ...? targetDir
  第１の形式は source というファイル又はディレクトリーの複写を経路 target の下に作る｡もし target が実在するディレクトリーの場合､第２の形式が使用される｡第２の形式は targetDir の中に列挙したそれぞれの source ファイルの複写を作成する｡ディレクトリーが source として指定された場合､そのディレクトリーの中身が再帰的に targetDir の中に複写される｡既存のファイルは -force 指定がない限り上書きされる事はない(複写を進める許可が必要であれば､その時 Tcl は又､仕向け先ファイル又はディレクトリーの使用権限を調停することを試みる)｡単一のファイル系内で複写する場合､ file copy は軽い連結の複写を行う(即ち､連結そのものは複写されるが､指す先のものは複写されない)｡非空のディレクトリーを上書きするとか､ディレクトリーをファイルで上書きするとか､ファイルをディレクトリーで上書きする試みは､縦え -force が指定されていても全て不都合を生じる｡引数は指定された順に処理され､不都合がある場合､最初の不都合の所で停止する｡ -- の印はスイッチの終りになり; -- に続く引数は - で始まっていても source として扱われる｡ 　 　　　 The first form makes a copy of the file or directory source under the pathname target. If target is an existing directory, then the second form is used. The second form makes a copy inside targetDir of each source file listed. If a directory is specified as a source, then the contents of the directory will be recursively copied into targetDir. Existing files will not be overwritten unless the -force option is specified (when Tcl will also attempt to adjust permissions on the destination file or directory if that is necessary to allow the copy to proceed). When copying within a single filesystem, file copy will copy soft links (i.e. the links themselves are copied, not the things they point to). Trying to overwrite a non-empty directory, overwrite a directory with a file, or overwrite a file with a directory will all result in errors even if -force was specified. Arguments are processed in the order specified, halting at the first error, if any. A -- marks the end of switches; the argument following the -- will be treated as a source even if it starts with a -.

file delete ?-force? ?--? ?pathname ... ?
  それぞれの pathname 引数で指定されたファイル又はディレクトリーを除去する｡空でないディレクトリーは指定項目 -force が指定されているときにのみ除去される｡ショートカットに操作すると､連結そのものは除去されるが､それが指している対象は除去されない｡実在しないファイルの削除の試みは不具合とは看做されない｡書込み不可のファイルの除去を試みると､指定項目 -force が指定されていなくても､除去される｡もし､-force 指定項目が､ディレクトリーに指定されると､Tcl は､消去処理を進めるに必要であれば､ 利用許可の変更と､指定された経路からの現在のディレクトリー “pwd” の移動の両方を試みる｡ 引数は指定した順に進行するので､不具合があると､最初の不具合か生じたところで停止する｡ -- の印はスイッチの終りになり; -- に続く引数は - で始まっていても pathname として扱われる｡　　　　 Removes the file or directory specified by each pathname argument. Non-empty directories will be removed only if the -force option is specified. When operating on symbolic links, the links themselves will be deleted, not the objects they point to. Trying to delete a non-existent file is not considered an error. Trying to delete a read-only file will cause the file to be deleted, even if the -force flags is not specified. If the -force option is specified on a directory, Tcl will attempt both to change permissions and move the current directory “pwd” out of the given path if that is necessary to allow the deletion to proceed. Arguments are processed in the order specified, halting at the first error, if any. A -- marks the end of switches; the argument following the -- will be treated as a pathname even if it starts with a -.

file dirname name
  最後の要素を除いて､ name の中の全ての経路の構成要素からなる名前を返す｡もし､ name が相対的ファイ名であって､且つ､一つだけの経路要素を含む場合は “.” を返す｡もし､name が根本ディレクトリーを参照しているとき､根本ディレクトリーが返る｡譬えば､ 　　　 Returns a name comprised of all of the path components in name excluding the last element. If name is a relative file name and only contains one path element, then returns “.”. If name refers to a root directory, then the root directory is returned. For example,

      file dirname c:/

  はc:/を返す｡ returns c:/.

file executable name
  今の使用者がファイル name を実行可能なら 1 を､そうでなければ 0 を返す｡Windowsでは､実行可能属性を有さなくても､この命令は全てのディレクトリーと拡張子がexe と com と cmdと bat のどのファイルも実行可能として扱う｡ 　　　 Returns 1 if file name is executable by the current user, 0 otherwise. On Windows, which does not have an executable attribute, the command treats all directories and any files with extensions exe, com, cmd or bat as executable.

file exists name
  ファイル name が実在し､現在の使用者がそれに通じるディレクトリの検索権限を有しているなら 1 を､そうでなければ 0 を返す｡ 　　　 Returns 1 if file name exists and the current user has search privileges for the directories leading to it, 0 otherwise.

file extension name
  name の中の最後の要素の最後の点とそれ以降の全ての文字を返す｡もし､最後の要素に点がない場合は空文字列を返す｡ 　　　 Returns all of the characters in name after and including the last dot in the last element of name. If there is no dot in the last element of name then returns the empty string.

file home ?username?
  引数が全く指定されないと､本命令は現在の使用者の我家ディレクトーを返す｡これは一般に$HOME環境変数であるが､WindowsのOSの経路では､逆斜線が前向き斜線に置換えられる｡もし$HOME環境変数が設定されてないと､不都合が生じる｡ If no argument is specified, the command returns the home directory of the current user. This is generally the value of the $HOME environment variable except that on Windows platforms backslashes in the path are replaced by forward slashes. An error is raised if the $HOME environment variable is not set.

  usernameが指定されると､命令は､指定された使用者の為のシステム内に構成設定された我家ディレクトーを返す｡註意すべきは､これは､username が現在の使用者に該当する時でさえ､$HOME環境変数の値とは異なるかもしれない｡ もし､usernameがOS上の使用者番号に該当しない場合､不都合が生じる｡ If username is specified, the command returns the home directory configured in the system for the specified user. Note this may be different than the value of the $HOME environment variable even when username corresponds to the current user. An error is raised if the username does not correspond to a user account on the system.

file isdirectory name
  もし､ name がディレクトリーなら 1 を､そうでなければ 0 を返す｡　　　 Returns 1 if file name is a directory, 0 otherwise.

file isfile name
  もし､ name が正規のファイルであれば 1 を､そうでなければ 0 を返す｡　　　 Returns 1 if file name is a regular file, 0 otherwise.

file join name ?name ...?
  一つ或はそれ以上のファイル名を取り､現在のOSの正しい経路区分用の記号を使ってそれらを組合せる｡もし､個々の name が相対的であると､それより前にあるファイル名の引数に結合される｡そうでない場合､それ以前のどの引数も遺棄され､結合はその引数から進む｡譬えば､ 　　　 Takes one or more file names and combines them, using the correct path separator for the current platform. If a particular name is relative, then it will be joined to the previous file name argument. Otherwise, any earlier arguments will be discarded, and joining will proceed from the current argument. For example,

      file join a b /foo bar

  /foo/bar を返す｡ returns /foo/bar.

  註意すべきは､何れの名前も区分記号を含むことができる､また､結果は常に現在のOSに関して正規のものである: Unix と Windows に “/” が使われる｡ Note that any of the names can contain separators, and that the result is always canonical for the current platform: / for Unix and Windows.

file link ?-linktype? linkName ?target?
  もし､引数が一つだけ与えられると､その引数は linkName であると仮定され､この命令は､ linkName により与えられる連結の値(即ち､それが指しているファイルの名前)を返す｡もし linkName が連結でないか､値が読めない(譬えば､強度の連結であるなどで､通常のファイルの様に見える)かなら､不具合が返る｡ 　　　 If only one argument is given, that argument is assumed to be linkName, and this command returns the value of the link given by linkName (i.e. the name of the file it points to). If linkName is not a link or its value cannot be read (as, for example, seems to be the case with hard links, which look just like ordinary files), then an error is returned.

  もし､二つの引数が与えられると､それは､ linkName と target であると仮定される｡もし､linkName が既に実在するか､ target が存在しないか､の場合は不具合が返って来る｡それ以外なら､ Tcl は linkName と呼ばれる､既存のファイルシステム対象の target (それが返り値にもなる)を指す新しい連結を作成する､この連結の型はOS固有である(Unixでは､記号連結が無為設定である)｡ 使用者が異なるOSを横断する方法で連結を生成することを望み､且つ､どの型の連結が作成されるかを気にしないなら､これは便利である｡ 　　　 If 2 arguments are given, then these are assumed to be linkName and target. If linkName already exists, or if target does not exist, an error will be returned. Otherwise, Tcl creates a new link called linkName which points to the existing filesystem object at target (which is also the returned value), where the type of the link is platform-specific (on Unix a symbolic link will be the default). This is useful for the case where the user wishes to create a link in a cross-platform way, and does not care what type of link is created.

  もし､使用者が特定の型のみの連結を作りたいと望むなら､(又､何かの理由でそれが不可能なら不具合を発する)､指示項目 -linktype 引数を与えるのが好い｡ -linktype として､受入れられる値は “-symbolic” と “-hard” である｡ 　　　 If the user wishes to make a link of a specific type only, (and signal an error if for some reason that is not possible), then the optional -linktype argument should be given. Accepted values for -linktype are “-symbolic” and “-hard”.

  ユニックスでは､ショートカットは間接番地を作成でき､且つ､その経路は実際のlinkName名に相対的(cwdではない)でなければならない､但し､間接連結に対応してない他の全てのOSでは､目標経路は常に連結が生成される前に､正規化され絶対経路に変換される｡どの様な連結にも対応してない､又は､要求された型に対応してない､ファイル系上に連結が生成される時､不都合伝言文が返される｡ Windowsは直接､ショートカットと､NTFS駆動の固定ファイル連結に対応している｡大概のユニクスOSはショートカットと固定連結(後者はファイルのみ)に対応している｡ On Unix, symbolic links can be made to relative paths, and those paths must be relative to the actual linkName's location (not to the cwd), but on all other platforms where relative links are not supported, target paths will always be converted to absolute, normalized form before the link is created (and therefore relative paths are interpreted as relative to the cwd). When creating links on filesystems that either do not support any links, or do not support the specific type requested, an error message will be returned. Most Unix platforms support both symbolic and hard links (the latter for files only). Windows supports symbolic directory links and hard file links on NTFS drives.

file lstat name ?varName?
  stat呼出しの代りにlstat核呼出しを使うこと以外は､stat指示項目(後述参照)に等しい｡これは､もしnameがショートカットを参照すると､それが参照しているファイルでなく､連結に関する情報が返される｡ショートカットに対応してないOSでは､この指示項目は正確にstat指示項目と同じに振舞う｡ Same as stat option (see below) except uses the lstat kernel call instead of stat. This means that if name refers to a symbolic link the information returned is for the link rather than the file it refers to. On systems that do not support symbolic links this option behaves exactly the same as the stat option.

file mkdir ?dir ...?
  指定されたそれぞれのディレクトリーを作成する｡指定された dir のそれぞれの経路名は､dir そのものと同じように､実在しない全ての親ディレクトリーを､この命令が作成する｡もし､実在するディレクトリーが指定されると､何の活動もなされず､不具合も返らない｡ディレクトリーで実在するファイルを上書きしようとすると不具合になる｡引数は指定された順に処理され､もし不具合があるとその位置で停止する｡[訳註 新規ファイル作成は open 命令の項を参照のこと] 　　　 Creates each directory specified. For each pathname dir specified, this command will create all non-existing parent directories as well as dir itself. If an existing directory is specified, then no action is taken and no error is returned. Trying to overwrite an existing file with a directory will result in an error. Arguments are processed in the order specified, halting at the first error, if any.

file mtime name ?time?
  ファイルnameが最後に修正された時刻を与える十進数文字列を返す｡もしtimeが指定されると､それはファイルの為の修正時刻である(ユニクスのtouchと等価)｡時刻は､標準時刻からの秒としての標準ユニクス専用通信規格様式である(屡々､1970年1月1日)｡もしファイルが､存在しないか､修正時刻が問合せできないか設定できないと､不都合が生成される｡zipfsファイル系では､修正時刻は明示的には設定できない｡ Returns a decimal string giving the time at which file name was last modified. If time is specified, it is a modification time to set for the file (equivalent to Unix touch). The time is measured in the standard POSIX fashion as seconds from a fixed starting time (often January 1, 1970). If the file does not exist or its modified time cannot be queried or set then an error is generated. On zipfs file systems, modification time cannot be explicitly set.

file nativename name
  OS固有のファイルの名前を返す｡これは､譬えば､Windows の下での exec 経由の副手順の呼び出しの様に､渡す名前にOS固有の呼び出し名が必要なときに便利である( 下の EXAMPLES 参照)｡ 　　 Returns the platform-specific name of the file. This is useful if the filename is needed to pass to a platform-specific call, such as to a subprocess via exec under Windows (see EXAMPLES below).

file normalize name
  ファイル系の対象物(ファイル､ディレクトリー､連結､等)を表す､唯一の正規の名前の経路名を返す｡その文字列値はそのファイルの唯一の識別子として使用できる｡正規の名前の経路は全ての “../” や “./” を除かれた絶対経路である｡又､OSに固有の｢標準｣形式である｡Unixでは､このことは､経路までに至る断片は､記号の 連結/別名 から独立している必要があることを意味する(が､経路の最終要素だけは記号連結でもよい)､Windows では､大文字小文字を区別した長い名前の形式が望まれる(それにより､唯一の､大文字小文字を区別した経路が得られる)｡経路の最後の連結に係わる一つの例外は次の理由で必要である､Tcl又は､使用者は実際の記号連結そのものの操作を望むかもしれない為である(譬えば､file delete, file rename, file copy は､それが指しているものではなく､記号連結を操作するよう定義されている)｡ 　　 Returns a unique normalized path representation for the file-system object (file, directory, link, etc), whose string value can be used as a unique identifier for it. A normalized path is an absolute path which has all “../” and “./” removed. Also it is one which is in the “standard” format for the native platform. On Unix, this means the segments leading up to the path must be free of symbolic links/aliases (but the very last path component may be a symbolic link), and on Windows it also means we want the long form with that form's case-dependence (which gives us a unique, case-dependent path). The one exception concerning the last link in the path is necessary, because Tcl or the user may wish to operate on the actual symbolic link itself (for example file delete, file rename, file copy are defined to operate on symbolic links, not on the things that they point to).

file owned name
  ファイルnameが現在の使用者に所有されていると1､それ以外は0を返す｡ Returns 1 if file name is owned by the current user, 0 otherwise.

file pathtype name
  absolute, relative, volumerelative のどれか一つを返す｡もし､ name が特定の巻の特定のファイルを参照していれば､ absolute である｡もし､ name が現在の活動ディレクトリーに相対的であれば､経路の型は relative になる｡もし､ name が特定の巻きの上の現在の活動ディレクトリーに相対的であるか､現在の活動ディレクトリーの特定のファイルであれば､経路の型は volumerelative になる｡ 　　　　 Returns one of absolute, relative, volumerelative. If name refers to a specific file on a specific volume, the path type will be absolute. If name refers to a file relative to the current working directory, then the path type will be relative. If name refers to a file relative to the current working directory on a specified volume, or to a specific file on the current working volume, then the path type is volumerelative.

file readable name
  ファイル name が現使用者により読み出し可能であれば 1 を､そうでなければ 0 を返す｡ Returns 1 if file name is readable by the current user, 0 otherwise.

file readlink name
  name で与えられた記号連結の値を返す(即ち､それが指しているファイルの名前)｡もし､ name が記号連結でないか､読めない値であれば､不具合が返る｡記号連結を運用していないOSでは､この指定項目は定義されていない｡ 　　　　 Returns the value of the symbolic link given by name (i.e. the name of the file it points to). If name is not a symbolic link or its value cannot be read, then an error is returned. On systems that do not support symbolic links this option is undefined.

file rename ?-force? ?--? source target

file rename ?-force? ?--? source ?source ...? targetDir
  第１の形式は､経路 source で指定されたファイル又はディレクトリーを取り､それを target に名称変更する､もし､経路名 target が別のディレクトリーの中の名前を指定している時は､ファイル又はディレクトリーを移動する｡もし､ target が既存のディレクトリーであると､第２の形式が使われる｡第２形式では､それぞれの source ファイル又はディレクトリーをディレクトリー targetDir に移動して入れる｡ -force が指定されていない限り､既存のファイルが上書きされることはない｡単一のファイル系の中で操作するとき､Tclはそれが指している本体ではなく､記号連結を名称変更する｡空でないディレクトリーを上書きするとか､ディレクトリーをファイルで上書きするとか､ファイルをディレクトリーで上書きする試みは､縦え -force が指定されていても不都合を生じる｡引数は指定された順に処理され､不都合がある場合､最初の不都合の所で停止する｡ -- の印はスイッチの終りになり; -- に続く引数は - で始まっていても source として扱われる｡ 　　　 The first form takes the file or directory specified by pathname source and renames it to target, moving the file if the pathname target specifies a name in a different directory. If target is an existing directory, then the second form is used. The second form moves each source file or directory into the directory targetDir. Existing files will not be overwritten unless the -force option is specified. When operating inside a single filesystem, Tcl will rename symbolic links rather than the things that they point to. Trying to overwrite a non-empty directory, overwrite a directory with a file, or a file with a directory will all result in errors. Arguments are processed in the order specified, halting at the first error, if any. A -- marks the end of switches; the argument following the -- will be treated as a source even if it starts with a -.

file rootname name
  name の最後の構成物の中の最後の “.” の手前迄の name の全ての文字を返す｡もし､最後の構成物が点を含んでいないと､ name を返す｡ 　　　 Returns all of the characters in name up to but not including the last “.” character in the last component of name. If the last component of name does not contain a dot, then returns name.

file separator ?name?
  もし､引数が与えられないと､OS上の固有のファイルの経路要素の区分に使用されている文字を返す｡もし､経路が与えられると､その経路に責任があるファイル系が､区分文字を返すよう要請される｡ name を受入れるファイル系がないと､不具合が発生する｡ 　　　 If no argument is given, returns the character which is used to separate path segments for native files on this platform. If a path is given, the filesystem responsible for that path is asked to return its separator character. If no file system accepts name, an error is generated.

file size name
  ファイル name のバイト単位の容量を与える十進数文字列が返って来る｡もし､ファイルが実在しないか､その容量の問合せができないと不具合が発生する｡ 　　 Returns a decimal string giving the size of file name in bytes. If the file does not exist or its size cannot be queried then an error is generated.

file split name
  name の中の経路の構成要素が要素になっているリストを返す｡そのリストの最初の要素は name と同じ経路の型を有す｡それ以外の全ての要素は相対的である｡経路を区分する文字は､要素が明らかに相対的であることを確認する為に必要である場合を除き削除される｡譬えば､Unixの下では 　　　 Returns a list whose elements are the path components in name. The first element of the list will have the same path type as name. All other elements will be relative. Path separators will be discarded unless they are needed to ensure that an element is unambiguously relative.

file stat name ?varName?
  name上でstat核呼出しを起動し､核呼出しで返された､情報付の辞書を返す｡もし､varNameが与えらると､情報を保持する為の変数を使う｡varNameは配列変数として扱われ､その様な場合､この命令は空文字列を返す｡次の要素が設定される:atime, ctime, dev, gid, ino, mode, mtime, nlink, size, type, uid ｡ type以外のそれぞれの要素は､stat戻り構造体からの対応する欄の値を伴う十進数である; 値の意味の詳細に関して､取扱い説明書のstat見出しを参照されたい｡type要素はfile type命令によって返されたと同じ形式内のファイルの型を与える｡ Invokes the stat kernel call on name, and returns a dictionary with the information returned from the kernel call. If varName is given, it uses the variable to hold the information. VarName is treated as an array variable, and in such case the command returns the empty string. The following elements are set: atime, ctime, dev, gid, ino, mode, mtime, nlink, size, type, uid. Each element except type is a decimal string with the value of the corresponding field from the stat return structure; see the manual entry for stat for details on the meanings of the values. The type element gives the type of the file in the same form returned by the command file type.

file system name
  一つ又は二つの要素のリストを返す､第１要素は､そのファイルを使う為のファイル系の名前､第２要素がある場合は､ファイル系固有の性質或はそのファイル系内の場所の型を表す任意の文字列である｡もしファイル系が､１つの型のみ運用している場合は､第２の要素は与えられないかもしれない｡譬えば､固有のファイルは第１要素が “native” であり､第二要素はその時与えられたOS固有の型のファイルの系の名前(譬えば､Windowsでは､ “NTFS”, “FAT” )である｡汎用の仮想ファイル系は､拡張呼出し “vfs” を通して仮想ファイル系に積まれた遠隔 ftp 局所のファイルを表現する為に､リスト “vfs ftp” を返すかもしれない｡もし､ファイルがどのファイル系にも属していない場合は不具合を生じる｡ 　　　 Returns a list of one or two elements, the first of which is the name of the filesystem to use for the file, and the second, if given, an arbitrary string representing the filesystem-specific nature or type of the location within that filesystem. If a filesystem only supports one type of file, the second element may not be supplied. For example the native files have a first element “native”, and a second element which when given is a platform-specific type name for the file's system (e.g. “NTFS”, “FAT”, on Windows). A generic virtual file system might return the list “vfs ftp” to represent a file on a remote ftp site mounted as a virtual filesystem through an extension called “vfs”. If the file does not belong to any filesystem, an error is generated.

file tail name
  name の最後のファイル系構成要素内の全ての文字を返す｡name 中の末尾のどのディレクトリー区切り記号も無視される｡name に区切り記号が含まれていない場合は name を返す｡そこで､ file tail a/b と file tail a/b/ と file tail b は全て b を返す｡ 　　 Returns all of the characters in the last filesystem component of name. Any trailing directory separator in name is ignored. If name contains no separators then returns name. So, file tail a/b, file tail a/b/ and file tail b all return b.

file tempdir ?template?
  臨時ディレクトリー(新しく創生され､現在の記述譜から書込み可能なことが保障されている)を創生しその名前を返す｡もし template が与えられると､それは一つ或は既存の(OSによって管理されているファイル体系上に)ディレクトリーと両方を臨時ディレクトリーを含む為に指定し､又､ディレクトー名の基本部分を指定する； もし､名前の中にディレクトリー分離記号がある場合､それはディレクトリーの場所を有すると看做される､又､基本部分とは最後のディレクトリー分離記号の後ろ全部である(もし､空でなければ)｡無為設定の含有ディレクトリーはOS固有の操作によって定められる､又､無為設定の基本名の前置辞は “tcl” である｡ Creates a temporary directory (guaranteed to be newly created and writable by the current script) and returns its name. If template is given, it specifies one of or both of the existing directory (on a filesystem controlled by the operating system) to contain the temporary directory, and the base part of the directory name; it is considered to have the location of the directory if there is a directory separator in the name, and the base part is everything after the last directory separator (if non-empty). The default containing directory is determined by system-specific operations, and the default base name prefix is “tcl”.

  次の出力は典型的であり､図示的である； 実際の出力はOSによって様々になる： The following output is typical and illustrative; the actual output will vary between platforms:

      % file tempdir
      /var/tmp/tcl_u0kuy5
       % file tempdir /tmp/myapp
      /tmp/myapp_8o7r9L
      % file tempdir /tmp/
      /tmp/tcl_1mOJHD
      % file tempdir myapp
      /var/tmp/myapp_0ihS0n

file tempfile ?nameVar? ?template?
  臨時ファイルを作成しそのファイル上に読み書き通信路を開けて返す｡もし nameVar が与えられると､臨時ファイルの名前が書込まれることになる変数を指定する; 指定されないと､ Tcl は､臨時ファイルが､一旦削除されると最早要求されない様に､手配する｡もし template が指定されると､それが作成された時に使う雛形のファイル名の一部分(ディレクトリーや､基本名や､拡張子の様な)を指定する､しかしあるOSではこれ等の部分の幾つか或いは全部を無視し､組込れた無為設定を使うかもしれない｡(訳註 8.6版の新命令｡8.5版用では､譬えば exec 命令の頁に Windows の CIPHER 命令の紹介がある)　　　 　 Creates a temporary file and returns a read-write channel opened on that file. If the nameVar is given, it specifies a variable that the name of the temporary file will be written into; if absent, Tcl will attempt to arrange for the temporary file to be deleted once it is no longer required. If the template is present, it specifies parts of the template of the filename to use when creating it (such as the directory, base-name or extension) though some platforms may ignore some or all of these parts and use a built-in default instead.

  註意すべきは､臨時ファイルは凡そ固有のファイル系上のみに生成される｡それ故､OS固有の API と共に使われたり､ファイル名が必要な外部算譜に頼られたりするかもしれない｡　 　 Note that temporary files are only ever created on the native filesystem. As such, they can be relied upon to be used with operating-system native APIs and external programs that require a filename.

file tildeexpand name
  name上での波型置換を遂行した結果を返す｡ もし､名前が波型符"～"で始まっていると､ファイル名は恰も､最初の要素が与えられた使用者の為の我家ディレクトリーの場所に置換えられていると､解釈される｡ もし､波型符の直後に経路分離記号が続いていると､$HOME環境変数に置換えられる｡それ以外は､波型符と次の分離記号の文字は､置換の為の使用者の我家ディレクトーを取出す為に使われる使用者の名前､として取得される｡ $HOME環境変数又は使用者が存在しない場合は不都合が生じる｡ Returns the result of performing tilde substitution on name. If the name begins with a tilde, then the file name 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 path 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. An error is raised if the $HOME environment variable or user does not exist.

  ファイル名が波型符"～"で始まらないときは､修正なしに返される｡ If the file name does not begin with a tilde, it is returned unmodified.

file type name
  name と謂ふファイルの型を与える文字列を返す､それは､file か directory か characterSpecial か blockSpecial かfifo か link か socket の内のどれか１つである｡ Returns a string giving the type of file name, which will be one of file, directory, characterSpecial, blockSpecial, fifo, link, or socket.

file volumes
  システム上に載せられた巻への絶対経路を､適切なTclリストとして返す｡UNIX上で､根元の巻として仮想ファイル系がない場合この命令は常に “/” を返す､理由は､全てのファイル系が局所的に載せられているから｡Windows では､利用可能な装置のリストを返す(譬えば､ “a:/ c:/”) ｡もし､何れか仮想ファイル系が追加の巻を載せていると､それは返って来るリストに入っている｡ 　　 Returns the absolute paths to the volumes mounted on the system, as a proper Tcl list. Without any virtual filesystems mounted as root volumes, on UNIX, the command will always return “/”, since all filesystems are locally mounted. On Windows, it will return a list of the available local drives (e.g. “a:/ c:/”). If any virtual filesystem has mounted additional volumes, they will be in the returned list.

file writable name
  現使用者が､ファイル name に書き込み可能であれば 1 を､そうでなければ 0 を返す｡ 　　　 Returns 1 if file name is writable by the current user, 0 otherwise.

### 互換性の問題 　PORTABILITY ISSUES

Unix
  これらの命令は常に､実際の使用者と使用群の識別子を使って操作されているが､効率的な命令ではない｡ 　　　 These commands always operate using the real user and group identifiers, not the effective ones.

Windows
  file owned 副命令は､誰か他の使用者を装うかもしれない時分割細片番号ではなく､処理手順の使用者識別子(SID)を使う｡ 　　　 The file owned subcommand uses the user identifier (SID) of the process token, not the thread token which may be impersonating some other user.

### 用例 EXAMPLES

この手続函数は､与えられたディレクトリーの中から､現ディレクトリー中に対応する名前の対象ファイルがある､Cファイルを如何にして捜索するかを例示する: 　　　 This procedure shows how to search for C files in a given directory that have a correspondingly-named object file in the current directory:

    proc findMatchingCFiles {dir} {
        set files {}
        switch $::tcl_platform(platform) {
            windows {
                set ext .obj
            }
            unix {
               set ext .o
            }
        }
        foreach file [glob -nocomplain -directory $dir *.c] {
            set objectFile [file tail [file rootname $file]]$ext
            if {[file exists $objectFile]} {
                lappend files $file
            }
        }
        return $files
    }

ファイルの名前を変え､指定を旧位置から新位置にして記号連結を残す: 　　 Rename a file and leave a symbolic link pointing from the old location to the new place:

    set oldName foobar.txt
    set newName foo/bar.txt
    # 実在する場所への移動になる様に確かめる...
    # Make sure that where we're going to move to exists...
    if {![file isdirectory [file dirname $newName]]} {
        file mkdir [file dirname $newName]
    }
    file rename $oldName $newName
    file link -symbolic $oldName $newName

Windows 上で､ (エクスプローラ対話機能上の二度-軽叩と同じ効果を与えて)ファイルを容易に “開始” できるが､OSに渡される名前はOS固有の形式でなければならない: 　　 On Windows, a file can be “started” easily enough (equivalent to double-clicking on it in the Explorer interface) but the name passed to the operating system must be in native format:

    exec {*}[auto_execok start] {} [file nativename C:/Users/fred/example.txt]

### SEE ALSO

filename, open, close, eof, gets, tell, seek, fblocked, flush

### KEYWORDS

attributes, copy files, delete files, directory, file, move files, name, rename files, stat, user
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.