如何让 ls 警告我有关父目录是符号链接的信息

如何让 ls 警告我有关父目录是符号链接的信息

我刚刚发现了一个场景,我(或者刚接触 Linux 的人)可能会意外地删除 rm 文件,因为用户认为它是重复的文件。假设我有这两个二进制文件:

[xiaobai@xiaobai note]$ ls -larthi /bin/seltr2
1054051 -rwxrwxrwx. 1 root root 3.4K Oct 30 22:54 /bin/seltr2*
[xiaobai@xiaobai note]$ ls -larthi /usr/bin/seltr2
1054051 -rwxrwxrwx. 1 root root 3.4K Oct 30 22:54 /usr/bin/seltr2*

通常我不会看 inode 是否相同,我只看右手边有-> 标志或不。因此,如果 /bin 是 /usr/bin 的符号链接,就会出现问题:

[xiaobai@xiaobai note]$ ls -larthi /bin
16 lrwxrwxrwx. 1 root root 7 Nov 18  2014 /bin -> usr/bin/

因此,如果用户认为该文件不是符号链接并且没有什么不同,用户可能会 rm 它:

[xiaobai@xiaobai note]$ sudo rm /bin/seltr2

最后意识到 /usr/bin/seltr2 是同一个文件并请求救援:

[xiaobai@xiaobai note]$ ls /usr/bin/seltr2
/home/xiaobai/ls: cannot access /usr/bin/seltr2: No such file or directory

那么有没有什么简单的方法ls 考虑到父目录是一个符号链接,例如:

[xiaobai@xiaobai note]$ ls -larthi /bin/seltr2
1054051 -rwxrwxrwx. 1 root root 3.4K Oct 30 22:54 /bin/seltr2* -> /usr/bin/seltr2*

我并不总是查看索引节点号。有没有更好的方法来避免这种潜在的错误?

答案1

同意没有root权限的普通用户。

感谢您的评论 - 现在我明白了这个问题 - 我重新编辑了这篇文章

root@host:~# ls -latr /bin/test-dir
total 8
drwxr-xr-x 3 root root 4096 Nov  4 12:01 ..
-rw-r--r-- 1 root root    0 Nov  4 12:02 testfile
drwxr-xr-x 2 root root 4096 Nov  4 12:02 .
root@host:~# ls -latr /usr/bin/test-dir-link
lrwxrwxrwx 1 root root 13 Nov  4 12:03 /usr/bin/test-dir-link -> /bin/test-dir
root@host:~# rm /usr/bin/test-dir-link
root@host:~# ls -latr /bin/test-dir
total 8
drwxr-xr-x 3 root root 4096 Nov  4 12:01 ..
-rw-r--r-- 1 root root    0 Nov  4 12:02 testfile
drwxr-xr-x 2 root root 4096 Nov  4 12:02 .
root@host:~# ls -latr /usr/bin/test-dir-link
ls: cannot access /usr/bin/test-dir-link: No such file or directory

正如您在上面看到的 - 它只删除了“符号链接”,但没有删除“目标”。

此外,您的文件中似乎存在拼写错误 -你的符号链接指向“usr/bin”,但它应该是“/usr/bin”。

希望这有道理吗?

相关内容