符号链接是指向另一个文件的 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 命令可以帮助你摆脱损坏的符号链接,或者提醒你没有你可能仍然需要的文件。


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. java注释中添加删除线_如何在Word中添加和删除注释

    java注释中添加删除线 Leaving comments in a Word document is a good way to leave feedback on a piece you're r ...

  9. centos 获取硬件序列号_如何在 Linux 上查找硬件规格

    在 Linux 系统上有许多工具可用于查找硬件规格. -- Sk(作者) 在 Linux 系统上有许多工具可用于查找硬件规格.在这里,我列出了四种最常用的工具,可以获取 Linux 系统的几乎所有硬件 ...

最新文章

  1. 解决烦人的img与input不能水平对齐的问题
  2. unable to get repr for class ‘torch.tensor‘
  3. oracle中的查询语句(关于出库入库信息表,明细表,把捆包箱表,单位信息表的集中查询)...
  4. Java获取近七天的数据条数,及页面实现折线图(附前后端代码)
  5. 2021CVPR冠军图像分割算法全解密
  6. 小米主办HBaseCon亚洲峰会,打造世界一流的“工程师理想乐园”
  7. 安装TensorFlow中遇到的问题(汇总)
  8. 显示器最大分辨率测试软件,液晶显示器分辨率快速设置工具
  9. 使用非参数统计检验进行分析的指南
  10. 【问】存货盘点单中的数量在盘点报表和盘点差异处理中看不到
  11. 快速查询中通速递物流,查看未签收单号的最后站点
  12. jQuery之动画的淡入淡出效果
  13. VMware Workstation 三种网络连接配置详解
  14. (转) Occlusion Culling(遮挡剔除)
  15. iPhone7黔驴技穷,Moto Z另辟蹊径,谁才能引领行业创新?
  16. Arduino造轮子—FlashSRAM优化代码
  17. python爬取论文全文数据_Python爬取微信公众号历史文章进行数据分析
  18. ggridges包—峰峦图详细介绍
  19. 利用 tesseract 自动识别图片中的文字
  20. [cocos2d-x]捕鱼达人炮台射击角度的旋转实现

热门文章

  1. 月份对比_行业洞察 | 10月份行业概览amp;头部广告主盘点
  2. 接口测试实战总结,绝对值得收藏
  3. 计算机图形学是指使用计算机通过,【填空题】计算机图形学是指使用计算机通过()在显示设备上构造出图形来。...
  4. vue 如何调用微信分享_Vue开发 添加微信分享功能(全局分享)
  5. 最短路dijkstra算法详解_图论系列开始填坑--Dijkstra,单源最短路
  6. PAT甲级1004 (DFS,树的父子节点)
  7. 归一化函数mapminmax的讨论
  8. C# button 添加logo
  9. 基于python的音频播放器_基于python实现音乐播放器代码实例
  10. 关于QT中对窗口中某个widget建类