每天插U盘、移动硬盘、机械键盘、游戏手柄,设备一多,手动挂载、备份、识别设备信息真够烦的。与其一次次重复操作,不如写个shell脚本让电脑自己干。
自动识别新插入的外设
把下面这个脚本丢进/usr/local/bin/device-monitor.sh,它会在你插入USB设备时自动弹出设备名和容量。
#!/bin/bash
while true; do
lsusb > /tmp/lsusb.current
if ! diff /tmp/lsusb.previous /tmp/lsusb.current > /dev/null; then
echo "【新设备接入】" $(date)
comm -13 <(sort /tmp/lsusb.previous) <(sort /tmp/lsusb.current)
fi
cp /tmp/lsusb.current /tmp/lsusb.previous
sleep 2
done
自动挂载U盘并备份文件
我常把照片存进U盘带走,但每次插上都得手动创建目录、复制路径、输命令。现在写个脚本,插上就自动备份到本地~/backup_from_usb。
#!/bin/bash
USB_PATH="/media/$USER"
BAK_DIR="$HOME/backup_from_usb"
if [ -d "$USB_PATH" ]; then
for dir in $USB_PATH/*; do
if [ -d "$dir/DCIM" ] || [ -f "$dir/*.jpg" ]; then
mkdir -p "$BAK_DIR"
rsync -av --progress "$dir/" "$BAK_DIR/$(basename $dir)_$(date +%m%d)" &
notify-send "备份完成" "来自 $dir"
fi
fi
break
done
fi
一键检测外设性能
买了个高速U盘,标称读取300MB/s,到底是不是虚标?写个脚本测一下:
#!/bin/bash
DEVICE="/dev/disk/by-id/usb-SanDisk_Extreme_*"
if [ -L "$DEVICE" ]; then
DEV_NAME=$(readlink -f $DEVICE)
echo "开始测试 $DEV_NAME 读取速度..."
sudo hdparm -Tt $DEV_NAME
fi
给机械键盘设置灯光模式(仅限支持hidraw的设备)
有些Linux下没官方驱动的键盘,可以用脚本发原始指令控制灯光。比如通过hidraw接口发送十六进制命令:
#!/bin/bash
# 假设键盘在 hidraw2
echo -ne \x05\x01\x03\x01 | sudo tee /dev/hidraw2 > /dev/null
notify-send "键盘灯光" "切换至呼吸模式"