filename(3tcl) | Tcl Built-In Commands | filename(3tcl) |
filename - Tcl 命令支持的文件名转换
所有接受文件名作为参数的 Tcl 命令和 C 过程希望文件名是依赖于当前平台的三种形式之一。在每种平台上,Tcl 都支持这种平台上的标准形式的文件名。额外的,在所有平台上,Tcl 支持一种 Unix 式的语法,提供了一种方便的方式来构造简单的文件名。但是,打算被移植的脚本不要假定特定形式的文件名。可移植的脚本必须使用 file split 和 file join 命令来操纵文件名(详见file 的手册条目)。
基于用来指定文件的路径的起点,文件名被组织成三种一般类型: 绝对,相对,相对-卷。绝对名字是完全限定的(qualified),给出的到文件的路径相对于一个特定的卷和在这个卷上的根目录。相对名字是未限定的,给出的到文件的路径相对于当前的工作目录。相对-卷名字是部分限定的,给出的路径要么相对在当前卷上的根目录,要么相对于在指定卷上的当前目录。使用 file pathtype 命令来确定一个给定路径的类型。
本地名字的规则依赖于在 Tcl 数组元素 tcl_platform(platform) 中报告的值:
除了 Macintosh 式样的名字,Tcl 还支持 Unix 式名字的一个子集。如果一个路径不包含分号,则把它按一个 Unix 路径来解释。使用斜杠作为路径分隔符。文件名 . 参照当前目录,而 .. 参照当前目录的父目录。但是,象 / 或 /..的一些名字没有映射,并被作为 Macintosh 名字解释。一般的,生成文件名的命令返回 Macintosh 式样的名字,而接收文件名的命令接受 Macintosh 和 Unix 式样的两种名字。
下列例子展示不同形式的路径名:
除了上述文件名规则之外,Tcl 还支持 csh 式样的波浪线替换。如果一个文件名以一个波浪线开始,则按文件名的第一个元素被给定用户的主目录的位置所替换来解释。如果波浪线之后立即跟随着一个分隔符,则用 $HOME 环境变量来替换。否则在波浪线和下一个分隔符之间的的字符被接受为一个用户名,它被用来检索用于替换的用户的主目录。
Macintosh 和 Windows 不支持对波浪线跟随一个用户名的波浪线替换。在这些平台上,使用波浪线并跟随一个用户名的尝试将生成一个错误。有一个波浪线而没有用户名的文件名将象 Unix 一样使用 $HOME 环境变量来替换。
注意所有的文件系统都是大小写敏感的,所以脚本应避免依赖于在文件名中的字符大小写的代码。额外的,在不同设备上允许的字符集可能不同,所以脚本脚本应选择不包含特殊字符如 <>:"/\| 的文件名。最安全的方式是只使用由字母组成的用户名。还有 Windows 3.1 只支持有不多于8个字符的根和不多于3个字符的扩展的文件名。
current directory, absolute file name, relative file name, volume-relative file name, portability
file(n), glob(n)
寒蝉退士
2001/08/28
http://cmpp.linuxforum.net
本页面中文版由中文
man 手册页计划提供。
中文 man
手册页计划:https://github.com/man-pages-zh/manpages-zh
7.5 | Tcl |