#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 по соображениям безопасности. Поэтому вы должны проверить это, прежде чем сможете его использовать.