我在用狂欢Ubuntu 中的 shell 精确。
我偏爱符号链接在狂欢即使硬链接会更有意义,因为它们更容易被识别为ls相比之下,对于硬链接我必须直观地比较索引节点数字。与输出相比,这更麻烦ls软链接显示目标为“-->”,并且可以应用不同的配色方案。有没有办法ls从视觉上区分硬链接和“普通文件”?例如,也许可以通过对引用计数大于 1 的文件进行不同的着色?
我理解这个问题的表述不正确,因为从概念上讲,硬链接只是 inode 的另一个名称,因此与“普通文件”没有区别,并且没有像符号链接那样的目标概念,但你明白我的用例。
答案1
ls -l
输出显示权限和所有者之间的文件系统条目的硬链接数:
$ mkdir foo
$ ls -ld foo
drwxr-xr-x 2 danielbeck staff 68 15 Aug 18:49 foo
2
默认情况下,它用于空目录,foo/.
和foo
。每个子目录都会为其添加一个..
。除非您使用的是 OS X 并且精神状态值得怀疑,否则这是您将获得的唯一目录硬链接。
当然,文件只显示“真正的”硬链接,因此任何内容都1
表明某处存在硬链接:
$ touch bar
$ ln bar baz
$ ls -l bar baz
-rw-r--r-- 2 danielbeck staff 0 15 Aug 18:52 bar
-rw-r--r-- 2 danielbeck staff 0 15 Aug 18:52 baz
我的(BSD/OS X)ls
没有与硬链接相关的选项,但你可以编写自己的 shell 函数,如下所示,只打印硬链接数,否则ls -F1
(如果ls -l
太麻烦):
function lss {
OLDIFS="$IFS"
IFS=$'\n'
for line in $( ls -d1 $@ )
do stat -f '%N%T (%l)' "$line"
done
IFS="$OLDIFS"
}
两个硬链接和一个不相关的文件的输出qux
:
$ lss bar baz qux
bar (2)
baz (2)
qux (1)