如何判断文件夹是否实际上是符号链接以及如果它损坏了如何修复它?

如何判断文件夹是否实际上是符号链接以及如果它损坏了如何修复它?

如何判断 Linux 中是否有符号链接、某种快捷方式或文件夹?请参阅下面的屏幕截图。

Linux shell 中的符号链接

正如您所看到的,该ls命令列出了一些对象,其中一些对象为深蓝色,而另一些对象为浅蓝色(青色)。这些青色物体是什么?这些是实际的符号链接吗?

正如你所看到的,我无法cd访问名为 hdd 的硬盘。

root@dm500hd:/# cd hdd
-sh: cd: can't cd to hdd

我认为它必须重定向到/media/hdd,并且我注意到 hdd 文件夹丢失了。

有没有办法来解决这个问题?

更新:这是ls -al命令的结果。

Linux shell 2中的符号链接

正如你所看到的,hdd -> /media/hdd它是红色的。这是否意味着它已损坏或自动安装(即连接物理硬盘时)?

更新:这是grep media /etc/auto*命令的结果。

Linux shell 3 中的符号链接

这些/etc/auto.master:/media/net/etc/auto.network条目起什么作用?

这是ls -Fal /media命令的结果。

Linux shell 4 中的符号链接

这有什么帮助吗?...

以下是statfile命令的结果,以及 /usr 和 /bin 的列表。

Linux shell 5 中的符号链接

这对我有什么帮助吗?...它对你有帮助吗?...

另一方面,您应该知道这是一个带有 BusyBox 的基于 Linux 的 STB,它是一个嵌入式系统。因此,并非所有命令都受支持。

更新:最后一个屏幕截图,显示了 /sbin 和 /usr/sbin 中的文件和支持的命令。

Linux shell 6 中的符号链接

更新:新分享已添加...

我现在已删除该旧共享并重新创建了一个与以前同名的共享,现在还添加了第二个共享。所以现在我有两个了。

SHARES
remote share   local share
mydream        dream1
mydream2       dream2

LOCATIONS
remote        local
C:\mydream    /media/net/dream1
C:\mydream2   /media/net/dream2

录音放置在 /media/net/dream1/movie 中。

另外,对于共享 dream2,我选择不在安装管理器中将其安装为 HDD 替代品,因为我怀疑不可能有多个 HDD 充当 HDD。会在哪里记录呢?到两个地点?数据速率加倍?...我认为这是不可能的。

因此,由于这个原因,dream2 共享没有名为 movie 的子文件夹。只有在创建时指定为 HDD 替换的文件夹才会获得电影子文件夹。

如果我cd从 root 硬盘驱动器,它会转到/media/net/dream1.如果我(cd父母..)它会回到root (/).

在 root 处 ls -al给出hdd -> media/hdd. ls -al hdd给出hdd -> media/hdd. ls -al media给出/media/net/dream1.

另外,如果我cd还有/media另一个hdd符号链接。我以前没有注意到。我认为这是在安装共享时自动创建的。如果我cd转到这个硬盘,它就会转到/media/net/dream1.

一个符号链接hdd(/hdd)指向另一个hdd符号链接(/media/hdd),而另一个符号链接又指向共享文件夹(/media/net/dream1)?.....我头晕了...

在 Enigma2 图像的 3.2.3 版本或至少 3.2.0 版本之前不是这样的。

编辑:通过将第二个共享设置为 HDD 替代品,它将成为用于录制的活动共享。同时,之前设置为充当 HDD 替换的共享不再处于活动状态,即使它仍设置为“yes”(充当 HDD 替换)。

如果dream1首先用作HDD替换(选择“是”作为替换),然后将dream2设置为用作HDD替换,则它成为用于录制的新共享。我仍然可以查看和查看 dream1 中存储的视频文件,但无法再录制到其中。如果我想返回使用dream1进行录制,我首先必须将dream2设置为“no”(停止充当硬盘替代品),然后将dream1重置为“yes”。

所以不,它不能同时记录到两个共享。其中一个必须离开。所以要么是梦想1,要么是梦想2,而不是两者兼而有之。尽管我应该提到,如果它们都在同一个转发器上,则可以录制多个服务(电视频道),否则您会收到“没有免费调谐器”消息。这是一款只有一个调谐器的机顶盒。

答案1

您可以使用 file、stat 或 ls。

文件:

file 命令用于根据文件类型(符号链接、目录、设备)或内容(文本、gzip、图像、tar、...,无论其扩展名如何)对文件进行分类:

$ 文件 /dev/stdout
/dev/stdout:到“/proc/self/fd/1”的符号链接
$ 文件 /proc/self/fd/1
/proc/self/fd/1:到“/dev/pts/0”的符号链接
$ 文件 /dev/pts/0
/dev/pts/0:特殊字符(136/0)
$ 文件 /etc/passwd
/etc/passwd:ASCII 文本

LS:

$ ls -al /dev/stdout
lrwxrwxrwx 1 root root 15 Jan 27 07:55 /dev/stdout -> /proc/self/fd/1

统计:

stat 命令打印出文件元数据,如权限、大小、块数等等......

$ 统计/dev/stdout
  文件:'/dev/stdout' -> '/proc/self/fd/1'
  大小:15 块:0 IO 块:4096 符号链接
设备:5h/5d 索引节点:1212 链接:1
访问:(0777/lrwxrwxrwx) Uid:( 0/ root) Gid:( 0/ root)
访问时间:2014-01-27 11:22:47.971187828 -0200
修改: 2014-01-27 07:55:13.996981285 -0200
更改: 2014-01-27 07:55:13.996981285 -0200
 出生:-

答案2

重击:

if [[ -h dirname ]]; then
    echo "it's a symbolic link"
    if ! stat $(readlink dirname) &>/dev/null; then
        echo "link target does not exist"
    fi
fi

答案3

查看给定文件是什么类型的实体的最简单方法是使用该file命令。它具有清晰、清晰的输出,无需您记住ls分类器标记是什么,也无需依赖可能因用户和机器而异的彩色输出。例如:

mail ~ # file /test
/test: broken symbolic link to `/nonexist'
mail ~ # file /dev
/dev: directory
mail ~ # file /dev/fd
/dev/fd: symbolic link to `/proc/self/fd'

如果您发现自己的系统没有,file您可以使用该stat命令,它将告诉您它是哪种文件条目以及它指向哪里。要找出链接是否断开,您需要运行stat -L取消引用链接,如果链接断开,它将给出错误。

至于问题的第二部分,该media目录通常由某种自动安装程序管理。该/media/hdd条目可能被您的系统用于 USB 海量存储设备,甚至可能正在等待正确类型的硬盘驱动器(ATA、SCSI、Xen 块设备)。损坏的链接不会造成任何损害,除非程序尝试使用它们,并且媒体链接确实是为了您的方便。您可以安全地保留该/hdd链接或根据需要将其删除。

答案4

  1. 是的,青色是符号链接
  2. 要查看它们指向的位置:ls -Fal
  3. 输出ls -Fal /media

这可能是某种自动挂载点。

grep media /etc/auto*可能会产生轰动。

相关内容