• Bash 脚本实例:获取符号链接的目标位置


    我们都熟悉 Linux 中的符号链接,通常称为符号链接或软链接,符号链接是指向任何文件系统中的另一个文件或目录的特定文件。

    本文将介绍 Linux 中符号链接的基础知识,并创建一个简单的 bash 脚本来获取符号链接的目标位置。

    符号链接的类型

    主要有两种类型的符号链接,即:
    硬链接:硬链接是指向文件系统中的文件或目录的直接指针。硬链接只能在与目标文件相同的文件系统中创建。

    软连接:软链接是文件或目录的间接快捷方式,可以存在于文件系统中的任何位置。软链接可以指向不同文件系统中的文件。

    如何创建符号链接

    要在 Linux 中创建符号链接,我们使用 ln 命令。执行不带选项的命令会创建指向指定目标文件的硬链接。

    ln 命令的一般语法是:
    ln [OPTIONS]
    如要创建软链接,需要添加 -s 选项:
    ln -s [OPTION]

    实例一:创建文件的软连接

    以下命令在我们的主目录中创建指向/var/log/audit/audit.log文件的软链接:
    [root@localhost ~]# ln -s /var/log/audit/audit.log ~/audit.log


    实例二:创建目录的软连接

    以下命令在我们的主目录中创建指向/var/log目录的软链接:
    [root@localhost ~]# ln -s /var/log ~/log


    如何删除符号链接

    要删除符号链接,我们使用命令 unlink 后跟要删除的符号链接的路径。
    [root@localhost ~]# unlink ~/log
    下图可看到,log的快捷方式没有了。


    注意:如果删除目标文件或目录,请记得删除符号链接,因为符号链接不会随着文件的删除而删除。

    如何获取符号链接的目标文件或目录

    每个符号链接都会指向一个目标文件或目录(除非损坏)。要获取符号链接的目标文件/目录,我们使用readlink命令显示符号链接的目标。例如,要获取我们在前面部分中创建的 audit.log 文件的目标,我们可以执行以下操作:
    [root@localhost ~]# readlink ~/audit.log 
    /var/log/audit/audit.log

    获取符号链接的 Bash 脚本

    我们可以创建一个简单的 bash 脚本,该脚本接受路径并列出所有符号链接及其目标文件或目录:
    [root@localhost ~]# vim symlink.sh 
    #!/bin/bash
    read -p "Provide the directory to evaluate: " target_dir
    cd $target_dir
    links=$(find . -maxdepth 1 -type l -ls | awk '{print $11}')
    for link in $links
    do
        echo "$link -> $(readlink $link)"
    done


    该脚本首先询问用户要获取的目录。然后,脚本转到提供的目录并找到目录中的所有符号链接,并将输出传递给awk命令。awk 输出并定位符号链接,并将它们保存到一个名为 links 的变量中。然后我们创建一个循环,抓取links变量中的每个链接,并使用 readlink 命令获取它们的目标位置。最后,显示符号链接和目标目录。下面是一个示例输出:
    [root@localhost ~]# ./symlink.sh 
    Provide the directory to evaluate: /etc
    ./rc.local -> rc.d/rc.local
    ./redhat-release -> centos-release
    ./system-release -> centos-release
    ./init.d -> rc.d/init.d
    ./rc0.d -> rc.d/rc0.d
    ./rc1.d -> rc.d/rc1.d
    ./rc2.d -> rc.d/rc2.d
    ./rc3.d -> rc.d/rc3.d
    ./rc4.d -> rc.d/rc4.d
    ./rc5.d -> rc.d/rc5.d
    ./rc6.d -> rc.d/rc6.d
    ./localtime -> ../usr/share/zoneinfo/Asia/Shanghai
    ./mtab -> ../proc/self/mounts
    ./yum.conf -> dnf/dnf.conf
    ./grub2.cfg -> ../boot/grub2/grub.cfg


    总结

    本文介绍了如何在 Linux 中使用符号链接的基础知识。然后我们创建了一个简单的脚本来查找指定目录中的符号链接并显示它们的源和目标位置。

    转自https://mp.weixin.qq.com/s/pFTlYpIguv-4bSkbLAHWkw

  • 相关阅读:
    Selenium IDE
    selenium简介
    Java程序要操作数据库,一定要使用JDBC技术吗?
    JDBC几个接口分区叫什么?它们分别有什么用?
    JDBC的全称是什么?
    什么时候使用session?什么时候使用application?
    内置对象session和application的作用是什么?
    修改表单中为什么要使用隐藏域?
    如何创建一个不能修改的属性?
    如何修改属性?
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/16420991.html
Copyright © 2020-2023  润新知