# file

Команда для работы с файлами и их именами.

          file option name ?arg arg...?

## ОПИСАНИЕ

Эта команда осуществляет различные действия с файлами, их именами или свойствами. Аргумент name содержит имя файла. Если он начинается с символа "~", то перед выполнением команды выполняются "тильда"-подстановки, как описано в filename. Опция команды указывает, какие действия необходимо выполнить с файлом. Ниже приведены возможные опции. В команде их имена могут быть сокращены до уровня, сохраняющего уникальность их имен.

file atime name
  Возвращает десятичную строку, содержащую время последнего доступа к файлу 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 mtime name
  Возвращает десятичную строку, содержащую время последнего изменения файла 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-платформах эти команды всегда используют реальные, а не эффективные идентификаторы пользователя и группы.

См. также filename.