Прежде всего, он проверяет 2 условия с логическим ИЛИ || operator.
-e FILE - Истина, если ФАЙЛ существует и является файлом, поэтому условие отменяет результат этой проверки.
, а затем, если значение равно false, он отправляется и печатает сообщение и отправьте его в stderr (> & 2). Если первое условие истинно, то второе условие не будет оцениваться (конечно, это логический ИЛИ способ работы по умолчанию)
В Unix -world, stdout обычно используется, когда все работает правильно, а stderr обычно используется для печати сообщений, когда что-то идет не так.
По умолчанию stdout и stderr выводят на экран. Основное отличие состоит в том, что> и | операторы по умолчанию перехватывают stdout, но не stderr.
Вы также можете проверить другие вещи, как показано ниже:
-r FILE - True, если файл существует и доступен для чтения.
-w FILE - Истинно, если ФАЙЛ существует и доступен для записи.
-x ФАЙЛ - Истинно, если ФАЙЛ существует и является исполняемым.
-d ФАЙЛ - Истинно, если ФАЙЛ существует и является каталогом.
-e ФАЙЛ - Истинно, если ФАЙЛ существует и является файлом, независимо от его типа (узел, каталог, сокет и т. Д. c.).
-f ФАЙЛ - Истинно, если ФАЙЛ существует и является обычным файлом (не каталогом или устройством). )