Разница между «проверить -файл» и «проверить файл -файл ef»

QNX (Neutrino 6.5.0 )использует в качестве оболочки реализацию ksh с открытым исходным кодом. Многие предоставленные сценарии, включая сценарии запуска системы, используют такие конструкции, как

if ! test /dev/slog -ef /dev/slog; then
    # do something
fi

чтобы проверить, существует ли менеджер ресурсов в файловой системе. Я искал и смог найти только очень скучные объяснения, что -efпроверяет, действительно ли два параметра являются одним и тем же файлом. Поскольку указанное имя файла одно и то же, кажется, что оно просто сводится к проверке существования файла.

Я проверил поведение test -aи test -e(. оба, кажется, проверяют наличие файла любого типа в соответствии с различными документами, которые я читал ), и они, кажется, также работают.

Есть ли разница в проверках между -efи -a/-e? Является ли использование -efпопыткой защититься от состояния гонки при существовании файла?

6
задан tinman 5 July 2012 в 13:16
поделиться