Redian新闻
>
Bash 脚本实例:获取符号链接的目标位置

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 中使用符号链接的基础知识。然后我们创建了一个简单的脚本来查找指定目录中的符号链接并显示它们的源和目标位置。

END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

刘遄老师QQ:5604241

Linux技术交流群:3762708

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
澳洲女子在超市小票上发现神秘符号,竟然还能靠它省下一笔钱!男士彩妆品牌言执:获数百万投资,年营收超300万,为Z世代男性提供性价比化妆方案“显然,中国已经成为北约的目标”新版ArcGIS符号库简直太好用啦!“孩子的上课时间怎么就不能改了?!” 一个自恋型人格障碍的实例剧本杀品牌有马探案:获泡泡玛特天使投资方金慧丰投资,一年开店超50家,用数字化和IP思维做标准化门店我们对面山脚下的酒庄, 买了一箱老板娘饶我一瓶对话魔视智能:获大陆集团数亿元战略投资,这家自动驾驶公司凭什么? | 甲子光年Linux —— 用于自动监控磁盘使用情况的 Shell 脚本女儿女婿回家来(一)莫迪宣布“印度成为发达国家”的目标,要直接一步登天?哈工大丁效:基于神经符号的认知推理方法80后作家创立剧本杀品牌鹿世界:获千万融资,上线数月集合5000个创作者,如何做好剧本杀上游产业十年文革''停工停产停学''了吗援沪运输中,用“车头”与“挂厢”连接的路顿涅茨克军方:获得重要情报,加退役司令可能藏在亚速钢铁厂一日一诗:“天空下,七彩的梦在飞/ 蝴蝶引诱满山遍野的黄芽,鼓着眼睛”||李治:春天的符号(读诗版)多模式镇痛,我们的目标不只是镇痛[汽车] 三十岁的目标实现了三分之二,记一台Cayman987.2S复旦教授的EDA创业路:获华为投资,首款产品今年发布以色列开发出一种人工智能穿墙探测器,可用AI自动识别墙背后的目标社区火锅牛爽爽:获梅花创投等近千万投资,单店日营收2万元,如何做好社区两公里市场Linux 中 ss 命令的使用实例抗癌新药里的“双面胶”:获批儿童肿瘤适应症十二种不常见密码及部分实现脚本每日的菌:获数千万融资,面市半年GMV超2000万,以“东方之菌”进军千亿益生菌市场静脉腔内闭合系统获NMPA三类证,雷盛医疗的目标市场不止静脉曲张卢卡申科:这就是美国的目标,先解决俄罗斯,然后是中国美安雷克斯:获FDA、CE认证,自平衡外骨骼康复机器人即将切入中国市场活动预告 | 科创系列活动:楼宇清洁的数字化转型应用实例童年山村乐园第11期读书会预告 | 英文学术文献的阅读与分析:实例研讨美国成立打击虚假信息部门,却成为虚假信息的目标史无前例:这周日,纽约亚裔万人上街!芭蕾舞蹈演员的内裤
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。