Правила именования файлов в Tcl.
Все команды Tcl и процедуры С, использующие имена файлов в качестве аргументов, позволяют использовать имена в форме, установленной для данной платформы. Кроме того, на всех платформах Tcl поддерживается синтаксис UNIX с целью предоставления удобного способа составления простых имен файлов. Тем не менее, скрипты, предназначенные для переноса между платформами, не должны пользоваться конкретной формой имен файлов. Вместо этого такие скрипты должны использовать команды file split и file join для преобразования имен к нужной форме.
Все имена файлов поделены на три типа, в зависимости от начальной точки для отсчета пути: абсолютные, относительные и имена внутри тома (volume-relative).
Абсолютные имена являются самодостаточными, они содержат полный путь файла внутри тома и адрес корневого каталога тома. Относительные имена являются неполными, они указывают положение файла по отношению к текущему каталогу. Имена внутри тома занимают промежуточное положение между первыми двумя, они указывают положение файла относительно корневого каталога текущего тома или относительно текущего каталога указанного тома.
Для определения типа указанного пути можно использовать команду file pathtype.
Пути формируются различным образом для различных платформ. Текущая платформа определяется по значению переменной tcl_platform(platform):
На Unix-платформах используются пути, которые содержат компоненты, разделенные символом слэш. Пути могут быть абсолютными или относительными, имена файлов могут содержать любые символы, кроме слэша. Имена файлов. и. являются специальными и обозначают текущий каталог и родительский каталог текущего каталога, соответственно. Несколько слэшей подряд понимаются как один разделитель.
Ниже приведено несколько примеров различных типов путей:
В дополнение к правилам, описанным выше, Tcl позволяет использовать "тильда"-подстановки в стиле cshell. Если имя файла начинается с ~, за которой сразу следует сепаратор, она заменяется на значение переменной окружения /home/svk. В противном случае символы от "тильды" до следующего разделителя интерпретируются как имя пользователя и заменяются на имя домашнего каталога пользователя.
На Macintosh- и Windows-платформах "тильда"-подстановки с именем пользователя не поддерживаются. При попытке использовать такое имя файла выдается ошибка. Однако "тильда" без имени пользователя заменяется, как и на Unix-платформах, на значение переменной окружения /home/svk.
При разработке переносимых приложений необходимо учитывать,
что не все файловые системы различают заглавные и прописные
буквы. Поэтому следует избегать использования имен файлов,
различающихся только регистром букв. Кроме того, необходимо
отказаться от использования символов, имеющих специальное
назначение хотя бы на одной из платформ, например,
<>:"/\|. А также, если предполагается
использовать программу на Windows 3.1, необходимо учитывать, что
имена файлов при этом должны быть ограничены восемью буквами, а
расширения - тремя.