在连接时自动检测USB设备名称

时间:2015-03-31 12:42:49

标签: linux bash cp

当我尝试将目录从Linux主目录复制到USB驱动器(笔式驱动器)时,在以下命令cp -r /home/directoryname /media/usbname(pendrivename)的情况下,它正常工作。

但我正在查看命令,复制目录而没有给出" usbname(pendrivename)"

2 个答案:

答案 0 :(得分:0)

我不确定我是否了解您的需求,但是如果我有一个这样的脚本,那么如果您的USB驱动器始终使用相同的标签进行监视,则应该可以解决这个问题:

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

如果您将脚本保存为~/cpusb.sh,则可以执行以下操作:

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

然后根据需要使用cpusb

答案 1 :(得分: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 }'

这只是一个草图,你可能需要/想要改进它。