TEST(1) Справочник основных команд FreeBSD TEST(1)
НАЗВАНИЕ
test, [ -- утилита проверки условий
СИНТАКСИС
test выражение
[ выражение ]
ОПИСАНИЕ
Утилита test проверяет условие, и если оно выполняется, возвращает 0
(истина). В противном случае возвращается 1 (ложь). Если условие не
задано, test также возвратит 1 (ложь).
Все операторы и флаги представляют собой отдельные аргументы к данной
утилите.
Для создания выражений используются следующие примитивы:
-b файл Истина если файл существует и является специальным файлом
блочного устройства.
-c файл Истина если файл существует и является специальным файлом
посимвольного устройства.
-d файл Истина если файл существует и является каталогом.
-e файл Истина если файл существует (независимо от типа).
-f файл Истина если файл существует и является обычным файлом.
-g файл Истина если файл существует и имеет установленный флаг
``установить идентификатор группы'' (set group ID).
-h файл Истина если файл существует и является символической ссыл-
кой. Этот оператор сохранён для совместимости с предыду-
щими версиями программы. Не стоит полагаться на его нали-
чие, вместо этого используйте -L.
-k файл Истина если файл существует и имеет установленный бит
sticky.
-n строка Истина если длина строки строка ненулевая.
-p файл Истина если файл является именованным каналом (FIFO).
-r файл Истина если файл существует и доступен на чтение.
-s файл Истина если файл существует и его длина больше нуля.
-t дескриптор_файла
Истина если файл, дескриптор которого задаётся аргументом
дескриптор_файла, открыт и связан с терминалом.
-u файл Истина если файл существует и имеет установленный флаг
``установить идентификатор польльзователя'' (set user ID).
-w файл Истина если файл существует и доступен на запись. Истина
лишь означает, что флаг записи включен. В файловой системе
доступной только на чтение файл не является записываемым,
даже если эта проверка показывает обратное.
-x файл Истина если файл существует и является исполняемым. Истина
лишь означает, что флаг запуска включен. Если файл явля-
ется каталогом, истина означает, что внутри него возможно
производить поиск.
-z строка Истина если длина аргумента строка нулевая.
-L файл Истина если файл существует и является символической ссыл-
кой.
-O файл Истина если файл существует и его владелец совпадает с
идентификатором эффективного пользователя данного процесса.
-G файл Истина если файл существует и его группа совпадает с иден-
тификатором эффективной группы данного процесса.
-S файл Истина если файл существует и является сокетом.
файл1 -nt файл2
Истина если файл1 существует и новее файла файл2.
файл1 -ot файл2
Истина если файл1 существует и старее файла файл2.
файл1 -ef файл2
Истина если файлы файл1 и файл2 существуют и ссылаются на
один и тот же файл.
строка Истина если строка не является пустой.
s1 = s2 Истина если строки s1 и s2 идентичны.
s1 != s2 Истина если строки s1 и s2 отличаются.
s1 < s2 Истина если строка s1 предшествует строке s2 основываясь на
двоичном значении их символов.
s1 > s2 Истина если строка s1 следует за s2 основываясь на двоичном
значении их символов.
n1 -eq n2 Истина если целые числа n1 и n2 алгебраически равны.
n1 -ne n2 Истина если целые числа n1 и n2 алгебраически не равны.
n1 -gt n2 Истина если целое n1 алгебраически больше целого n2.
n1 -ge n2 Истина если целое n1 алгебраически больше либо равно целому
n2.
n1 -lt n2 Истина если целое n1 алгебраически меньше целого n2.
n1 -le n2 Истина если целое n1 алгебраически меньше либо равно целому
n2.
Если файл является символической ссылкой, то test полностью разыменовы-
вает её и далее вычисляет выражение уже с конечным файлом, за исключением
примитив -h и -L.
Примитивы могут комбинироваться со следующими операторами:
! выражение Истина если выражение ложно.
выражение1 -a выражение2
Истина если оба выражение1 и выражение2 истинны.
выражение1 -o выражение2
Истина если хотя бы одно из выражений выражение1 и
выражение2 истинно.
(выражение) Истина если выражение истинно.
Оператор -a имеет более высокий приоритет, чем оператор -o.
Некоторые командные оболочки имеют встроенную команду test с похожей либо
идентичной функциональностью. Обратитесь к странице справочника
builtin(1).
НЕОДНОЗНАЧНОСТЬ ГРАММАТИКИ
Грамматика утилиты test по своей сути неоднозначна. Чтобы обеспечить
определённую степень непротиворечивости, случаи, рассматриваемые стандар-
том IEEE Std 1003.2 (``POSIX.2'') в разделе D11.2/4.62.4, вычисляются
строго в соответствии с правилами, указанными в документе стандарта. Все
остальные случаи ограничены неоднозначностями в семантике команды.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Утилита test возвращает одно из следующих значений:
0 Выражение истинно.
1 Выражение ложно или отсутствует.
>1 Произошла ошибка.
СМОТРИ ТАКЖЕ
builtin(1), expr(1), sh(1), symlink(7)
СТАНДАРТЫ
Утилита test реализует расширение спецификации IEEE Std 1003.2
(``POSIX.2'').
ПРОБЛЕМЫ
В случае использования -a и -o, всегда вычисляются обе части выражения, в
отличие от логических операторов sh(1). Например, следующей командой
будет проверяться возможность записи в файл, несмотря на то, что первое
выражение является ложным. Результатом этого будет ненужное обращение к
файловой системе:
[ -z abc -a -w файл ]
FreeBSD 6.2 31 июля 2006 FreeBSD 6.2
Последние комментарии
11 недель 3 дня назад
35 недель 4 дня назад
2 года 36 недель назад
3 года 6 недель назад
3 года 29 недель назад
3 года 44 недели назад
3 года 45 недель назад
3 года 48 недель назад
4 года 7 недель назад
4 года 11 недель назад