<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN> <html> <head> <title>file</title> </head> <body> <h1>file</h1> <p> Команда для работы с файлами и их именами. </p> <pre> <strong>file</strong> <em>option</em> <em>name</em> ?<em>arg</em> <em>arg</em>...? </pre> <h2>ОПИСАНИЕ</h2> <p> Эта команда осуществляет различные действия с файлами, их именами или свойствами. Аргумент <em>name</em> содержит имя файла. Если он начинается с символа "~", то перед выполнением команды выполняются "тильда"-подстановки, как описано в <a href=filename.html><strong>filename</strong></a>. Опция команды указывает, какие действия необходимо выполнить с файлом. Ниже приведены возможные опции. В команде их имена могут быть сокращены до уровня, сохраняющего уникальность их имен.</p> <dl> <dt><a name=atime></a><strong>file atime</strong> <em>name</em></dt> <dd> Возвращает десятичную строку, содержащую время последнего доступа к файлу <em>name</em>. Время представляется стандартным для POSIX образом в числе секунд от фиксированного начального момента (обычно, с 1 января 1970 г.). Если файл не существует или время последнего доступа не может быть получено, выдается сообщение об ошибке. </dd> <dt><a name=attributes></a><strong>file attributes</strong> <em>name</em></dt> <dt><strong>file attributes</strong> <em>name</em> ?<em>option</em>?</dt> <dt><strong>file attributes</strong> <em>name</em> ?<em>option</em> <em>value</em> <em>option</em> <em>value</em>...?</dt> <dd><p>Эта подкоманда возвращает или устанавливает зависящие от платформы атрибуты файла. Первая форма возвращает список атрибутов и их значений, вторая возвращает значение указанного атрибута, а третья - позволяет установить значения одного или нескольких атрибутов. Возможные атрибуты перечислены ниже.</p> <h3>НА UNIX-ПЛАТФОРМАХ:</h3> <ul> <li><strong>-group</strong> - возвращает или устанавливает имя группы. В команде группа может быть задана числовым идентификатором, но возвращается всегда имя группы.</li> <li><strong>-owner</strong> - возвращает или устанавливает имя "хозяина" файла. В команде хозяин может быть задан числовым идентификатором, но возвращается всегда имя хозяина.</li> <li><strong>-permissions</strong> - возвращает или устанавливает восьмеричный код, используемый командой операционной системы chmod. Символьное описание соответствующих атрибутов файла не поддерживается.</li> </ul> <h3>НА WINDOWS-ПЛАТФОРМАХ</h3> <p> На Windows-платформах поддерживаются атрибуты <strong>-archive</strong>, <strong>-hidden</strong>, <strong>-longname</strong> (атрибут не может быть установлен), <strong>-readonly</strong>, <strong>-shortname</strong> (атрибут не может быть установлен), <strong>-system</strong>.</p> <h3>НА MACINTOSH-ПЛАТФОРМАХ</h3> <p>На Macintosh-платформах поддерживаются атрибуты <strong>-creator</strong>, <strong>-hidden</strong>, <strong>-readonly</strong>, <strong>-type</strong>.</p> </dd> <dt><a name=copy></a><strong>file copy</strong> ?<em>-force</em>? ?<em>--</em>? <em>source target</em></dt> <dt><strong>file copy</strong> ?<em>-force</em>? ?<em>--</em>? <em>source</em> ?<em>source</em>...? <em>targetDir</em></dt> <dd> Первая форма используется для того, чтобы скопировать файл или каталог <em>source</em> соответственно в файл или каталог <em>target</em>. Вторая форма используется, чтобы скопировать файл(ы) или каталог(и) внутрь существующего каталога <em>targetDir</em>. Если один из аргументов <em>source</em> есть имя каталога, то этот каталог копируется рекурсивно вместе со всем его содержимым. При копировании существующие файлы не перезаписываются, если только не указана опция <strong>-force</strong>. Попытки перезаписать непустой каталог, а также перезаписать каталог файлом или файл каталогом приводят к ошибке, даже если опция <strong>-force</strong> указана. Аргументы команды обрабатываются в порядке перечисления до первой ошибки. Отметка "--" означает конец опций. Следующий аргумент считается именем файла или каталога, даже если он начинается с символа "-". </dd> <dt><a name=delete></a><strong>file delete</strong> ?<em>-force</em>? ?<em>--</em>? <em>pathname</em> ?<em>pathname</em>...? </dt> <dd> Удаляет файлы или каталоги, заданные аргументами <em>pathname</em>. Непустые каталоги удаляются, только если задана опция <strong>-force</strong>. Попытка удалить несуществующий файл не рассматривается как ошибка. Попытка удалить файл, доступный только для чтения, приведет к удаления файла, даже если опция <strong>-force</strong> не задана. Аргументы команды обрабатываются в порядке перечисления до первой ошибки. Отметка "--" означает конец опций. Следующий аргумент считается именем файла или каталога, даже если он начинается с символа "-". </dd> <dt><a name=dirname></a><strong>filedirname</strong> <em>name</em></dt> <dd><p>Возвращает имя, составленное из всех элементов <em>name</em>, кроме последнего. Если name - относительное имя файла и состоит из единственного элемента, возвращает "." (":" для Macintosh). Если имя указывает на корневой каталог, возвращается имя корневого каталога.</p> <p>Например:</p> <pre> file dirname c:/ </pre> <p>вернет <strong>c:/</strong>.</p> <p>"Тильда"-подстановки выполняются, только если они необходимы для формирования правильного результата.</p> <p>Например:</p> <pre> file dirname ~/src/foo.c </pre> <p>вернет <strong>~/src</strong>, тогда как </p> <pre> file dirname ~ </pre> <p>вернет <strong>/home</strong> (или что-то подобное).</p> </dd> <dt><a name=executable></a><strong>file executable</strong> <em>name</em> </dt> <dd>Возвращает <strong>1</strong>, если файл <em>name</em> исполнимый, и <strong>0</strong> в противном случае.</dd> <dt><strong>file exists</strong> <em>name</em></dt> <dd> Возвращает <strong>1</strong>, если файл <em>name</em> существует, и пользователь имеет права на просмотр каталога, в котором лежит файл, и <strong>0</strong> в противном случае. </dd> <dt><a name=extension></a><strong>file extension</strong> <em>name</em> </dt> <dd> Возвращает все символы в <em>name</em>, начиная с последней точки в последнем элементе. Если в последнем элементе нет точек, возвращается пустая строка. </dd> <dt> <strong>file isdirectory</strong> <em>name</em> </dt> <dd><p>Возвращает <strong>1</strong>, если <em>name</em> - имя каталога, и <strong>0</strong> в противном случае.</p> <pre> file isfile <em>name</em> </pre> <p>Возвращает <strong>1</strong>, если файл <em>name</em> - регулярный файл, и <strong>0</strong> в противном случае.</p> </dd> <dt><a name=join></a><strong>file join</strong> <em>name</em> ?<em>name</em>...?</dt> <dd><p> Соединяет аргументы <em>name</em> в одно имя с помощью разделителя, используемого на данной платформе. Если очередной аргумент <em>name</em> представляет собой относительное имя, он присоединяется к предыдущим, в противном случае предыдущие аргументы отбрасываются, и процесс формирования имени начинается заново с текущего аргумента.</p> <p>Например:</p> <pre> file join a b /foo bar </pre> <p>вернет <strong>/foo/bar</strong>.</p> <p>Аргументы <em>name</em> могут содержать разделитель, это не помешает получить правильный результат для используемой платформы ("/" для Unix и Windows, ":" для Macintosh).</p> </dd> <dt><a name=lstat></a><strong>file lstat</strong> <em>name</em> <em>varName</em></dt> <dd> То же самое, что опция <strong>stat</strong>, описанная ниже, за исключением того, что используется команда ядра <strong>lstat</strong> вместо <strong>stat</strong>. Это означает, что если <em>name</em> есть имя связи, то команда вернет данные о связи, а не об исходном файле. Для платформ, не поддерживающих связи, команды полностью идентичны. </dd> <dt> <a name=mkdir></a><strong>file mkdir</strong> <em>dir</em> ?<em>dir</em>...? </dt> <dd> Создает все перечисленные каталоги. Для каждого аргумента <em>dir</em> команда создает все несуществующие родительские каталоги и сам каталог <em>dir</em>. Если указан существующий каталог, ничего не происходит. При этом команда считается выполненной успешно. Попытка перезаписать существующий файл каталогом приведет к ошибке. Аргументы команды обрабатываются в порядке перечисления до первой ошибки. </dd> <dt><a name=mtime></a><strong>file mtime</strong> <em>name</em> </dt> <dd> Возвращает десятичную строку, содержащую время последнего изменения файла <em>name</em>. Время представляется стандартным для POSIX образом в числе секунд от фиксированного начального момента (обычно, с 1 января 1970 г.). Если файл не существует или время последнего изменения не может быть получено, выдается сообщение об ошибке. </dd> <dt> <strong>file nativename</strong> <em>name</em> </dt> <dd> Возвращает имя файла в виде, характерном для используемой платформы. Опция полезна для подготовки исполнения файла с помощью команды <a href=exec.html><strong>exec</strong></a> под Windows. </dd> <dt><strong>file owned</strong> <em>name</em></dt> <dd> Возвращает <strong>1</strong>, если файл <em>name</em> принадлежит пользователю, и 0 в противном случае. </dd> <dt><strong>file pathtype</strong> <em>name</em></dt> <dd> Возвращает одно из значений <strong>absolute</strong>, <strong>relative</strong>, <strong>volumerelative</strong>. Если <em>name</em> указывает на определенный файл в определенном томе, возвращается <strong>absolute</strong>. Если <em>name</em> указывает на имя файла относительно текущего рабочего каталога - возвращается <strong>relative</strong>. Если <em>name</em> указывает имя файла относительно текущего рабочего каталога в определенном томе или на определенный файл в текущем рабочем томе, возвращается <strong>volumerelative</strong>. </dd> <dt> <strong>file readable</strong> <em>name</em> </dt> <dd> Возвращает <strong>1</strong>, если файл <em>name</em> доступен для чтения пользователю, и <strong>0</strong> в противном случае. </dd> <dt> <strong>file readlink</strong> <em>name</em></dt> <dd> Возвращает имя связи <em>name</em> (например, имя файла, на который указывает <em>name</em>). Если <em>name</em> не есть связь, или ее невозможно прочитать, возвращает ошибку. На платформах, на которых связи не поддерживаются, опция не определена. </dd> <dt><strong>file rename</strong> ?<em>-force</em>? ?<em>--</em>? <em>source</em> <em>target</em> </dt> <dt><strong>file rename</strong> ?<em>-force</em>? ?<em>--</em>? <em>source</em> ?<em>source</em>...? <em>targetDir</em></dt> <dd> Первая форма используется для того, чтобы переименовать файл или каталог <em>source</em> соответственно в файл или каталог <em>target</em> (и переместить их в соответствующий каталог, если это необходимо). Вторая форма используется, чтобы переместить файл(ы) или каталог(и) внутрь существующего каталога <em>targetDir</em>. Если один из аргументов <em>source</em> есть имя каталога, то этот каталог перемещается рекурсивно вместе со всем его содержимым. При перемещении существующие файлы не перезаписываются, если только не указана опция <em>-force</em>. Попытки перезаписать непустой каталог, а также перезаписать каталог файлом или файл каталогом приводят к ошибке, даже если опция <em>-force</em> указана. Аргументы команды обрабатываются в порядке перечисления до первой ошибки. Отметка "-" означает конец опций. Следующий аргумент считается именем файла или каталога, даже если он начинается с символа "-". </dd> <dt><a name=rootname></a><strong>file rootname</strong> <em>name</em></dt> <dd> Возвращает все символы в <em>name</em> за исключением последней точки в последнем элементе. Если в последнем элементе нет точек, возвращается <em>name</em>. </dd> <dt> <strong>file size</strong> <em>name</em></dt> <dd> Возвращает десятичную строку, содержащую размер файла в байтах. Если файл не существует или его размер не может быть получен, выдается ошибка. </dd> <dt><a name=split></a><strong>file split</strong> <em>name</em></dt> <dd><p>Возвращает список элементов пути name. Первый элемент списка при этом имеет тот же тип пути, что и name. Все остальные элементы - относительные. Разделители удаляются, если только они не необходимы для указания на относительный тип элементов. Например, под Unix</p> <pre> file split /foo/~bar/baz </pre> <p>вернет <strong>/ foo/~bar baz</strong>, чтобы гарантировать, что последующие команды не попытаются выполнить "тильда"- подстановку в третьем элементе.</p> </dd> <dt><strong>file stat</strong> <em>name</em> <em>varName</em></dt> <dd> Исполняет вызов функции ядра <strong>stat</strong> и записывает возвращаемую информацию о <em>name</em> в элементы массива <em>varName</em>. Формируются следующие элементы массива: <strong>atime</strong>, <strong>ctime</strong>, <strong>dev</strong>, <strong>gid</strong>, <strong>ino</strong>, <strong>mode</strong>, <strong>mtime</strong>, <strong>nlink</strong>, <strong>size</strong>, <strong>type</strong>, <strong>uid</strong>. Значения всех элементов, кроме <strong>type</strong>, - десятичные строки. Описания их приведены в описании команды ядра <strong>stat</strong>. Элемент <strong>type</strong> содержит тип файла в том же виде, в каком он возвращается командой <strong>file type</strong>. Команда <strong>file stat</strong> возвращает пустую строку. </dd> <dt><a name=tail></a><strong>file tail</strong> <em>name</em> </dt> <dd> Возвращает все символы в <em>name</em> после последнего разделителя каталогов. Если в <em>name</em> нет каталогов, возвращает <em>name</em>. </dd> <dt><strong>file type</strong> <em>name</em> </dt> <dd> Возвращает строку, содержащую тип файла. Возможные значения <strong>file</strong>, <strong>directory</strong>, <strong>characterSpecial</strong>, <strong>blockSpecial</strong>, <strong>fifo</strong>, <strong>link</strong> или <a href=socket.html><strong>socket</strong></a>. </dd> <dt> <strong>file volume</strong> </dt> <dd> Возвращает список, содержащий абсолютные пути ко всем подмонтированным томам. На Macintosh-платформах это список всех подмонтированных дисков, локальных и сетевых. На Unix-платформах команда всегда возвращает '<strong>/</strong>', поскольку все файловые системы монтируются как локальные. На Windows-платформах команда возвращает список локальных дисков (например, {a:/ c:/}). </dd> <dt> <strong>file writable</strong> <em>name</em> </dt> <dd> Возвращает <strong>1</strong>, если файл <em>name</em> доступен для записи, и <strong>0</strong> в противном случае. </dd> </dl> <h2>ПРОБЛЕМЫ ПЕРЕНОСИМОСТИ</h2> <dl> <dt> <strong>Unix</strong> </dt> <dd>На Unix-платформах эти команды всегда используют реальные, а не эффективные идентификаторы пользователя и группы.</dd> </dl> <p>См. также <a href=filename.html><strong>filename</strong></a>.</p> </body> </html>