Test: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
test: Исправлена опечатка
Метки: с мобильного устройства через мобильное приложение через приложение для Android
 
(не показана 31 промежуточная версия 26 участников)
Строка 1: Строка 1:
{{Заголовок со строчной буквы}}
{{Заголовок со строчной буквы}}
'''test''' — [[UNIX]]-утилита для проверки типа [[файл]]а и сравнения значений. Возвращает код возврата 0 (истина) или 1 (ложь) в зависимости вычисления выражения <code>expr</code>. Выражения могут быть как унарными, так и бинарными. Унарные выражения часто используются для проверки статуса файла. Также допустимо сравнение чисел и строк.
'''test''' — [[UNIX]]-утилита для проверки типа [[файл]]а и сравнения значений. Возвращает код возврата 0 () или 1 () в зависимости вычисления выражения <code>expr</code>. Выражения могут быть как унарными, так и бинарными. Унарные выражения часто используются для проверки статуса файла. Также допустимо сравнение чисел и строк.

Начиная с [[UNIX System III]] утилита стала встроенной, также появилась вторая её форма - [.<ref>{{Cite web|url=https://www.in-ulm.de/~mascheck/bourne/#system3|title=traditional Bourne shell family / history and development|publisher=www.in-ulm.de|accessdate=2017-07-15|archive-date=2020-04-14|archive-url=https://web.archive.org/web/20200414150320/https://www.in-ulm.de/~mascheck/bourne/#system3|deadlink=no}}</ref>


== Использование ==
== Использование ==
Строка 6: Строка 8:
* <code>test {--help,--version}</code>
* <code>test {--help,--version}</code>


Обычно используется в несложных shell-скриптах для проверок разного рода. Следующий пример удалит обычный файл test.txt если он существует, либо выведет сообщение что данного файла нет.
Обычно используется в несложных shell-скриптах для проверок разного рода. Следующий пример удалит обычный файл test.txt если он существует, либо выведет сообщение что данного файла нет.


<source lang="bash">
<pre>
#!/bin/sh
#!/bin/sh
if test -f test.txt
if test -f test.txt
Строка 16: Строка 18:
echo 'файл test.txt не найден'
echo 'файл test.txt не найден'
fi
fi
</pre>
</>


Для сокращения кода сценария используют парный оператор '[' как синоним test
Для сокращения кода сценария используют парный оператор '[' как синоним test


<source lang="bash">
<pre>
#!/bin/sh
#!/bin/sh
if [ -f test.txt ]
if [ -f test.txt ]
Строка 28: Строка 30:
echo 'файл test.txt не найден'
echo 'файл test.txt не найден'
fi
fi
</pre>
</>


== Параметры запуска ==
== Параметры запуска ==
* <code>-r file</code> — истина, если file существует и является специальным блочным устройством.
* <code>- file</code> — истина, если file существует и является специальным блочным устройством.
* <code>-e file</code> — истина, если file существует и символьное устройство.
* <code>- file</code> — истина, если file существует и символьное устройство.
* <code>-m file</code> — истина, если file существует и каталог.
* <code>- file</code> — истина, если file существует и .
* <code>-o file</code> — истина, если file существует.
* <code>- file</code> — истина, если file существует.
* <code>-s file</code> — истина, если file существует и обычный файл.
* <code>- file</code> — истина, если file существует и .
* <code>-g file</code> — истина, если file существует и имеет установленным групповой идентификатор (set-group-id).
* <code>-g file</code> — истина, если file существует и имеет установленным групповой идентификатор (set-group-id).
* <code>-k file</code> — истина, если file имеет установленным «sticky» бит.
* <code>-k file</code> — истина, если file имеет установленным «sticky» бит.
* <code>-L file</code> — истина, если file существует и символьная ссылка.
* <code>-L file</code> — истина, если file существует и .
* <code>-p file</code> — истина, если file существует и является именованным каналом (pipe).
* <code>-p file</code> — истина, если file существует и является именованным каналом (pipe).
* <code>-r file</code> — истина, если file существует и читаем.
* <code>-r file</code> — истина, если file существует и читаем.
* <code>-s file</code> — истина, если file существует и имеет размер больше чем ноль.
* <code>-s file</code> — истина, если file существует и имеет размер больше чем ноль.
* <code>-S file</code> — истина, если file существует и сокет.
* <code>-S file</code> — истина, если file существует и .
* <code>-t [fd]</code> — истина, если fd открыт на терминале. Если fd пропущен, по умолчанию 1 (стандартное устройство вывода).
* <code>-t [fd]</code> — истина, если fd открыт на терминале. Если fd пропущен, по умолчанию 1 (стандартное устройство вывода).
* <code>-u file</code> — истина, если file существует и имеет установленным бит пользователя (set-user-id).
* <code>-u file</code> — истина, если file существует и имеет установленным бит пользователя (set-user-id).
* <code>-w file</code> — истина, если file существует и записываем.
* <code>-w file</code> — истина, если file существует и .
* <code>-x file</code> — истина, если file существует и исполняем.
* <code>-x file</code> — истина, если file существует и .
* <code>-O file</code> — истина, если file существует и его владелец имеет эффективный идентификатор пользователя.
* <code>-O file</code> — истина, если file существует и его владелец имеет эффективный идентификатор пользователя.
* <code>-G file</code> — истина, если file существует и его владелец имеет эффективный идентификатор группы.
* <code>-G file</code> — истина, если file существует и его владелец имеет эффективный идентификатор группы.
* <code>file1 -nt file2</code> — истина, если file1 новее (дата модификации) чем file2.
* <code>file1 -nt file2</code> — истина, если file1 новее (дата модификации) чем file2.
* <code>file1 -ot file2</code> — истина, если file1 старее чем file2.
* <code>file1 -ot file2</code> — истина, если file1 старее чем file2.
* <code>file1 -ef file2</code> — истина, если file1 и file2 имеют то же устройство и номер inode .
* <code>file1 -ef file2</code> — истина, если file1 и file2 имеют то же устройство и номер inode.
* <code>-z string</code> — истина, если длина string равна нулю.
* <code>-z string</code> — истина, если длина string равна нулю.
* <code>-n string string</code> — истина, если длина string не ноль.
* <code>-n string</code> — истина, если длина string не ноль.
* <code>string1 = string2</code> — истина, если строки равны.
* <code>string1 = string2</code> — истина, если строки равны.
* <code>string1 != string2</code> — истина, если строки не равны.
* <code>string1 != string2</code> — истина, если строки не равны.
* <code>! expr</code> — истина, если выражение expr ложь.
* <code>! expr</code> — истина, если выражение expr ложь.
* <code>expr1 -a expr2</code> — истина, если оба выражения expr1 и expr2 истина.
* <code>expr1 -a expr2</code> — истина, если оба выражения expr1 и expr2 истина.
* <code>expr1 -o expr2</code> — истина, если или expr1 или expr2 истина.
* <code>expr1 -o expr2</code> — истина, если expr1 или expr2 истина.
* <code>arg1 OP arg2 -eq, -ne, -lt, -le, -gt, или -ge</code> — эти арифметические бинарные операции возвращают истину, если arg1 равно, не равно, меньше чем, меньше чем или равно, больше чем, или больше или равно чем arg2, соответственно. arg1 и arg2 могут быть положительными целыми, отрицательными целыми, или специальными выражениями -l string, которые вычисляют длину string.
* <code>arg1 arg2 -eq, -ne, -lt, -le, -gt, или -ge</code> — эти арифметические бинарные операции возвращают истину, если arg1 равно, не равно, меньше чем, меньше чем или равно, больше чем, или больше или равно чем arg2, соответственно. arg1 и arg2 могут быть положительными целыми, отрицательными целыми, или специальными выражениями -l string, которые вычисляют длину string.

== Примечания ==
{{примечания}}


== Ссылки ==
== Ссылки ==
Строка 66: Строка 71:
* {{man|1|test|FreeBSD}}
* {{man|1|test|FreeBSD}}


{{Шаблон:Команды Unix}}
{{Команды Unix}}

[[Категория:Утилиты UNIX]]


[[en:Test (Unix)]]
[[: Unix]]
[[fr:Test (Unix)]]
[[hu:Test (Unix)]]
[[pl:Test (Unix)]]
[[uk:Test]]

Текущая версия от 18:50, 14 марта 2024

test — UNIX-утилита для проверки типа файла и сравнения значений. Возвращает код возврата 0 (ложь) или 1 (истина) в зависимости вычисления выражения expr. Выражения могут быть как унарными, так и бинарными. Унарные выражения часто используются для проверки статуса файла. Также допустимо сравнение чисел и строк.

Начиная с UNIX System III утилита стала встроенной, также появилась вторая её форма - [.[1]

Использование

[править | править код]
  • test [expr]
  • test {--help,--version}

Обычно используется в несложных shell-скриптах для проверок разного рода. Следующий пример удалит обычный файл test.txt, если он существует, либо выведет сообщение, что данного файла нет.

#!/bin/sh
if test -f test.txt
then
  rm test.txt
else
  echo 'файл test.txt не найден'
fi

Для сокращения кода сценария используют парный оператор '[' как синоним test. Парный оператор требует пробела между скобками потому, что [ (скобка) является командой оболочки, а POSIX совместимые оболочки требует пробела между командой и её аргументами.

#!/bin/sh
if [ -f test.txt ]
then
  rm test.txt
else
  echo 'файл test.txt не найден'
fi

Параметры запуска

[править | править код]
  • -b file — истина, если file существует и является специальным блочным устройством.
  • -c file — истина, если file существует и символьное устройство.
  • -d file — истина, если file существует и является каталогом.
  • -e file — истина, если file существует.
  • -f file — истина, если file существует и является обычным файлом.
  • -g file — истина, если file существует и имеет установленным групповой идентификатор (set-group-id).
  • -k file — истина, если file имеет установленным «sticky» бит.
  • -L file — истина, если file существует и является символьной ссылкой.
  • -p file — истина, если file существует и является именованным каналом (pipe).
  • -r file — истина, если file существует и читаем.
  • -s file — истина, если file существует и имеет размер больше, чем ноль.
  • -S file — истина, если file существует и является сокетом.
  • -t [fd] — истина, если fd открыт на терминале. Если fd пропущен, по умолчанию 1 (стандартное устройство вывода).
  • -u file — истина, если file существует и имеет установленным бит пользователя (set-user-id).
  • -w file — истина, если file существует и записываемый.
  • -x file — истина, если file существует и исполняемый.
  • -O file — истина, если file существует и его владелец имеет эффективный идентификатор пользователя.
  • -G file — истина, если file существует и его владелец имеет эффективный идентификатор группы.
  • file1 -nt file2 — истина, если file1 новее (дата модификации), чем file2.
  • file1 -ot file2 — истина, если file1 старее, чем file2.
  • file1 -ef file2 — истина, если file1 и file2 имеют то же устройство и номер inode.
  • -z string — истина, если длина string равна нулю.
  • -n string — истина, если длина string не ноль.
  • string1 = string2 — истина, если строки равны.
  • string1 != string2 — истина, если строки не равны.
  • ! expr — истина, если выражение expr ложь.
  • expr1 -a expr2 — истина, если оба выражения expr1 и expr2 истина.
  • expr1 -o expr2 — истина, если хотя бы одно из выражений expr1 или expr2 истина.
  • arg1 %оператор% arg2 -eq, -ne, -lt, -le, -gt, или -ge — эти арифметические бинарные операции возвращают истину, если arg1 равно (-eq), не равно (-ne), меньше чем (-lt), меньше чем или равно (-le), больше чем (-gt), или больше или равно (-ge), чем arg2, соответственно. arg1 и arg2 могут быть положительными целыми, отрицательными целыми, или специальными выражениями -l string, которые вычисляют длину string.

Примечания

[править | править код]
  1. traditional Bourne shell family / history and development. www.in-ulm.de. Дата обращения: 15 июля 2017. Архивировано 14 апреля 2020 года.
  • test(1) — страница справки man по пользовательским командам GNU/Linux  (англ.) (см. GNU Coreutils)
  • test(1) — страница справки man по пользовательским командам OpenBSD  (англ.)
  • test(1) — страница справки man по пользовательским командам FreeBSD  (англ.)