Intereting Posts
linux_startscript.sh: 14: linux_startscript.sh: Синтаксическая ошибка: "(" неожиданный команду для просмотра общих установленных пакетов в Slackware? Как сопоставить имя устройства sata с физическим интерфейсом sata для RAID-систем Запуск элементарной ОС на MacBookPro10,1, получение случайных изменений разрешения есть ли «xdotool» rpm для Centos Linux? Установите беспроводной сетевой адаптер на Centos 7 Где предоставить данные аутентификации сетевому прокси (Central Proxy) в Fedora? Получить канонический путь для команды В сценарии Bash в (set -x) не отображается команда «cat». (его содержание) Отключение gpgcheck с плагином tmprepo Помогите мне заменить sshfs на ssh? Как мне выполнить мой сценарий еще одну команду после того, как предыдущая команда вернет ненулевое значение до того, как оно будет прервано? Блокировать / предотвращать команду, если она была выполнена в течение последних x секунд / минут Не удается войти в Alpine Linux из-за неправильной конфигурации раскладки клавиатуры файл (1) и магия (5): определение приоритетов результата

объясните параметры команды readlink

Может кто-нибудь, пожалуйста, объясните мне следующие параметры команды 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 -m, --canonicalize-missing canonicalize by following every symlink in every component of the given name recursively, without requirements on components existence 

    Я думаю, что это совершенно понятно, поэтому я действительно не знаю, какая часть звучит для вас неоднозначно … Давайте посмотрим на пример:

    –canonicalize

     $ mkdir /tmp/realdir $ mkdir /tmp/subdir $ ln -s /tmp/realdir /tmp/subdir/link $ cd /tmp $ readlink -f ./subdir/link/nonexistentdir/ /tmp/realdir/nonexistentdir $ readlink -f ./subdir/link/nonexistentfile.txt /tmp/realdir/nonexistentfile.txt 

    Независимо от параметров, readlink будет: – переводить относительный путь к абсолютному пути – перевести символическое имя в реальный путь

    И, как вы можете видеть выше, с -f , readlink не волнует, существует ли последняя часть этого пути (здесь nonexistentfile.txt ) или нет.

    Если другой части этого пути не существует, readlink ничего не выводит и будет иметь код возврата, отличный от 0 (что означает возникновение ошибки). Видеть:

     $ readlink -f /tmp/fakedir/foo.txt $ echo $? 1 

    –canonicalize существующих

    Если вы попробуете то же самое с -e :

     $ readlink -e ./subdir/link /tmp/realdir $ readlink -e ./subdir/link/nonexistentfile.txt $ echo $? 1 

    Если -e , если какой-либо компонент пути не существует, readlink ничего не выведет и будет иметь код возврата, отличный от 0.

    –canonicalize пропущенными

    -m – это противоположность -e . Не будет проведено никаких проверок, чтобы проверить, существуют ли компоненты пути:

     $ readlink -m ./subdir/link/fakedir/fakefile /tmp/realdir/fakedir/fakefile $ ln -s /nonexistent /tmp/subdir/brokenlink $ readlink -m ./subdir/brokenlink/foobar /nonexistent/foobar 

    что меня смутило, почему кому-то нужны -e и -m варианты?

    Из исходного кода ядра ./scripts/kconfig/merge_config.sh (сценарий принимает список значений фрагмента конфигурации и объединяет их один за другим):

     if [ -z "$KCONFIG_CONFIG" ]; then if [ "$OUTPUT" != . ]; then KCONFIG_CONFIG=$(readlink -m -- "$OUTPUT/.config") else KCONFIG_CONFIG=.config fi fi 

    KCONFIG_CONFIG получает путь к файлу .config, который еще не существует.