2015-03-31 47 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 }' 

它只是一个草图,可能需要/想完善它。