Разрешение символических ссылок в lua

#lua #symlink #symlink-traversal

#lua #символическая ссылка #обход символических ссылок

Вопрос:

Я попытался погуглить, но нашел только дополнительные пакеты, обрабатывающие это (чего я хотел бы избежать по разным причинам).

В Lua5.3 есть ли какой-либо способ разрешить символическую ссылку, возможно, рекурсивно, используя только стандартную библиотеку?

Я ищу что-то эквивалентное:

 lua -lfs -e 'print(fs.realink("/proc/self/exe"))'
  

… только у меня нет «fs» (и требуемого «пути») на моей цели.

Есть ли способ реализовать это в чистом lua, используя только стандартную библиотеку?

Комментарии:

1. path = io.popen('readlink "'..your_link..'"'):read()

2. @EgorSkriptunoff: это работает. Если вы дадите мне ответ, я приму его. Спасибо.

Ответ №1:

В Lua 5.3 я использую…

 cmd=function(cmd)
cmd=io.popen(cmd, 'r')
cmd = cmd:read('a ')
return cmd
end
  

…для хранения выходных данных внешних команд в переменной Lua. Пример его использования…

 erg=cmd('file /proc/self/exe|grep -o -E "[/a-z]{1,512}$"')
print(erg)

  

Но io.popen() не доступен во всех средах Lua 5.3 по соображениям безопасности. Поэтому вы должны проверить это, прежде чем сможете его использовать.