2015-03-31 64 views
-2

當我試圖將目錄從Linux主目錄複製到USB驅動器(筆式驅動器)時,在以下命令cp -r /home/directoryname /media/usbname(pendrivename)的情況下它工作正常。連接時自動檢測USB設備名稱

但我期待的命令,複製目錄與出給「usbname(pendrivename)」

回答

0

不知道我明白你的需求,但如果我有這樣的腳本應該能在您的USB做的伎倆驅動器總是monted同一個標籤:

#!/bin/bash 
cp -r $1 /media/usbname(pendrivename) 

如果保存腳本~/cpusb.sh,你可以這樣做:

chmod cpusb.sh 
echo "alias cpusb=cpusb.sh" >> .bash_aliases 
source 

然後用cpusb當你想要。

+0

in shell腳本cp -r $ 1/media/usbname(pendrivename)它的工作適用於任何pendrive或只有特定的一個。 – nalini 2015-03-31 12:57:31

+0

你必須用USB設備的標籤替換'usbname(pendrivename)'。如果它是經典的分配,標籤是固定的。您可以使用像gparted這樣的工具修改它。 – 2015-03-31 13:00:44

+0

可以請你清楚一點, – nalini 2015-03-31 13:03:49

0

我想我會用mount文本推斷使用sedawk連接的USB的目錄。

甚至可以在沒有任何連接時保存mount的結果,並在連接新的USB設備後從mount的結果中「扣除」它。

甚至更​​好,運行腳本之前連接設備:
- 將運行該腳本mount每一秒,並等待結果中的一個變化。
- 當檢測到更改時,新添加的設備就是您的usb。

喜歡的東西:

#!/bin/bash 

mount_old="$(mount)" 
mount_new="${mount_old}" 

while [[ "${mount_new}" == "${mount_old}" ]]; do 
    sleep 1 
    mount_new="$(mount)" 
done 

# getting added line using sort & uniq 
sort <(echo "${mount_old}") <(echo "${mount_new}") | uniq -u | awk '{ print $3 }' 

# another way to achieve this using diff & grep 
# diff <(echo "${mount_old}") <(echo "${mount_new}") | grep ">" | awk '{ print $4 }' 

它只是一個草圖,可能需要/想完善它。