# filename

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

## ВВЕДЕНИЕ

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

## ТИПЫ ПУТЕЙ

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

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

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

## СИНТАКСИС ПУТЕЙ

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

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

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

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

  /
    Абсолютный путь к корневому каталогу.
  /etc/passwd
    Абсолютный путь к файлу passwd к каталогу etc в корневом каталоге.
  .
    Относительный путь к текущему каталогу.
  foo
    Относительный путь к файлу foo в текущем каталоге.
  foo/bar
    Относительный путь к файлу bar в подкаталоге foo текущего каталога
  ../foo
    Относительный путь к файлу foo в каталоге над текущим.
windows
  Для Windows-платформ Tcl поддерживает дисковые и сетевые имена. В обоих типах имен можно использовать в качестве разделителя как прямой, так и обратный слэш. Дисковые имена состоят из (при необходимости) имени диска и последующего абсолютного или относительного пути. Сетевые пути обычно имеют вид \servername\sharename\path ile. В обеих формах "." и ".." ссылаются соответственно на текущий каталог и его предка.

## ТИЛЬДА-ПОДСТАНОВКИ

В дополнение к правилам, описанным выше, Tcl позволяет использовать "тильда"-подстановки в стиле cshell. Если имя файла начинается с ~, за которой сразу следует сепаратор, она заменяется на значение переменной окружения /home/svk. В противном случае символы от "тильды" до следующего разделителя интерпретируются как имя пользователя и заменяются на имя домашнего каталога пользователя.

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

## ВОПРОСЫ ПЕРЕНОСИМОСТИ

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