file

ReferenceTOPKeywords

コマンド名

file - ファイルの名前と属性を操作します。

構文

file option name ? arg arg ...?

解説

本コマンドはファイルの名前や属性に関する操作を提供します。 Name はファイルの名前です。 "~" で始まっていればそのコマンドを実行する前に "~"置換が展開されます (詳しくは filenameをご参照下さい) 。

file atime name ?time?
file attributes name
file attributes name ?option?
file attributes name ?option value option value...?
file channels ?pattern?
file copy ?-force? ?- -? source target
file copy ?-force? ?- -? source ?source ...? targetDir
file delete ?-force? ?- -? pathname ?pathname ... ?
file dirname name
file executable name
file exists name
file extension name
file isdirectory name
file isfile name
file join name ?name ...?
file link ?-linktype? linkName ?target?
file lstat name varName
file mkdir dir ?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 type name
file volume
file writable name
file atime name ?time?
 
ファイルname の最終アクセス時間を求めます。 10進の数値の文字列を返します。 time が指定されていれば、ファイルアクセス時間をこれに設定します。時間は POSIX の標準方法、つまり、ある特定の日時 (1970年 1月 1日であることが多い) からの秒数で測られた値です。ファイルが存在しなかったり、アクセス時間を調べることや設定することができなかった場合にはエラーが返されます。例えば、Windows のFATファイルシステムはアクセス時間をサポートしません。
 
file attributes name
file attributes name ?option?
file attributes name ?option value option value...?
 
このサブ・コマンドはファイルと関連していたプラットフォーム特定の値を返します、または設定します。1番目のフォーマットはプラットフォーム特定のフラグとそれらの値からなるリストを返します。2番目のフォーマットは指定するオプションの値を返します。3番目のフォーマットは1個以上の値を設定します。それらの値は次に示す通 りです。

Unixで、-groupはファイルのグループの名前を取得、または設定します。 グループIDはコマンドに与えられますが、コマンドはグループの名前を返します。-ownerはファイルの所有者としてのユーザー名を取得、または設定します。このコマンドは所有者の名前を返しますが、所有者を設定するときには数値IDが渡されます。-permissionsは chmod(1) が使う8進コードを設定、または検索します。本コマンドは有符号な属性を用いてchmod ( 1 ) の設定を制限的にサポートします。有符号な属性は[ugo]?[[+-=][rwxst ],[ ... ]]のようなフォーマットで、多数の有符号な属性はカンマによって区切られます( 例: u+s,go‐rwはユーザーにS(sticky)ビットを加えて、グループと他のユーザーから読み書き許可を取る) 。簡単化されたls式、即ちrwxrwxrwx フォーマット( 9文字でなければならない ) の文字列もサポートされます ( 例: rwxr-xr-tが01755に相当する )

Windows 上で、-archiveはファイルのarchive属性の値を与え、設定、またはクリアします。-hiddenはファイルのhidden属性の値を与え、設定、またはクリアします。 -longnameはパスの各要素をその長いバージョンに拡張します。 この属性は設定されることができません。-readonlyはreadonly属性の値を与え、設定、またはクリアします。 -shortnameはパスの要素の全てを名前の短い ( 8.3 ) バージョンに置き換えます。この属性は設定されることができません。-systemはファイルのsystem属性の値を与え、設定、またはクリアします。

Macintosh上で、-creatorはファイルのFinder creator タイプを参照、または設定します。-hiddenはファイルのhidden属性の値を与え、設定、またはクリアします。 -readonlyはreadonly属性の値を与え、設定、またはクリアします。File Sharingがオンにされる場合だけ、ディレクトリがロックされることに注意が必要です。-typeはファイルのFinder file タイプを参照、または設定します。

file channels ?pattern ?
 
pattern が指定されていない場合、このインタープリタにおいて登録された全てのオープンチャネルの名前リストを返します。pattern が指定された場合、pattern にマッチする名前のみが返されます。マッチングに関してはstring matchと同じ規則を用いて決定されます。
 
file copy ? force? ?- -? source target 
file copy ? force? ?- - ? source  ? source ? targetDir
一番目のフォームはパス名 target の中にファイル、またはディレクトリsource のコピーを作成します。target が既存するディレクトリである場合には、二番目のフォームが使われます。二番目のフォームはリストされた各sourceファイルのコピーをtargetDirの中に作成します。sourceによりディレトリが指定された場合、ディレクトリの内容は再帰的にtargetDirにコピーされます。-forceオプションが指定されない限り、既存するファイルは上書きされません。同じファイルシステムの中でコピーする場合、file copy はソフトなリンクをコピーします ( 即ち、指すもの自体ではなく、リンクそのものがコピーされる ) 空ではないディレクトリに上書き、ファイルによってディレクトリに上書き、また、ディレクトリによってファイルに上書きなど、-force が指定されたとしても、結果はエラーになります。引数は指定された順番に処理され、エラーがあれば、最初のエラーによって停止されます。 「--」はスイッチの終わりを示します。「--」 の後の引数は「 - 」で始ってもsource として扱われます 。
 
file delete ?-force? ?--? pathname ?pathname ?
 
pathname 引数に指定されたファイル、またはディレクトリを消去します。空でないディレクトリを消去するには、-forceオプションが指定されなければなりません。符号的リンクを処理しているとき、オブジェクト自身ではなく、それらのリンク自体が削除されます。存在しないファイルを削除しようとしてもエラーにはなりません。readonlyファイルを削除しようとすることは、たとえ-forceフラグが指定されない場合でも、そのファイルを削除することになります。-forceオプションがディレクトリ上で指定されたら、Tcl は必要なら、許可を変えたり、カレント・ディレクトリ'pwd 'を指定されたパスから移出することで、削除が続くことを可能にしようとします。引数は指定された順番に処理されて、エラーがあれば、最初のエラーによって停止されます。 「--」 はスイッチの終わりを示します。「--」 後の引数は「 -」 で始まるとしても pathname  として扱われます。
 
file dirname name
最後の要素を除いてname のパスの全てのコンポーネントから成る名前を返します。もしname が相対的なファイル名であり、ただ1つのパス要素を含む場合、"."(もしくは、Macintosh上で ":")を返します。name がルートディレクトリを参照する場合、ルートディレクトリが返されます。 例えば
file dirname c:/

c:/を返します。

注意すべきは、命令を完了するために必要なときだけ、チルダ置換が遂行されます。例えば

file dirname ~/src/foo.c

~/srcを返します。一方、

file dirname ~

/home ( 或いは、同様の何か) を返します。

file executable name
ファイルname が現在のユーザーから実行可能である場合は1を返し、そうでない場合は0を返します。
 
file exists name
ファイルname が存在する場合、かつユーザーがそのディレクトリの検索特権を持っている場合は1を返し、そうでない場合は0を返します。
 
file extension name 
name の最後の要素における最後の". "以降の文字の" . "を含む全てを返します。もしname の最後の要素に" ."がない場合は空文字列を返します。
 
file isdirectory name 
ファイルname がディレクトリである場合は1を返し、そうでない場合は、0を返します。
 
file isfile name
ファイルname が通常のファイルの場合は1を返し、そうでない場合は0を返します。
 
file join name ?name ...?
一つ以上のファイル名を使って、現在のプラットフォームに対応した正しいパス区切り文字により、それらのファイル名を結合します。個別 のname が相対的なものである場合は、それは前のファイル名name 引数に結合されます。そうでない場合は、その前の全ての引数は放棄され、結合は現在の引数から続行します。例えば
file join a b /foo bar

/foo/barを返します。

注意すべきなのは、これら名前のいずれも区切りを含みます。結果は常に現在のプラットフォームに対する正規なものです。UnixとWindowsで"/"、Macintoshでは":"です。

file link ?-linktype?linkName ?target?
1つの引数が与えられれば、その引数はlinkName とみなされて、このコマンドはlinkName によって与えられたリンクの値 ( すなわち、指しているファイルの名前 ) を返します。 linkNameがリンクではない場合、又はその値が読めない ( 例えば、通常のファイルに見えるハードリンク) 場合はエラーを返します。2つの引数が与えられた場合、これらはlinkNametarget とみなされます。もしlinkNameが既に存在し、またはtarget が存在しない場合はエラーが返され、そうでない場合には、Tclはtarget が指定する現存のファイルシステム対象を指すlinkNameと呼ばれる新しいリンクを作成します。リンクのタイプはプラットホーム依存します ( Unixで符号的なリンクがデフォルトです) 。これにより、ユーザーが異なるプラットフォーム間でリンクを作成することを望んだ場合、どんなタイプのリンクが作成されるかを気にせずにリンクできます。ユーザーが特定のタイプのみのリンクを作ることを望む場合は(それが可能ではない場合はエラーの合図をもらいたい) 、選択可能の-linktype 引数を使います。-linktypeに使える値は-symbolicと-hardです。リンクを全くサポートしていない、あるいは要求された特定のタイプをサポートしていないファイルシステムでリンクを作成するとき、エラーメッセージが返されます。Windows 95、98とMEは現在の時点でリンクを全くサポートしていませんが、大部分のUnixプラットフォームは符号的な、またハードリンク (後者はファイルのみ) をサポートし、MacOSは符号的なリンクをサポートし、WindowsNT/2000/XP ( NTFSドライブ) は符号的なディレクトリリンク、またハードファイルリンクをサポートしています。
 
file lstat name varName
lstat は、statの代わりにカーネルコールを使用する点を除いて、statオプション ( 下記を参照 ) と同じです。これは、name が符号的なリンクを参照するならば、varNameにより返された情報は、参照するファイルの情報ではなく、リンクに関するものであることを意味します。 符号的なリンクをサポートしないシステム上では、このオプションはまったくstatオプションと同じです。
 
file mkdir dir ?dir ...?
指定された各ディレクトリを作成します。dirが指定された各パス名に対して、このコマンドはdir 自身を含む全ての現存でない親ディレクトリを作成します。既存するディレクトリが指定される場合は何も実行せず、エラーも返されません。 ディレクトリによって既存のファイルに上書きしようとする場合、エラーになります。引数は指定された順番に処理されて、エラーがあれば、最初のエラーによって中止されます。
 
file mtime name ?time ?
ファイル name の最後の変更時間を表す10進の数値の文字列を返します。time が指定される場合は、これはファイルの変更時間を設定します ( Unixのtouchと同じ )。時間はPOSIX の標準の方法、つまりある特定の日時 (1970年 1月 1日であることが多い) からの経過秒数です。もしファイルが存在しない場合、あるいは変更時間が参照、または設定されることができなかった場合にはエラーが生成されます。
 
file nativename name
プラットホーム特定のファイル名を返します。これはそのファイル名をプラットホーム特定のコールに渡すのに必要とされる場合に使います。例えば、Windowsでexec、または Macintosh でAppleScriptcのようなコールです。
 
file normalize name
ファイルシステムオブジェクト ( ファイル、ディレクトリ、リンク等 ) の唯一の正規化されたパス表現を返し、その文字列の値が対応するオブジェクトの唯一の識別 子として使うことができます。正規化されたパスは全ての'../'、'./'が除去された絶対的パスです。そして、これはプラットフォーム依存の標準フォーマットにしているものです。MacOS、Unixでは、これはパス文字列の各部分が符号的なリンク及び別 名を使ってはいけないことを意味します(しかしながら最後のパスコンポーネントでは符号的なリンクが使えます)。 そして、Windows上では、大文字/小文字依存の長いフォーム(ユニークな大文字/小文字依存のパスを取得できる)を意味します。 パスの最後にあるリンク可能に関する例外は必要です。なぜなら、Tcl、またはユーザーが現実の符号的なリンクそのものを処理することを望む場合もあるからです ( 例えば、'file delete', 'file rename', 'file copy'はリンク先ではなく、符号的なリンクを処理するために定義されます ) 。
 
file owned name
現在のユーザーがファイルname の所有者である場合は1を返し、そうでない場合は0を返します。
 
file pathtype name 
absoluterelative 、または volumerelativeのいずれかを返します。name が特定のvolume上の特定ファイルを参照する場合には、パスタイプはabsolute です。name が現在の作業ディレクトリに対する相対的なファイルを参照する場合には、パスタイプは relative です。name が指定されたvolume上の現在の作業ディレクトリに対する相対的なファイル、または現在の作業volumeの特定ファイルを参照する場合には、ファイルタイプは volumerelativeです。
 
file readable name
現在のユーザーからファイルname を読み取り可能の場合は1を返し、そうでない場合は0を返します。
 
file readlink name
name で示される符号的なリンク値 (即ち、示すファイルの名前 )を返します。name が符号的なリンクではなく、またその値が読めなかった場合には、エラーが返されます。符号的なリンクをサポートしないシステム上で、このオプションは定義されません。
 
file rename ?-force ? ?--? source target
file rename ?-force ? ?--? source ?source? targetDir
一番目のフォームは、パス名sourceで指定されたファイル、またはディレクトリをtarget に改名して、  パス名target が異なるディレクトリで名前を指定された場合には、ファイルを移動します。target が既存のディレクトリであるならば、二番目のフォームが使われます。二番目のフォームは各source ファイル、またはディレクトリをディレクトリtargetDir に移動します。-forceオプションが指定されない限り、既存のファイルは上書きされません。同じファイルシステムの中で作業するとき、Tclは指し示すファイル自身を改名するのではなく、符号的なリンクを改名します。 空でないディレクトリを改名したり、ファイルでディレクトリを改名したり、またはディレクトリでファイルを上書きしようとする場合には、エラーが発生します。引数は指定された順番に処理されて、エラーがあれば、最初のエラーによって停止します。「-- 」はスイッチの終わりを示します。「-- 」後の引数は 「-」 で始まるとしてもsource として扱われます 。
 
file rootname name
最後のドット(最後のドットを含まない)までのname の全ての文字を返します。もしname の最後のコンポーネントがドットを含まなかった場合はname を返します。
 
file separator ?name?
引数が与えられなかった場合には、このプラットホームでネイティブファイルのパス区分(segment)を区切るために使われる文字を返します。パスが与えられる場合には、そのパスを持つファイルシステムから、該当の区切り文字を返します。name を受け入れるファイルシステムがなかった場には、エラーが生成されます。
 
file size name
ファイル name のサイズを表すバイトの10進の数値の文字列を返します。ファイルが存在しなかったり、サイズを調べることができなかった場合にはエラーが返されます。
 
file split name
要素がname のパスコンポーネントであるリストを返します。リストの最初の要素はname と同じパスタイプを持っています。他のすべての要素は相対的なものです。要素が相対的なものであることを表現するために絶対必要とされない限り、パス区切りは放棄されます。例えば、Unixの下
file split /foo/~bar/baz

/ foo ./~bar baz を返し、三番目のコンポーネントを使う後続のコマンドがチルダ"~"置換を実行させないためです。

 
file stat name varName
name に対して stat カーネルコールを呼びだし、その結果を varName で指定される変数に入れます。 varName は配列変数として扱われ、次のような要素が設定されます。 atime, ctime, dev, gid, ino, mode, mtime, nlink, size, type, uidtype 以外の要素はそれぞれ stat の返す構造体の対応するフィールドの値を10進で表した文字列です。それぞれの値の意味については stat のマニュアルを参照して下さい。 type はファイルのタイプを示し、コマンド file type と同じフォーマットです。このコマンドは空文字列を返します。
 
file system name 
二つの要素を持つリストを返します。一番目の要素はファイルのファイルシステムであり、二番目の要素はそのファイルシステム特有の性質、またはロケーションのタイプを表す任意の文字列です。ファイルシステムがただ1つのファイルタイプをサポートする場合は、二番目の要素は空になる場合があります。例えば、ネイティブファイルの一番目の要素は”native”であり、二番目要素はプラットホーム特定のタイプ名( 例えば、NTFS、FAT 等 ) 、またはそれ以上の情報が利用可能でなかったり、実行されなかった場合、空文字列です。一般 的な仮想ファイルシステムはリスト` vfs ftp 'を返し、` vfs 'と呼ばれる拡張部分を通 じて遠隔ftpサイトで仮想ファイルシステムとしてマウントされたファイルを表します。ファイルがいずれのファイルシステムに属さない場合、エラーが生成されます。
 
file tail name 
name の最後のディレクトリ区切りからあとの文字列を返します。 name が区切りを含んでいなければ name を返します。
 
file type name 
ファイル name のタイプを表す文字列を返します。タイプは file directorycharacterSpecialblockSpecialfifolinksocket のいずれかです。
 
file volume
適当なTclリストとして、システムにマウントされたvolumeへの絶対的パスを返します。Macintosh上で、これはローカルとネットワークの両方を含むマウントされたドライブのリストです。注意、もし2つのドライブが同じ名前を持っている場合は、volumesリストに双方共に載られるが、Tclから両方をアクセスすることは現時点では、良い方法がなく、一番目にだけアクセスできます。UNIXで全てのファイルシステムがローカル的にマウントされるので、このコマンドは常に”/”を返します。Windows上で、これは利用可能なローカルドライブ ( <例>、{ a:/ c:/ } ) のリストを返します。
 
file writable name 
現在のユーザーがファイルname を書き込みできる場合は1を返し、そうでない場合は0を返します。
 

移植性の問題

Unix
これらのコマンドは、常に本当のユーザー及びグループの識別子を用いて機能します。ユーザー及びグループの代用名では機能しません。

参照

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

キーワード

attribute, copy files, delete files, directory, file , move files, name, rename files, stat


Copyright © 1993 The Regents of the University of California. Copyright © 1994-1996 Sun Microsystems, Inc. Copyright © 1995-1997 Roger E. Critchlow Jr.