符号链接是指向另一个文件的 Linux 文件。如果删除了被引用的文件,符号链接会保留,但不会显示有问题,除非你尝试使用它。https://linux.cn/article-12298-1.html作者:Sandra Henry-stocker译者:geekpi

符号链接是指向另一个文件的 Linux 文件。如果删除了被引用的文件,符号链接会保留,但不会显示有问题,除非你尝试使用它。以下是查找和删除指向文件已被删除的符号链接的简单方法。

符号链接(symbolic link)在 Linux 系统上扮演了非常有用的角色。它们可以帮助你记住重要文件在系统上的位置,使你更容易访问这些文件,并让你不必为了更方便访问大文件而复制它们,从而节省了大量的空间。

什么是符号链接?

通常称它们为“符号链接”或“软链接”,符号链接是非常小的文件。实际上,符号链接真正包含的是它指向的文件的名称,通常包含路径(相对于当前位置或绝对路径)。如果有个名为 ref1 的文件指向名为 /apps/refs/ref-2020 的文件,那么 ref1 的长度将为 19 个字符,即使 ref-202 文件有 2TB。如果指向 ./ref-2020,那么长度仅为 10 个字符。如果指向 ref-2020,那么只有 8 个字节。

如果你执行 vi ref1 之类的命令(其中 ref1 是符号链接的名称),你将编辑 ref1 指向的文件,而不是符号链接本身的内容。Linux 系统知道如何使用符号链接,并且可以做正确的事。同样,如果你使用诸如 cat、more、head 或 tail 之类的命令,那么将查看引用文件的内容。

另一方面,如果删除符号链接,你将删除该链接,而不是引用的文件。再说一次,Linux 知道怎么做。符号链接使得使用和共享文件更加容易,仅此而已。

符号链接损坏时

当一个符号链接所指向的文件从系统中删除或重新命名时,符号链接将不再起作用。符号链接只不过是存储在某个特定目录中的引用而已,它不会随着指向它的文件发生变化而更新或删除。它一直指向被引用的文件,即使这个文件早已消失。

如果你尝试使用指向一个不存在的文件的符号链接,那么将出现如下错误:

$ tail whassuptail: cannot open 'whassup' for reading: No such file or directory

如果你尝试访问指向自身的符号链接(是的,奇怪的事情发生了),你将看到类似以下的内容:

$ cat loopycat: loopy: Too many levels of symbolic links$ ls -l loopylrwxrwxrwx 1 shs shs 5 May 28 18:07 loopy -> loopy

而且,如果(上面的)长列表的第一个字母没有引起你的注意,这表示该文件是符号链接。rwxrwxrwx 权限是标准权限,并不反映符号链接指向的文件的权限。

查找损坏的符号链接

find 命令有一个选项,能让你找到指向不再存在的文件的符号链接。此命令列出当前目录中的符号链接:

$ find . -type l

l (小写字母 L)告诉 find 命令查找符号链接。

另一方面,下面的命令在当前目录中查找指向不存在的文件的符号链接:

$ find . -xtype l

为了避免在该命令尝试查找你无权检查的文件或目录时发生错误,你可以将所有错误输出到 /dev/null,如下所示:

$ find . -xtype l 2>/dev/null

你也可以使用此命令找到损坏的符号链接。它比前面的更长,但做的是同样的事情:

$ find . -type l ! -exec test -e {} \; -print 2>/dev/null

如何处理损坏的符号链接

除非你知道符号链接引用的文件会被替换,否则最好的方法是直接删除损坏的链接。实际上,如果需要,你可以使用一条命令查找并删除损坏的符号链接,如:

$ find . -xtype l 2>/dev/null -exec rm {} \;

该命令的 rm {} 部分会变成“删除文件”的命令

如果你想将符号链接与不同的文件相关联,你必须先删除该符号链接,然后重新创建它,使其指向新文件。这是一个例子:

$ rm ref1$ ln -s /apps/data/newfile ref1

总结

符号链接使引用的文件更易于查找和使用,但有时它会比那些宣传去年已经关闭的餐馆的路标还过分。find 命令可以帮助你摆脱损坏的符号链接,或者提醒你没有你可能仍然需要的文件。


via: https://www.networkworld.com/article/3546252/how-to-find-and-remove-broken-symlinks-on-linux.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

linux 查找_如何在 Linux 上查找和删除损坏的符号链接 | Linux 中国相关推荐

  1. centos7删除符号链接_如何在 Linux 上查找和删除损坏的符号链接 | Linux 中国

    符号链接是指向另一个文件的 Linux 文件.如果删除了被引用的文件,符号链接会保留,但不会显示有问题,除非你尝试使用它. 来源:https://linux.cn/article-12298-1.ht ...

  2. 如何在前端删除项目中的文件_如何在macOS上恢复已删除的文件

    有时候不小心删除了我们不打算删除的MacBook上的文件.在MacBook上恢复永久删除的文件非常困难,但这并非不可能.在本文中,我们将指导您如何恢复MacBook上最近恢复的文件或永久删除的文件.从 ...

  3. 如何将网站前端如何添加登录密码访问_如何在Mac上查找保存的密码的所有信息...

    Mac上所有已保存的密码均受到保护和保护.没有钥匙串,管理员密码或Touch ID,就无法访问它们.虽然"钥匙串访问"是在Mac上查找或查看保存的密码的一种方法,但是在Mac上使用 ...

  4. mac按文件名查找文件_如何在Mac上查找和删除大文件

    mac按文件名查找文件 Freeing up disk space on a full hard drive can be difficult, especially when it's full o ...

  5. mac 字体微软雅黑字体_如何在Mac上验证和删除字体

    mac 字体微软雅黑字体 The humble font isn't as humble as you might think, especially on a Mac. Fonts are more ...

  6. linux时间同步_如何在Ubuntu上使用FreeFileSync同步文件

    FreeFileSync可以在Windows,Linux,macOS上面运行.本文使用操作系统是Ubuntu18.04. 安装FreeFileSync 下载程序,并解压. bob@ubuntu-18- ...

  7. mac删除文件恢复_如何在Mac上恢复已删除的文件

    mac删除文件恢复 Nearly everyone has accidentally deleted a file before. Whether it's family pictures or im ...

  8. dd-wrt 去广告_如何在DD-WRT上使用Pixelserv删除广告

    dd-wrt 去广告 There are numerous ways to block advertisements in your browser, but what if you could bl ...

  9. 如何在 Win10 上从此电脑删除“3D对象”

    如何在 Win10 上从此电脑删除"3D对象" | 野生程序猴子 Windows 10 的 "秋季创作者更新" 将 3D 对象 文件夹添加到了 此电脑 里,甚至 ...

最新文章

  1. mysql map 键值对获取_mysql map_get function,用于解析map结构数据,根据key返回相对应value...
  2. GPU Gems1 - 21 实时辉光(Real-Time Glow)
  3. wg运行内存装MySQL8_windows-安装mysql8的坑
  4. partial、struct、interface与C#和CLR的关系
  5. Python字符串中常用的方法
  6. 利用四阶龙格库塔法(Runge-Kutta methods)求解常微分方程并用其迭代式用MATLAB绘制分叉混沌图
  7. 2.1 matlab特殊矩阵(零矩阵、幺矩阵、单位矩阵、魔方矩阵、范德蒙德矩阵和希尔伯特矩阵)
  8. 银河麒麟v10sp1桌面安装远程控制工具todesk
  9. 【快速上手教程2】疯壳·开源编队无人机-硬件资源简介
  10. 各种统计检验及r语言实现
  11. Restricted RPS
  12. Error: datadir must be specified
  13. Python爬取豆瓣电影top250(附全部源码)
  14. 计算机的计算密度相关,专家人才库数据----中国科学院计算技术研究所
  15. Oracle、MySQL、SqlServer、PG数据库merge into语法实现总结
  16. 如何删除360奇安信软件
  17. 【学习】如何制作手机端html模板(REM的实际应用)
  18. Linux安装和使用FTP服务Serv-U
  19. css如何载入多种字体,在css中包含多种字体的正确方法
  20. 麻将打牌有三不打,记住了就不会亏!

热门文章

  1. mysql同步binlog_利用MySQL的Binlog实现数据同步与订阅(下)
  2. Python 计算程序运行时间
  3. PyTorch 可视化工具 TensorboardX
  4. 2.10 局部最优的问题-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  5. SOPC第一课 建立QSYS系统
  6. 【arduino】arduino代码运行时间测试函数,代码性能运行时间测试方法
  7. 代码规范之eslint+prettier实践
  8. 安全操作中心之于SDN
  9. JQuery 获取节点
  10. 【BOOM】一款有趣的Javascript动画效果