Referencing files in Tcl
Tcl commands that accept filenames as arguments require that they be in one of three formats, depending on the platform in use. The platform in use is stored in the global TCL_platform
array variable, created at the start of the program. Please note that to address issues of portability, you must manually manipulate the formats to ensure that they are annotated correctly.
These formats are absolute, relative, and volume-related.
File Formats |
Explanation |
---|---|
Absolute |
Absolute names are fully qualified and give a path to the file relative to a particular volume. |
Relative |
Relative filenames are unqualified and give the path to the desired file relative to the current working directory. |
Volume-related |
Volume-related filenames are partially qualified and either accepts the path relative to the current working directory on the current volume, or relative to the directory of a specified directory. |
The following conventions are platform-specific annotations for both the directory structure and the specific filenames.
UNIX (UNIX, Linux and Mac OS X)
On the UNIX style platforms, Tcl uses path names, wherein the various components are separated by the slash (/) character. Multiple adjacent slashes are handled as a single occurrence. Trailing slashes are ignored completely. For example, passwd and passwd/ both refer to the file passwd in the current directory
Convention |
Meaning |
---|---|
. |
Special character that refers to the current directory |
.. |
Special character that refers to the parent directory |
/ |
Root directory |
|
Absolute path to the file passwd in the directory etc |
|
Relative path to the file passwd in the current directory |
|
Relative path to the file passwd in the directory etc from the current working directory |
|
Relative path to the file passwd in the parent directory |
Windows
Tcl supports both drive-related and Universal Naming Convention (UNC) file naming conventions. Both the slash (/) and backslash (\) characters may be used as separators; however, care must be exercised when utilizing the backslash characters, as they can result in undesirable effects if the filename is not enclosed within quotes. Drive-related filenames consist of the optional drive letter followed by the absolute or relative path. UNC filenames follow the form of \\servername\sharename\path\file
. The UNC filename must contain the server and share components, at least.
Convention |
Meaning |
---|---|
|
Special character that refers to the current directory |
|
Special character that refers to the parent directory |
|
Absolute UNC path to the file passwd on server MyServer in the share MyShare |
|
Volume related path to the file passwd in the current directory |
|
Absolute path to the file passwd in the root directory of the C drive |
|
Volume-related path to the file passwd in the root directory of the current volume. |
|
Volume-related path to the file passwd in the directory etc on the current volume. |
In addition to the filename conventions listed in the preceding table, Tcl supports the Berkeley UNIX C Shell (csh) tilde (~) substitution. In the case of a filename with a preceding tilde, it will be interpreted by replacing the tilde with the current user's home directory. This is not platform-dependant.