<!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> содержит имя
      файла. Если он начинается с символа &quot;~&quot;, то перед
      выполнением команды выполняются &quot;тильда&quot;-подстановки,
      как описано в <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> - возвращает или устанавливает имя
	    &quot;хозяина&quot; файла. В команде хозяин может быть задан
	    числовым идентификатором, но возвращается всегда имя
	    хозяина.</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>
        указана. Аргументы команды обрабатываются в порядке
        перечисления до первой ошибки. Отметка &quot;--&quot; означает конец
        опций. Следующий аргумент считается именем файла или каталога,
        даже если он начинается с символа &quot;-&quot;.
      </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> не задана. Аргументы команды
        обрабатываются в порядке перечисления до первой
        ошибки. Отметка &quot;--&quot; означает конец опций. Следующий
        аргумент считается именем файла или каталога, даже если он
        начинается с символа &quot;-&quot;.
      </dd>

      <dt><a name=dirname></a><strong>filedirname</strong> <em>name</em></dt>

      <dd><p>Возвращает имя, составленное из всех элементов
        <em>name</em>, кроме последнего. Если name - относительное имя
        файла и состоит из единственного элемента, возвращает
        &quot;.&quot; (&quot;:&quot; для Macintosh). Если имя
        указывает на корневой каталог, возвращается имя корневого
        каталога.</p>

	<p>Например:</p>
        <pre>
          file dirname c:/
        </pre>
        <p>вернет <strong>c:/</strong>.</p>
	
        <p>&quot;Тильда&quot;-подстановки выполняются, только если они
	  необходимы для формирования правильного результата.</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> могут содержать разделитель, это не
	  помешает получить правильный результат для используемой
	  платформы (&quot;/&quot; для Unix и Windows, &quot;:&quot;
	  для 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> указана. Аргументы
        команды обрабатываются в порядке перечисления до первой
        ошибки.  Отметка &quot;-&quot; означает конец опций. Следующий
        аргумент считается именем файла или каталога, даже если он
        начинается с символа &quot;-&quot;.
      </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>, чтобы гарантировать, что
        последующие команды не попытаются выполнить &quot;тильда&quot;-
        подстановку в третьем элементе.</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>