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 中使用符號連結的基礎知識。然後我們建立了一個簡單的指令碼來查詢指定目錄中的符號連結並顯示它們的源和目標位置。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2932972/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 獲取元素在頁面中的座標位置程式碼例項
- javascript獲取連結的絕對地址程式碼例項JavaScript
- javascript如何獲取連結引數程式碼例項JavaScript
- javascript獲取url連結引數例項程式碼JavaScript
- js獲取word文件書籤位置程式碼例項JS
- jquery獲取元素的標籤tagName程式碼例項jQuery
- Bash Shell指令碼中的陣列使用例項指令碼陣列
- React 穿透獲取被高階元件裝飾的目標元件例項React穿透元件
- 《bash shell指令碼程式設計經典例項(第2版)》資源連結清單指令碼程式設計
- js獲取網頁title標題程式碼例項JS網頁
- 符號連結符號
- 獲取iframe標籤的src屬性值程式碼例項
- 連結使用的符號符號
- 根據身份證號碼獲取性別資訊程式碼例項
- Windows 中的硬連結、目錄聯接(軟連結)、符號連結、快捷方式Windows符號
- js獲取當前目錄的絕對路徑程式碼例項JS
- js獲取元素在頁面中的座標程式碼例項JS
- bash 指令碼總結指令碼
- JavaScript獲取星期程式碼例項JavaScript
- input 獲取游標位置與設定游標位置
- jquery獲取指定元素下所有指定子元素的數目程式碼例項jQuery
- js獲取帶#號連結後的引數JS
- shell指令碼之特殊符號總結性梳理指令碼符號
- jquery獲取元素高度程式碼例項jQuery
- js獲取指定單元格的內容程式碼例項例項JS
- jQuery獲取指定的li元素程式碼例項jQuery
- js獲取事件的型別程式碼例項JS事件型別
- javascript獲取元素的順序程式碼例項JavaScript
- jQuery獲取視窗尺寸的例項程式碼jQuery
- js獲取字串中指定位置字元程式碼例項JS字串字元
- js獲取字串指定位置字元效果程式碼例項JS字串字元
- chrome獲取書籤目錄下收藏的所有連結Chrome
- SQL查詢連續號碼段的解法(例項)SQL
- javascript獲取視窗大小例項程式碼JavaScript
- javascript獲取主機域名程式碼例項JavaScript
- js獲取當前月份例項程式碼JS
- js獲取事件源物件程式碼例項JS事件物件
- jquery獲取同輩元素程式碼例項jQuery