最近更新: 2010-04-12

shell script 找尋指定的光碟片放在哪台光碟機

我的電腦上,內接兩台光碟機,偶爾還會接上外部光碟機。有時,則是把光碟片的內容複製到SD記憶卡,插在記憶卡讀卡機內。也就是說,我有多個可抽換式儲存設備。而在採用 udev 管理設備的 Linux 桌面環境中,每當我們把儲存媒介(CD, SD card)放入可抽換式儲存設備後,系統都會在 /meida 配賦一個掛載點。只是掛載點的名稱,預設使用設備的 UUID ,例如 /media/1234abcd 。對人而言,實在不是容易記憶的名稱。當電腦上有多個抽換式儲存設備時,就會帶來一些小小的麻煩。

例如我放入一片 Ubuntu 的安裝光碟片,有時我就會搞不清楚這片光碟片的內容掛載在哪個點下。所以,我就寫了一個 shell script ,到 /media 目錄下幫我找出來。

#!/bin/sh

# scan Ubuntu install CD.

for media in $( ls /media ); do
    #echo "$media"
    disc=/media/$media
    
    if [ -d $disc/dists ]; then
        for release in $( find $disc/dists -name Release ); do
            #Origin: Ubuntu
            #Version: 9.10
            key_origin=`grep "Origin: Ubuntu" ${release}`
            key_label=`grep -P "^Version: \d+\.\d+$" ${release}`

            if [ -n "${key_origin}" ] && [ -n "${key_label}" ]; then
                os_disc=$disc
                break
            fi
        done
    fi

    if [ -n "$os_disc" ]; then
        break
    fi
done

if [ -n "$os_disc" ]; then
    echo "${os_disc} is a Ubuntu install CD"
else
    echo "There is no Ubuntu install CD"
    exit 1
fi

exit 0

先用 ls 列出 /media 下現有的掛載點。用 find 搜尋掛載點下的指定檔案名稱。最後用 grep 找尋文件中是否有符合的識別文字。

樂多舊網址: http://blog.roodo.com/rocksaying/archives/12169181.html