Как я могу получить поведение readlink -f GNU на Mac? - PullRequest
330 голосов
/ 29 июня 2009

В Linux утилита readlink принимает опцию -f, которая идет по дополнительным ссылкам. Это не работает на Mac и, возможно, на системах BSD. Каким будет эквивалент?

Вот некоторая отладочная информация:

$ which readlink; readlink -f
/usr/bin/readlink
readlink: illegal option -f
usage: readlink [-n] [file ...]

Ответы [ 22 ]

0 голосов
/ 20 мая 2019

Объяснение

coreutils - это пакет brew, который устанавливает основные утилиты GNU / Linux, соответствующие их реализации в Mac OSX, чтобы вы могли использовать эти

Вы можете найти программы или утилиты в вашей системе Mac OSX, которые похожи на Linux coreutils («Утилиты ядра»), но в некоторых случаях они различаются (например, имеют разные флаги).

Это потому, что реализация этих инструментов в Mac OSX отличается. Чтобы получить исходное поведение, подобное GNU / Linux, вы можете установить пакет coreutils через систему управления пакетами brew.

Это установит соответствующие основные утилиты с префиксом g. Например. для readlink вы найдете соответствующую greadlink программу.

Чтобы заставить readlink работать как реализация GNU readlink (greadlink), вы можете создать простой псевдоним после установки coreutils.

Осуществление

  1. Установить варку

Следуйте инструкциям на https://brew.sh/

  1. Установить пакет coreutils

brew install coreutils

  1. Создание псевдонима

Вы можете поместить свой псевдоним в ~ / .bashrc, ~ / .bash_profile или везде, где вы привыкли хранить псевдонимы bash. Я лично храню свои в ~ / .bashrc

alias readlink=greadlink

Вы можете создать аналогичные псевдонимы для других coreutils, таких как gmv, gdu, gdf и т. Д. Но имейте в виду, что поведение GNU на компьютере Mac может сбивать с толку других, привыкших работать с нативным coreutils, или может непредвиденным образом вести себя в вашей системе Mac.

0 голосов
/ 30 июня 2009

Пути к ссылке для чтения отличаются между моей системой и вашей. Пожалуйста, попробуйте указать полный путь:

/sw/sbin/readlink -f

...