> ls -l aliasedname
lrwxr-xr-x 1 anon3202 users 19 Dec 25 05:24 aliasedname -> www/realfilename
我希望我的脚本返回有关~/www/realfilename
何时提供有关aliasedname
($1) 的信息的详细信息,而不是有关指定链接的信息aliasedname
(如上所示)。
我想(也许?)我想要某种类型的exec
?但我对此真的很模糊。
我正在考虑做一个ls
, acut
并评估它,然后抓住最后一部分用作路径......但看起来这是很多工作,并且应该有一个更简单(更优雅)的解决方案。
我用我的脚本对 $1 做了各种各样的事情,但是任何事情都可以传递给我的脚本进行处理。我想确保我处理的是实际的文件,而不是别名。
我可以检查它是否是一个文件 ( if [ -f $1 ]; then
),但如果我传递了一个别名,那么意图是什么就很清楚了,我不应该只是失败。
答案1
如果您需要ls
详细信息,请使用-H (--dereference-command-line)
选项:
ls -lH ./aliasedname
答案2
使用怎么样readlink
?man readlink
了解详情。
例如,
[/tmp]$ ls -l
lrwxrwxrwx. 1 root root 9 Jan 16 10:07 mylink -> test-link
-rw-r--r--. 1 root root 0 Jan 16 10:07 test-link
[/tmp]$ readlink -f mylink
/tmp/test-link
根据您的编辑,您可能会受益于“文件测试操作员”
-h 文件是符号链接