Вам следует рассмотреть возможность использования межплатформенных символических ссылок по сравнению с собственными псевдонимами macOS, созданными с помощью операций Finder. Перейдите к приглашению Terminal / iTerm и выполните:
$ man ln
чтобы узнать больше.
Тем не менее, вы можете работать с псевдонимами macOS из R. Формат двоичного псевдонима версии 3 по-прежнему непрозрачен, и мне не хотелось копаться в двоичных форматах дождливым ноябрьским днем, но вы можно использовать пакет mactheknife
, чтобы сделать это с помощью applecript:
library(mactheknife) # github or gitlab hrbrmstr/mactheknife
resolve_alias <- function(path) {
mactheknife::applescript(sprintf('
set myPosix to POSIX file "%s"
tell application "Finder"
set myPath to original item of item myPosix
end tell
set myPOSIXPath to POSIX path of (myPath as text)
return myPOSIXPath
', path.expand(path)))
}
(resolve_alias("~/Desktop/data-alias"))
## [1] "/Users/bob/data/"
Если вы не можете установить этот пакет по какой-либо причине (у него есть серьезные зависимости для некоторых людей), вот исходный код для функции applescript()
:
applescript <- function (script_source, extra_args = c(), params = c()) {
script_source <- paste0(script_source, collapse = "\n")
tf <- tempfile(fileext = ".applescript")
on.exit(unlink(tf), add = TRUE)
cat(script_source, file = tf)
osascript <- Sys.which("osascript")
args <- c(extra_args, tf, params)
res <- system2(command = osascript, args = args, stdout = TRUE)
invisible(res)
}
, который представляет собой базу R без каких-либо зависимостей (за исключением того, что зависит от macOS: -)
UPDATE
Я добавил resolve_alias()
функцию в mactheknife
пакет, так что теперь вы можете просто сделать:
mactheknife::resolve_alias("path-to-alias-file")
, если вы можете установить mactheknife
.