linux 查找_如何在 Linux 上查找和删除损坏的符号链接 | Linux 中国
符号链接是指向另一个文件的 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 whassup
tail: cannot open 'whassup' for reading: No such file or directory
如果你尝试访问指向自身的符号链接(是的,奇怪的事情发生了),你将看到类似以下的内容:
$ cat loopy
cat: loopy: Too many levels of symbolic links
$ ls -l loopy
lrwxrwxrwx 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 中国相关推荐
- centos7删除符号链接_如何在 Linux 上查找和删除损坏的符号链接 | Linux 中国
符号链接是指向另一个文件的 Linux 文件.如果删除了被引用的文件,符号链接会保留,但不会显示有问题,除非你尝试使用它. 来源:https://linux.cn/article-12298-1.ht ...
- 如何在前端删除项目中的文件_如何在macOS上恢复已删除的文件
有时候不小心删除了我们不打算删除的MacBook上的文件.在MacBook上恢复永久删除的文件非常困难,但这并非不可能.在本文中,我们将指导您如何恢复MacBook上最近恢复的文件或永久删除的文件.从 ...
- 如何将网站前端如何添加登录密码访问_如何在Mac上查找保存的密码的所有信息...
Mac上所有已保存的密码均受到保护和保护.没有钥匙串,管理员密码或Touch ID,就无法访问它们.虽然"钥匙串访问"是在Mac上查找或查看保存的密码的一种方法,但是在Mac上使用 ...
- mac按文件名查找文件_如何在Mac上查找和删除大文件
mac按文件名查找文件 Freeing up disk space on a full hard drive can be difficult, especially when it's full o ...
- mac 字体微软雅黑字体_如何在Mac上验证和删除字体
mac 字体微软雅黑字体 The humble font isn't as humble as you might think, especially on a Mac. Fonts are more ...
- linux时间同步_如何在Ubuntu上使用FreeFileSync同步文件
FreeFileSync可以在Windows,Linux,macOS上面运行.本文使用操作系统是Ubuntu18.04. 安装FreeFileSync 下载程序,并解压. bob@ubuntu-18- ...
- mac删除文件恢复_如何在Mac上恢复已删除的文件
mac删除文件恢复 Nearly everyone has accidentally deleted a file before. Whether it's family pictures or im ...
- dd-wrt 去广告_如何在DD-WRT上使用Pixelserv删除广告
dd-wrt 去广告 There are numerous ways to block advertisements in your browser, but what if you could bl ...
- 如何在 Win10 上从此电脑删除“3D对象”
如何在 Win10 上从此电脑删除"3D对象" | 野生程序猴子 Windows 10 的 "秋季创作者更新" 将 3D 对象 文件夹添加到了 此电脑 里,甚至 ...
最新文章
- mysql map 键值对获取_mysql map_get function,用于解析map结构数据,根据key返回相对应value...
- GPU Gems1 - 21 实时辉光(Real-Time Glow)
- wg运行内存装MySQL8_windows-安装mysql8的坑
- partial、struct、interface与C#和CLR的关系
- Python字符串中常用的方法
- 利用四阶龙格库塔法(Runge-Kutta methods)求解常微分方程并用其迭代式用MATLAB绘制分叉混沌图
- 2.1 matlab特殊矩阵(零矩阵、幺矩阵、单位矩阵、魔方矩阵、范德蒙德矩阵和希尔伯特矩阵)
- 银河麒麟v10sp1桌面安装远程控制工具todesk
- 【快速上手教程2】疯壳·开源编队无人机-硬件资源简介
- 各种统计检验及r语言实现
- Restricted RPS
- Error: datadir must be specified
- Python爬取豆瓣电影top250(附全部源码)
- 计算机的计算密度相关,专家人才库数据----中国科学院计算技术研究所
- Oracle、MySQL、SqlServer、PG数据库merge into语法实现总结
- 如何删除360奇安信软件
- 【学习】如何制作手机端html模板(REM的实际应用)
- Linux安装和使用FTP服务Serv-U
- css如何载入多种字体,在css中包含多种字体的正确方法
- 麻将打牌有三不打,记住了就不会亏!