Основные понятия и элементы


Правила именования файлов

        Все команды Tcl и процедуры С, использующие имена файлов в качестве аргументов, позволяют использовать имена в форме, установленной для данной платформы. Кроме того, на всех платформах Tcl поддерживается синтаксис UNIX с целью предоставления удобного способа составления простых имен файлов. Тем не менее, скрипты, предназначенные для переноса между платформами, не должны пользоваться конкретной формой имен файлов. Вместо этого такие скрипты должны использовать команды file split и file join для преобразования имен к нужной форме.

        Типы путей
        Все имена файлов поделены на три типа, в зависимости от начальной точки для отсчета пути: абсолютные, относительные и имена внутри тома (volume-relative).

        Абсолютные имена являются самодостаточными, они содержат полный путь файла внутри тома и адрес корневого каталога тома. Относительные имена являются неполными, они указывают положение файла по отношению к текущему каталогу. Имена внутри тома занимают промежуточное положение между первыми двумя, они указывают положение файла относительно корневого каталога текущего тома или относительно текущего каталога указанного тома.

        Для определения типа указанного пути можно использовать команду file pathtype.

        Синтаксис путей
        Пути формируются различным образом для различных платформ. Текущая платформа определяется по значению переменной tcl_platform(platform):

        Для Macintosh-платформ Tcl поддерживает две формы представления путей: с двоеточием, в обычном для Macintosh стиле, и со слешем, в Unix-стиле. Если путь не содержит двоеточий, то он считается путем в Unix-стиле. При этом «.» означает текущий каталог, «..» — родительский каталог для текущего каталога. Однако такие имена, как «/» или «/..» считаются именами каталогов в Macintosh-стиле. При этом команды, генерирующие имена файлов, возвращают их в Macintosh-стиле, тогда как команды, использующие имена файлов, могут получать их и в Macintosh-стиле, и в Unix-стиле.

        На Unix-платформах используются пути, которые содержат компоненты, разделенные символом слеш. Пути могут быть абсолютными или относительными, имена файлов могут содержать любые символы, кроме слеша. Имена файлов являются специальными и обозначают текущий каталог и родительский каталог текущего каталога, соответственно. Несколько слешей подряд понимаются как один разделитель.

        Ниже приведено несколько примеров различных типов путей:

/
        Абсолютный путь к корневому каталогу.

/etc/passwd
        Абсолютный путь к файлу passwd к каталогу etc в корневом каталоге.

.
        Относительный путь к текущему каталогу.

foo
        Относительный путь к файлу foo в текущем каталоге

foo/bar
        Относительный путь к файлу bar в подкаталоге foo текущего каталога

../foo
        Относительный путь к файлу foo в каталоге над текущим.

        Для Windows-платформ Tcl поддерживает дисковые и сетевые имена. В обоих типах имен можно использовать в качестве разделителя как прямой, так и обратный слеш. Дисковые имена состоят из (при необходимости) имени диска и последующего абсолютного или относительного пути. Сетевые пути обычно имеют вид \\servername\sharename\path\file. В обеих формах «.» и «..» ссылаются соответственно на текущий каталог и его предка.

        «Тильда»-подстановки
        Tcl позволяет использовать «тильда»-подстановки в стиле cshell. Если имя файла начинается с «~», за которой сразу следует сепаратор, она заменяется на значение переменной окружения $НОМЕ. В противном случае символы от «тильды» до следующего разделителя интерпретируются как имя пользователя и заменяются на имя домашнего каталога пользователя.

        На Macintosh- и Windows-платформах «тильда»-подстановки с именем пользователя не поддерживаются. При попытке использовать такое имя файла выдается ошибка. Однако «тильда» без имени пользователя заменяется, как и на Unix-платформах, на значение переменной окружения $НОМЕ.

        При разработке переносимых приложений необходимо учитывать, что не все файловые системы различают заглавные и прописные буквы. Поэтому следует избегать использования имен файлов, различающихся только регистром букв. Кроме того, необходимо отказаться от использования символов, имеющих специальное назначение хотя бы на одной из платформ, например, <, >, :, ", /\, |. А также, если предполагается использовать программу на Windows 3.1, необходимо учитывать, что имена файлов при этом должны быть ограничены восемью буквами, а расширения — тремя.
Hosted by uCoz