readlink -f "$path"
Примечание редактора: вышеупомянутые работы с [1 121] GNU
readlink
и FreeBSD/PC-BSD/OpenBSDreadlink
, но не на OS X с 10,11.
предложения GNUreadlink
дополнительные, связанные опции, такой как-m
для разрешения символьной ссылки, существует ли окончательная цель.Примечание начиная с GNU coreutils 8.15 (2012-01-06), существует программа realpath , доступная, который является менее тупым и более гибким, чем вышеупомянутое. Это также совместимо с FreeBSD util того же имени. Это также включает функциональность для генерации относительного пути между двумя файлами.
realpath $path
[Администраторское дополнение ниже из комментария [1 116] halloleo — danorton]
Для Mac OS X (через, по крайней мере, 10.11.x), используйте
readlink
без-f
опция:readlink $path
Примечание редактора: Это не разрешит символьные ссылки рекурсивно и таким образом не сообщит окончательный цель; например, учитывая символьную ссылку
a
, который указывает на [1 110], который в свою очередь указывает на [1 111], это будет только отчетb
(и не гарантирует, что это производится как полный путь ).
Использование следующийperl
команда на OS X для заполнения разрыва пропавших без вестиreadlink -f
функциональность:perl -MCwd -le 'print Cwd::abs_path(shift)' "$path"
глоток>
Probably not the most beautiful procedure, but this works:
cmds = '''
paste your commands, followed by '''
:
a = 1
b = 2
c = 3
'''
Then exec(cmds)
will execute them.
Or more directly,
exec('''
then paste your commands, followed by ''')
:
a = 1
b = 2
c = 3
''')
It's just a trick, maybe there's a more official, elegant way.