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 |