Answers:
要测试是否连接了特定设备,可以使用grep
该-q
选项来搜索lsusb
或的输出lsblk
,例如
uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
lsblk -f | grep -wq $uuid && echo yes || echo no
devicename="some Inc. Keyboard"
lsusb | grep -q "$devicename" && echo yes || echo no
或搭配if
:
uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
if lsblk -f | grep -wq $uuid; then
echo yes
else
echo no
fi
无论是否安装设备,两者都可以使用。
/dev/disk/
包含以下目录,其中包含指向真实设备的符号链接。该链接是由动态创建和删除的udev
,因此它们始终是最新的:
因此,检查符号链接的存在将使用较少的资源。
这是一个使用磁盘序列号测试磁盘是否存在的示例:
test -e /dev/disk/by-id/wwn-0x5002538d408be9e0 && echo yes || echo no
在备份脚本中,我什至不检查磁盘是否存在,只检查如下mount
命令的结果:
mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1
findfs
为此。您可以按以下方式搜索:
FS标签
findfs LABEL="Ubuntu" &>/dev/null
FS uuid
findfs UUID="f9035fce-b3a1-4aee-80ef-44e432b78fdb" &>/dev/null
GPT标签
findfs PARTLABEL="EFI system partition" &>/dev/null
findfs PARTUUID="85e66d2f-3709-4060-938e-ffe836433cc9" &>/dev/null
搜索区分大小写。如果有多个分区匹配,则仅显示最后一个分区。
lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no
。