使用ls -la symlinkName或stat symlinkName时,未显示所有路径(例如../../../one/two/file.txt)显示完整路径的linux命令是什么?
ls -la symlinkName
stat symlinkName
../../../one/two/file.txt
z0qdvdin1#
realpath并不适用于所有的linux版本,但是readlink应该适用。
realpath
readlink
readlink -f symlinkName
上面的方法应该可以奏效。或者,如果您没有安装上述任何一个,则可以在安装了python 2.6(或更高版本)的情况下执行以下操作
python -c 'import os.path; print(os.path.realpath("symlinkName"))'
az31mfrm2#
realpath <path to the symlink file>应该可以做到这一点。
realpath <path to the symlink file>
nnvyjq4y3#
unix风格-〉ll symLinkNameOSX -〉1个月1个月1个月不同之处在于,第一种方式将以 Flink 方式显示sym链接路径,而第二种方式将仅在控制台上显示。
ll symLinkName
pcrecxhr4#
您可以将awk与system调用readlink一起使用,以获得具有完整符号链接路径的ls输出的等效输出。
awk
system
ls
ls | awk '{printf("%s ->", $1); system("readlink -f " $1)}'
将显示例如
thin_repair ->/home/user/workspace/boot/usr/bin/pdata_tools thin_restore ->/home/user/workspace/boot/usr/bin/pdata_tools thin_rmap ->/home/user/workspace/boot/usr/bin/pdata_tools thin_trim ->/home/user/workspace/boot/usr/bin/pdata_tools touch ->/home/user/workspace/boot/usr/bin/busybox true ->/home/user/workspace/boot/usr/bin/busybox
dffbzjpn5#
查看信息的另一种方法是stat命令,该命令将显示更多信息。
stat
File: ‘/home/sumon/.ssh’ -> ‘/home/sumon/ssh-keys/.ssh.personal’ Size: 34 Blocks: 0 IO Block: 4096 symbolic link Device: 801h/2049d Inode: 25297409 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 1000/ sumon) Gid: ( 1000/ sumon) Access: 2017-09-26 16:41:18.985423932 +0600 Modify: 2017-09-25 15:48:07.880104043 +0600 Change: 2017-09-25 15:48:07.880104043 +0600 Birth: -
希望这能帮到什么人。
eblbsuwk6#
我将在这里给予简短的回顾和分析,但对于那些TL;这里的DR是bash的一行代码,用于锚工作目录:
script_home=$( dirname $(realpath "$0") )
或者您可以使用任何其他文件名代替$0来确定它的真实的位置。不仅存在确定某个文件的真实的路径的问题,而且特别是某些脚本是通过符号链接从另一个位置调用的,需要引用相对于其真实工作目录的其他资源。细节如下。让我们假设我们有真实的的脚本或文件和符号链接到它:
$0
$ ls -la -rwxr-xr-x 1 root root 0 Mar 20 07:05 realscript.sh lrwxrwxrwx 1 root root 10 Mar 20 07:05 symlink -> realscript.sh
GNU coreutils的一部分是一些非常有用的命令:
$ realpath symlink /home/test/realscript.sh
另见原文:
realpath realscript.sh /home/test/realscript.sh
在脚本中使用dirname也是一个很好的组合
dirname
$ dirname /home/test/realscript.sh /home/test
因此,要总结它,您可以在脚本中使用
echo $( dirname $(realpath "symlink") )
或获取并存储在变量真实的脚本主目录中,并保存代码以获取真实路径脚本realscript.sh:
script_home=$( dirname $(realpath "$0") ) echo Original script home: $script_home
其中“$0”在shell脚本中定义为“self”。为了测试一切,我们把符号链接到/home/test 2/,修改一些额外的东西,并运行/调用它从根目录:
$ /home/test2/symlink /home/test Original script home: /home/test Original script is: /home/test/realscript.sh Called script is: /home/test2/symlink
请试着给自己写修改后的输出:)更新2021,还有指令:readlink -打印解析的符号链接或规范文件名说明注意realpath(1)是用于规范化功能的首选命令。
qc6wkl3g7#
在macOS Catalina 尝试-
readlink -n `which <command>`
输入示例-
readlink -n `which adb`
输出示例-
/usr/local/Caskroom/android-platform-tools/31.0.1,d027ce0f9f214a4bd575a73786b44d8ccf7e7516/platform-tools/adb
pexxcrt28#
在我的Mac上,我有以下内容:例如,创建指向目录的符号链接:ln -s /Users/test/play/game game然后如果我使用符号链接后藤dir:cd game如果我发出cmd:pwd,你在的实际目录是:~如果我决定实际更改为dir:/Users/test/play/game由于某种原因,我在我的.bash_profile中设置了一个别名:
ln -s /Users/test/play/game game
cd game
~
/Users/test/play/game
alias cdp='cd -P $(basename `pwd`)'
在使用上面的cdp别名后,接着pwd命令,当前目录为:/Users/test/play/game
cdp
pwd
kqqjbcuj9#
查找-最大深度1 -类型l -打印“%l\n”
9条答案
按热度按时间z0qdvdin1#
realpath
并不适用于所有的linux版本,但是readlink
应该适用。上面的方法应该可以奏效。
或者,如果您没有安装上述任何一个,则可以在安装了python 2.6(或更高版本)的情况下执行以下操作
az31mfrm2#
realpath <path to the symlink file>
应该可以做到这一点。nnvyjq4y3#
unix风格-〉
ll symLinkName
OSX -〉1个月1个月1个月
不同之处在于,第一种方式将以 Flink 方式显示sym链接路径,而第二种方式将仅在控制台上显示。
pcrecxhr4#
您可以将
awk
与system
调用readlink
一起使用,以获得具有完整符号链接路径的ls
输出的等效输出。将显示例如
dffbzjpn5#
查看信息的另一种方法是
stat
命令,该命令将显示更多信息。希望这能帮到什么人。
eblbsuwk6#
我将在这里给予简短的回顾和分析,但对于那些TL;这里的DR是bash的一行代码,用于锚工作目录:
或者您可以使用任何其他文件名代替
$0
来确定它的真实的位置。不仅存在确定某个文件的真实的路径的问题,而且特别是某些脚本是通过符号链接从另一个位置调用的,需要引用相对于其真实工作目录的其他资源。
细节如下。让我们假设我们有真实的的脚本或文件和符号链接到它:
GNU coreutils的一部分是一些非常有用的命令:
另见原文:
在脚本中使用
dirname
也是一个很好的组合因此,要总结它,您可以在脚本中使用
或获取并存储在变量真实的脚本主目录中,并保存代码以获取真实路径脚本realscript.sh:
其中“$0”在shell脚本中定义为“self”。
为了测试一切,我们把符号链接到/home/test 2/,修改一些额外的东西,并运行/调用它从根目录:
请试着给自己写修改后的输出:)
更新2021,还有指令:
readlink -打印解析的符号链接或规范文件名
说明注意realpath(1)是用于规范化功能的首选命令。
qc6wkl3g7#
在macOS Catalina 尝试-
输入示例-
输出示例-
pexxcrt28#
在我的Mac上,我有以下内容:
例如,创建指向目录的符号链接:
ln -s /Users/test/play/game game
然后如果我使用符号链接后藤dir:
cd game
如果我发出cmd:pwd,你在的实际目录是:~
如果我决定实际更改为dir:
/Users/test/play/game
由于某种原因,我在我的.bash_profile中设置了一个别名:在使用上面的
cdp
别名后,接着pwd
命令,当前目录为:/Users/test/play/game
kqqjbcuj9#
查找-最大深度1 -类型l -打印“%l\n”