2011-12-27 12 views
0

我知道如何列出裝入的目錄,並知道如何卸載它們。通過「裝載綁定」目錄循環並匹配您想要解除綁定的目錄

作爲帶腳本腳本的noob有一種方法可以通過列表輸出mount ...循環,並使用給定變量(/ some/random/path)匹配每個條目並在該腳本上執行一個命令匹配的條目。

沒有什麼複雜的只是一個簡單的循環,因爲它在哪裏或指針在正確的方向。

注:我擁有的代碼/任務更復雜,所以這只是如何在shell中循環。

在此先感謝。

M.

回答

0

這是一個例子:

for directory in $(mount | awk '{print $1}'); do 
    #whatever with $directory 
done 

(我想你的坐騎命令返回目錄作爲第一項)

1

匹配所有綁定坐騎,我使用awk '$NF ~ /bind/ { print }

該字段通常是第六個(6美元),但這會失敗,並且使用空格裝載,其中NF(字段數)進入播放。由於選項最後列出。

如果您確定不會有空間(這會對其他部分造成一些麻煩),我會使用$6

我不清楚天氣你想要的「源」或「目標」的安裝,取代printprint $<N>其中<N>是你想要的領域。 1的源代碼(如設備或目錄綁定的目錄)和3個目標 - 但正如我所說,如果目標名稱中有空格,這將會很麻煩。

我想你應該能夠解析/etc/mtab。使用並假設你想要的目標名稱,沒有討厭的空間,嘗試:

for target in $(awk '$4 ~ /bind/ {print $2}' /etc/mtab); do 
    echo "Doing stuff to $target" 
done 

編輯:可以,當然match ones you want to unbind添加到AWK。 例子:awk '$4 ~ /bind/ && $2 ~ /(dir1|dir2)/ { ...

你說要進行復雜的操作,但是如果你在卸載所有綁定坐騎這fstab中也可有興趣,umount -a -O bind會工作。