file

Команда для работы с файлами и их именами.
СИНТАКСИС file option name?arg arg...? ОПИСАНИЕ Эта команда осуществляет различные действия с файлами, их именами или свойствами. Аргумент name содержит имя файла. Если он начинается с символа “~”, то перед выполнением команды выполняются “тильда”-подстановки, как описано в filename . Опция команды указывает, какие действия необходимо выполнить с файлом. Ниже приведены возможные опции. В команде их имена могут быть сокращены до уровня, сохраняющего уникальность их имен.

file atimename

Возвращает десятичную строку, содержащую время последнего доступа к файлу name. Время представляется стандартным для POSIX образом в числе секунд от фиксированного начального момента (обычно, с 1 января 1970 г.). Если файл не существует или время последнего доступа не может быть получено, выдается сообщение об ошибке. file attributes name

file attributes name?option?

file attributes name?option value option value... ?

Эта подкоманда возвращает или устанавливает зависящие от платформы атрибуты файла. Первая форма возвращает список атрибутов и их значений, вторая возвращает значение указанного атрибута, а третья — позволяет установить значения одного или нескольких атрибутов. Возможные атрибуты перечислены ниже. НА UNIX-ПЛАТФОРМАХ:   -group — возвращает или устанавливает имя группы. В команде группа может быть задана числовым идентификатором, но возвращается всегда имя группы.

-owner — возвращает или устанавливает имя “хозяина” файла. В команде хозяин может быть задан числовым идентификатором, но возвращается всегда имя хозяина.

-permissions возвращает или устанавливает восьмеричный код, используемый командой операционной системы chmod. Символьное описание соответствующих атрибутов файла не поддерживается.


НА WINDOWS-ПЛАТФОРМАХ
 

На Windows-платформах поддерживаются атрибуты -archive, -hidden, -longname (атрибут не может быть установлен), -readonly, -shortname (атрибут не может быть установлен), -system. НА MACINTOSH-ПЛАТФОРМАХ
  На Macintosh-платформах поддерживаются атрибуты-creator, -hidden, -readonly, -type.


file copy?-force??--? source target

file copy ?-force??--? source?source...? targetDir

Первая форма используется для того, чтобы скопировать файл или каталог source соответственно в файл или каталог target. Вторая форма используется, чтобы скопировать файл(ы) или каталог(и) внутрь существующего каталога targetDir. Если один из аргументов source есть имя каталога, то этот каталог копируется рекурсивно вместе со всем его содержимым. При копировании существующие файлы не перезаписываются, если только не указана опция -force. Попытки перезаписать непустой каталог, а также перезаписать каталог файлом или файл каталогом приводят к ошибке, даже если опция -force указана. Аргументы команды обрабатываются в порядке перечисления до первой ошибки. Отметка “--” означает конец опций. Следующий аргумент считается именем файла или каталога, даже если он начинается с символа “-”. file delete ?-force??--? pathname?pathname...? Удаляет файлы или каталоги, заданные аргументами pathname. Непустые каталоги удаляются, только если задана опция -force. Попытка удалить несуществующий файл не рассматривается как ошибка. Попытка удалить файл, доступный только для чтения, приведет к удаления файла, даже если опция -force не задана. Аргументы команды обрабатываются в порядке перечисления до первой ошибки. Отметка “--” означает конец опций. Следующий аргумент считается именем файла или каталога, даже если он начинается с символа “-”. filedirname name Возвращает имя, составленное из всех элементов name, кроме последнего. Если name — относительное имя файла и состоит из единственного элемента, возвращает “.” (”:” для Macintosh). Если имя указывает на корневой каталог, возвращается имя корневого каталога.
Например: file dirname c:/ вернет ‘c:/’.

“Тильда”-подстановки выполняются, только если они необходимы для формирования правильного результата.

Например:

file dirname ~/src/foo.c вернет ‘~/src’, тогда как file dirname ~ вернет ‘/home’ (или что-то подобное).
file executable name Возвращает ‘1’, если файл name исполнимый, и ‘0’ в противном случае. file exists name Возвращает ‘1’, если файл name существует, и пользователь имеет права на просмотр каталога, в котором лежит файл, и ‘0’ в противном случае. file extension name Возвращает все символы в name, начиная с последней точки в последнем элементе. Если в последнем элементе нет точек, возвращается пустая строка. file isdirectory name Возвращает ‘1’, если name — имя каталога, и ‘0’ в противном случае. file isfile name Возвращает ‘1’, если файл name — регулярный файл, и ‘0’ в противном случае.


file join name?name...?

Соединяет аргументы name в одно имя с помощью разделителя, используемого на данной платформе. Если очередной аргумент name представляет собой относительное имя, он присоединяется к предыдущим, в противном случае предыдущие аргументы отбрасываются, и процесс формирования имени начинается заново с текущего аргумента.
Например: file join a b /foo bar вернет ‘/foo/bar’.

Аргументы name могут содержать разделитель, это не помешает получить правильный результат для используемой платформы (”/” для Unix и Windows, “:” для Macintosh).


file lstat name varName

То же самое, что опция stat, описанная ниже, за исключением того, что используется команда ядра lstat вместо stat. Это означает, что если name есть имя связи, то команда вернет данные о связи, а не об исходном файле. Для платформ, не поддерживающих связи, команды полностью идентичны. file mkdir  dir?dir...? Создает все перечисленные каталоги. Для каждого аргумента dir команда создает все несуществующие родительские каталоги и сам каталог dir. Если указан существующий каталог, ничего не происходит. При этом команда считается выполненной успешно. Попытка перезаписать существующий файл каталогом приведет к ошибке. Аргументы команды обрабатываются в порядке перечисления до первой ошибки. file mtimename Возвращает десятичную строку, содержащую время последнего изменения файла name. Время представляется стандартным для POSIX образом в числе секунд от фиксированного начального момента (обычно, с 1 января 1970 г.). Если файл не существует или время последнего изменения не может быть получено, выдается сообщение об ошибке. file nativename name
Возвращает имя файла в виде, характерном для используемой платформы. Опция полезна для подготовки исполнения файла с помощью команды exec под Windows. file owned name Возвращает ‘1’, если файл name принадлежит пользователю, и 0 в противном случае. file pathtype name Возвращает одно из значений absolute, relative, volumerelative. Если name указывает на определенный файл в определенном томе, возвращается absolute. Если name указывает на имя файла относительно текущего рабочего каталога — возвращается relative. Если name указывает имя файла относительно текущего рабочего каталога в определенном томе или на определенный файл в текущем рабочем томе, возвращается volumerelative. file readable name Возвращает ‘1’, если файл name доступен для чтения пользователю, и ‘0’ в противном случае. file readlink name Возвращает имя связи name (например, имя файла, на который указывает name). Если name не есть связь, или ее невозможно прочитать, возвращает ошибку. На платформах, на которых связи не поддерживаются, опция не определена. file rename ?-force??--? source target

file rename ?-force??--? source?source...? targetDir

Первая форма используется для того, чтобы переименовать файл или каталог source соответственно в файл или каталог target (и переместить их в соответствующий каталог, если это необходимо). Вторая форма используется, чтобы переместить файл(ы) или каталог(и) внутрь существующего каталога targetDir. Если один из аргументов source есть имя каталога, то этот каталог перемещается рекурсивно вместе со всем его содержимым. При перемещении существующие файлы не перезаписываются, если только не указана опция -force. Попытки перезаписать непустой каталог, а также перезаписать каталог файлом или файл каталогом приводят к ошибке, даже если опция -force указана. Аргументы команды обрабатываются в порядке перечисления до первой ошибки. Отметка “-” означает конец опций. Следующий аргумент считается именем файла или каталога, даже если он начинается с символа “-”. file rootname name Возвращает все символы в name за исключением последней точки в последнем элементе. Если в последнем элементе нет точек, возвращается name. file size name Возвращает десятичную строку, содержащую размер файла в байтах. Если файл не существует или его размер не может быть получен, выдается ошибка. file split name Возвращает список элементов пути name. Первый элемент списка при этом имеет тот же тип пути, что и name. Все остальные элементы — относительные. Разделители удаляются, если только они не необходимы для указания на относительный тип элементов. Например, под Unix file split /foo/~bar/baz вернет ‘/ foo./~bar baz’, чтобы гарантировать, что последующие команды не попытаются выполнить “тильда”- подстановку в третьем элементе file stat name varName Исполняет вызов функции ядра stat и записывает возвращаемую информацию о name в элементы массива varName. Формируются следующие элементы массива: atime, ctime, dev, gid, ino, mode, mtime, nlink, size, type, uid. Значения всех элементов, кроме type, — десятичные строки. Описания их приведены в описании команды ядра stat. Элемент type содержит тип файла в том же виде, в каком он возвращается командой file type. Команда file stat возвращает пустую строку. file tail name Возвращает все символы в name после последнего разделителя каталогов. Если в name нет каталогов, возвращает name. file type name Возвращает строку, содержащую тип файла. Возможные значения file, directory, characterSpecial, blockSpecial, fifo, link или socket. file volume Возвращает список, содержащий абсолютные пути ко всем подмонтированным томам. На Macintosh-платформах это список всех подмонтированных дисков, локальных и сетевых. На Unix-платформах команда всегда возвращает '/', поскольку все файловые системы монтируются как локальные. На Windows-платформах команда возвращает список локальных дисков (например, {a:/ c:/}). file writable name Возвращает ‘1’, если файл name доступен для записи, и ‘0’ в противном случае.  
ПРОБЛЕМЫ ПЕРЕНОСИМОСТИ Unix

На Unix-платформах эти команды всегда используют реальные, а не эффективные идентификаторы пользователя и группы.

См. также filemane.


[ Список команд Tcl ]            [ Содержание ]