Bash 脚本实例:获取符号链接的目标位置
我们都熟悉 Linux 中的符号链接,通常称为符号链接或软链接,符号链接是指向任何文件系统中的另一个文件或目录的特定文件。
本文将介绍 Linux 中符号链接的基础知识,并创建一个简单的 bash 脚本来获取符号链接的目标位置。
符号链接的类型
如何创建符号链接
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
注意:如果删除目标文件或目录,请记得删除符号链接,因为符号链接不会随着文件的删除而删除。
如何获取符号链接的目标文件或目录
readlink
命令显示符号链接的目标。audit.log
文件的目标,我们可以执行以下操作:[root@localhost ~]# readlink ~/audit.log
/var/log/audit/audit.log
获取符号链接的 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 的变量中。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
总 结
END
官方站点:www.linuxprobe.com
Linux命令大全:www.linuxcool.com
刘遄老师QQ:5604241
Linux技术交流群:3762708
(新群,火热加群中……)
想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!
微信扫码关注该文公众号作者
戳这里提交新闻线索和高质量文章给我们。
来源: qq
点击查看作者最近其他文章