Варианты использования readlink-f по сравнению с readlink-e

Я использовал readlink -f и readlink -e в нескольких случаях для разрешения символьных ссылок и насколько я могу вспомнить они дают те же результаты. Страница справочника для readlink от man readlink говорит:

-f, --canonicalize
       canonicalize by following every symlink in every component of the given name recursively; all but the last component must exist

-e, --canonicalize-existing
       canonicalize by following every symlink in every component of the given name recursively, all components must exist

После чтения страницы справочника, хотя я понимаю технические различия между -f и -e опции, я не могу думать об определенных ситуациях, где я использовал бы любую опцию. Есть ли определенные варианты использования и обстоятельства, где можно предпочесть использовать readlink -f кому: readlink -e и наоборот?

6
задан 28 August 2016 в 12:35

1 ответ

В первую очередь, оба канонизируют имена файлов, который включает:

  • Преобразование всех относительных путей к полным путям

  • Преобразование всех символьных ссылок на фактический hardlinked соединяет каналом на иерархии файловой системы

Основные отличия:

  • -f канонизирует путь, который может содержать несуществующую часть файловой системы только наконец, например, каталог или файл, ненулевой статус выхода иначе; с другой стороны, -e будет только работать, только если все компоненты существуют в файловой системе, ненулевой статус выхода иначе

  • Любое запаздывание / проигнорирован в -f, -e запаздывание обработок / как каталог


Так, практически:

  • Использовать -e то, когда Вы хотите удостовериться в любом пути, должно существовать, например, Вам нужен статус выхода, чтобы сделать дальнейшую логическую операцию, a if-else протестируйте точно

  • Использовать -f когда Вы не хотите, чтобы путь существовал строго теперь, но Вам нужен полный путь позже, например, Вы хотите создать разрешенный файл впоследствии, когда процесс работает, или файловая система смонтирована и так далее.

  • Использовать -e с запаздыванием / проверять на запись каталога явно как -f игнорирует запаздывание /

8
ответ дан 23 November 2019 в 07:37

Другие вопросы по тегам:

Похожие вопросы: