Bash 指令碼例項:獲取符號連結的目標位置
導讀 | 我們都熟悉 中的符號連結,通常稱為符號連結或軟連結,符號連結是指向任何檔案系統中的另一個檔案或目錄的特定檔案。 |
本文將介紹 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 指令碼,該指令碼接受路徑並列出所有符號連結及其目標檔案或目錄:
[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 中使用符號連結的基礎知識。然後我們建立了一個簡單的指令碼來查詢指定目錄中的符號連結並顯示它們的源和目標位置。
本文原創地址: l
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2784528/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Bash Shell指令碼中的陣列使用例項指令碼陣列
- 《bash shell指令碼程式設計經典例項(第2版)》資源連結清單指令碼程式設計
- React 穿透獲取被高階元件裝飾的目標元件例項React穿透元件
- 符號連結符號
- 連結使用的符號符號
- Windows 中的硬連結、目錄聯接(軟連結)、符號連結、快捷方式Windows符號
- input 獲取游標位置與設定游標位置
- js獲取帶#號連結後的引數JS
- React獲取元件例項React元件
- 127 PHP獲取網頁標題的3種實現方法程式碼例項PHP網頁
- chrome獲取書籤目錄下收藏的所有連結Chrome
- 機械硬碟加速原理探究,Windows中目錄連結和符號連結的淺顯區別硬碟Windows符號
- 獲取當前Tomcat例項的埠Tomcat
- Bash指令碼指令碼
- python 爬蟲之獲取標題和連結Python爬蟲
- Bash 指令碼:`(反引號)運算子和 $()的使用方式指令碼
- 獲取倒數第幾個元素程式碼例項
- Nacos - 客戶端例項列表獲取客戶端
- 對比分析Java反射獲取例項的速度Java反射
- 獲取支付連結轉化為二維碼
- Bash 常用指令碼片段指令碼
- Bash指令碼debug攻略指令碼
- Bash 指令碼簡介指令碼
- .NET控制檯獲取依賴注入例項依賴注入
- Java 獲取Excel中圖片所在的行、列座標位置JavaExcel
- Java 獲取Word中的標題大綱(目錄)Java
- 百度地圖:根據位置獲取座標地圖
- Java 獲取Excel分頁座標位置(單元格)JavaExcel
- 獲取位置資訊
- Selenium 獲取複製後的連結
- android 獲取手機號碼Android
- jenkins pipline指令碼 獲取git分支Jenkins指令碼Git
- 線上直播原始碼,js獲取捲軸的位置原始碼JS
- 直播app原始碼,uniapp獲取當前位置APP原始碼
- 教你用vbs指令碼獲取網路卡MAC,CPUID,硬碟序列號的實現程式碼指令碼MacUI硬碟
- 如何使用 Bash 指令碼從 SAR 報告中獲取 CPU 和記憶體使用情況指令碼記憶體
- uniapp微信小程式獲取手機號 位置資訊APP微信小程式
- 用 js 獲取頁面元素的位置圖文總結JS