Provided by: manpages-zh_1.6.3.2-1_all bug

NAME

       filename - Tcl 命令支持的文件名轉換
_________________________________________________________________

INTRODUCTION

       所有接受文件名作爲參數的 Tcl 命令和 C 過程希望文件名是依賴於當前平臺的三種形式之一。在每種
       平臺上,Tcl 都支持這種平臺上的標準形式的文件名。額外的,在所有平臺上,Tcl 支持一種 Unix 式
       的語法,提供了一種方便的方式來構造簡單的文件名。但是,打算被移植的腳本不要假定特定形式的文
       件名。可移植的腳本必須使用 file splitfile join 命令來操縱文件名(詳見file 的手冊條目)。

路徑類型 PATH TYPES

       基於用來指定文件的路徑的起點,文件名被組織成三種一般類型:  絕對,相對,相對-卷。絕對名字是
       完全限定的(qualified),給出的到文件的路徑相對於一個特定的卷和在這個捲上的根目錄。相對名字
       是未限定的,給出的到文件的路徑相對於當前的工作目錄。相對-卷名字是部分限定的,給出的路徑要
       麼相對在當前捲上的根目錄,要麼相對於在指定捲上的當前目錄。使用  file pathtype 命令來確定一
       個給定路徑的類型。

路徑語法 PATH SYNTAX

       本地名字的規則依賴於在 Tcl 數組元素 tcl_platform(platform) 中報告的值:

       mac       在 Apple Macintosh 系統上,Tcl  支持兩種形式的路徑名。常規 Mac  式樣的名字使用分
                 號作爲路徑分隔符。路徑可以是相對的或絕對的,並且文件名中可以包含除了分號之外的任
                 何字符。一個前導的分號導致路徑的剩餘部分被解釋成相對當前目錄。如果一個路徑包含一
                 個不在開始處的分號,則路徑被解釋成一個絕對路徑。在路徑中任何地方的兩個或多個分號
                 的序列被用做構造相對路徑,這裏的 ::  參照當前目錄的父目錄,:::  參照父目錄的父目
                 錄,以此類推。

                 除了  Macintosh 式樣的名字,Tcl 還支持 Unix 式名字的一個子集。如果一個路徑不包含
                 分號,則把它按一個  Unix 路徑來解釋。使用斜槓作爲路徑分隔符。文件名 . 參照當前目
                 錄,而  ..  參照當前目錄的父目錄。但是,象  //..的一些名字沒有映射,並被作爲
                 Macintosh 名字解釋。一般的,生成文件名的命令返回 Macintosh  式樣的名字,而接收文
                 件名的命令接受 Macintosh 和 Unix 式樣的兩種名字。

                 下列例子展示不同形式的路徑名:

                 :              到當前文件夾(folder)的相對路徑。

                 MyFile         到在當前文件夾中的叫 MyFile的一個文件的相對路徑。

                 MyDisk:MyFile  到在叫 MyDisk 的設備上的一個叫 MyFile 的文件的絕對路徑。.

                 :MyDir:MyFile  到在當前文件夾中的一個叫  MyDir的文件夾中的一個叫 MyFile 的文件的
                                相對路徑。

                 ::MyFile       到在當前文件夾的上層文件夾中的一個叫 MyFile 的文件的相對路徑。

                 :::MyFile      到在當前文件夾的上兩層文件夾中的一個叫 MyFile 的文件的相對路徑。

                 /MyDisk/MyFile 在叫 MyDisk 的設備上的一個叫 MyFile 的文件的絕對路徑。

                 ../MyFile      到在當前文件夾的上層文件夾中的一個叫 MyFile 的文件的相對路徑。

       unix      在 Unix 平臺上,Tcl 使用的路徑名的組成部分由斜槓來分隔。路徑名可以是相對的或絕對
                 的,並且文件名可以包含除斜槓之外的任何字符。文件名 ...  是特殊的並且分別參照
                 當前目錄和當前目錄的父目錄。多個毗接的(adjacent)的斜槓被解釋爲一個單一的分隔
                 符。下列例子展示不同形式的路徑名:

                 /              到根目錄的絕對路徑。

                 /etc/passwd    到在根目錄中的 etc 目錄中的一個叫 passwd 的文件的絕對路徑。

                 .              到當前目錄的相對路徑。

                 foo            Relative path to the file foo in the current directory.

                 foo/bar        到在當前目錄中的一個叫 foo 的文件的相對路徑。

                 ../foo         到在當前目錄中的目錄 foo 目錄中的一個叫 bar 的文件的相對路徑。

       windows   在  Microsoft Windows 平臺上,Tcl 支持相對驅動器和 UNC 式樣的名字兩者。/\ 二
                 者都可用在兩種類型的名字中做分隔符。相對驅動器的名字由可選的驅動器指定
                 符(specifier)和隨後的絕對或相對的路徑組成。UNC                          路徑依從
                 \\servername\sharename\path\file 的一般形式。在兩種形式中,文件名 ... 是特殊
                 的並且分別參照當前目錄和當前目錄的父目錄。下列例子展示不同形式的路徑名:

                 \\Host\share/file
                                到在主機 Host 上的導出點 share 的根目錄中的一個叫 file 的文件的絕
                                對 UNC 路徑。

                 c:foo          到在驅動器 c 上的當前目錄中的一個叫 foo 的文件的相對卷的路徑。

                 c:/foo         到在當前捲上的當前目錄中 foo 目錄中一個叫 bar 的文件的絕對路徑。

                 foo\bar        到在當前捲上的當前目錄中 foo 目錄中一個叫 bar 的文件的相對路徑。

                 \foo           到在當前卷的根目錄中的一個叫 foo 的文件的相對卷的路徑。

波浪線替換 TILDE SUBSTITUTION

       除了上述文件名規則之外,Tcl  還支持   csh   式樣的波浪線替換。如果一個文件名以一個波浪線開
       始,則按文件名的第一個元素被給定用戶的主目錄的位置所替換來解釋。如果波浪線之後立即跟隨着一
       個分隔符,則用 $HOME  環境變量來替換。否則在波浪線和下一個分隔符之間的的字符被接受爲一個用
       戶名,它被用來檢索用於替換的用戶的主目錄。

       Macintosh  和 Windows 不支持對波浪線跟隨一個用戶名的波浪線替換。在這些平臺上,使用波浪線並
       跟隨一個用戶名的嘗試將生成一個錯誤。有一個波浪線而沒有用戶名的文件名將象   Unix   一樣使用
       $HOME 環境變量來替換。

移植要點 PORTABILITY ISSUES

       注意所有的文件系統都是大小寫敏感的,所以腳本應避免依賴於在文件名中的字符大小寫的代碼。額外
       的,在不同設備上允許的字符集可能不同,所以腳本腳本應選擇不包含特殊字符如  <>:"/\|   的文件
       名。最安全的方式是隻使用由字母組成的用戶名。還有 Windows 3.1 只支持有不多於8個字符的根和不
       多於3個字符的擴展的文件名。

關鍵字 KEYWORDS

       current directory, absolute file name, relative  file  name,  volume-relative  file  name,
       portability

參見 SEE ALSO

       file(n), glob(n)

[中文版維護人]

       寒蟬退士

[中文版最新更新]

       2001/08/28

《中國 Linux 論壇 man 手冊頁翻譯計劃》:

       http://cmpp.linuxforum.net

       本頁面中文版由中文 man 手冊頁計劃提供。
       中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh