当您执行
时
cat some-symlink-to-some-real-file
它显示的是实际文件的内容,而不是符号链接本身的内容。有没有办法查看其中的内容?
时
cat some-symlink-to-some-real-file
它显示的是实际文件的内容,而不是符号链接本身的内容。有没有办法查看其中的内容?
ls -l
命令将会显示以下内容:
$ ls -l foo
lrwxrwxrwx 1 user group 11 2010-12-31 19:49 foo -> /etc/passwd
或者使用readlink
命令:
$ readlink foo
/etc/passwd
因此,符号链接 foo
指向路径 /etc/passwd
。
ls
和readlink
都是单独的应用程序。 - Ben Voigtstat
或ls -di
获取inode。 - wjandrea您可以调用readlink(2)
函数,该函数将链接的名称放入缓冲区中。
请注意,结果具有长度(存储在返回值中),而不是以NUL结尾的字符串。因此,如果您要将其用作字符串,请自行添加NUL。
大多数高级/脚本语言(例如perl或python)将提供一个readlink包装器,可将其转换为通常适合该语言的字符串类型,因此您不必担心诸如NUL终止等细节问题。
关于man页面http://man7.org/linux/man-pages/man7/symlink.7.html,软链接是一种常规文件(带有特殊标志),其内容包含指向目标的路径。 因此,您可以将软链接复制到FAT分区并在那里读取其内容。
尝试一下
find . -type l -exec ls -la {} \;
readlink(2)
。 如其中一个答案所述,在某些系统上直接使用的命令是readlink(1)
(GNU和相关系统)。在其他系统 - HP-UX,Solaris,AIX上 - 最接近的方法可能是ls -l
,但请注意,如果链接中的路径名包含换行符或其他奇怪字符,则可能会出现问题。 - Jonathan Leffler