Сравнение времени SymLink

Чтобы узнать, в каких группах вы состоите, попробуйте группы . Наличие у вас доступа к sudo зависит от вашей локальной конфигурации.

Если при запуске групп вы не видите wheel или администраторов персонал или группу, специально созданную для sudo ], то вам, вероятно, не были автоматически предоставлены права sudo -ing. Обратите внимание, что их также можно добавить через конфигурацию sudo .

5
22.01.2019, 01:12
2 ответа

С zsh5.6 или выше (для наносекундной точности )вы могли бы сделать это со встроенными только с помощью:

zmodload zsh/stat
if 
  stat -LA lnktime -F '%021s%N' +mtime -- $lnkfile &&
    stat -A reftime -F '%021s%N' +mtime -- $reffile &&
    [[ $lnktime < $reftime ]]
then
  print -r -- $lnkfile is older than $reffile
fi

Это будет работать независимо от того, какие символы или не -символы содержат имена файлов, и сравнивать метки времени с точностью до наносекунды.

Мы сравниваем временные метки в виде строк (количество наносекунд в виде десятичной строки, представленной нулем -дополненной 30 цифрами )вместо чисел с плавающей запятой, поскольку типичные числа с плавающей запятой двойной точности для x86 _64 ПК под управлением GNU/Linux, по крайней мере, не обладают достаточной точностью для хранения таких чисел, как 1548195897.775033155, так что вы не сможете отличить два файла, измененных сегодня, за одни и те же 100 наносекунд.

$ ((1548195897.775033155 < 1548195897.775033255)) && echo yes
$ [[ 1548195897775033155 < 1548195897775033255 ]] && echo yes
yes
1
27.01.2020, 20:38

Насколько я знаю, bash не предлагает никаких версий-ot(и подобных ), которые избегают разыменования символических ссылок.

Вместо этого вы можете использовать GNU stat (, который не разыменовывает символические ссылки без-L)и численно сравнивает их эпохи mtime:

if (( "$(stat --format=%Z lnkfile)" < "$(stat --format=%Z reffile)" )); then
    # lnkfile is older
fi
3
27.01.2020, 20:38

Теги

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