for uuid in /dev/disk/by-uuid/*; do if [[ "$uuid" =~ .*your-UUID-here.* ]]; then echo $(mount | grep "$(readlink -e "$uuid")") ; fi; done
替换your-UUID-here为您的 UUID
更具可读性:
for uuid in /dev/disk/by-uuid/*; do
if [[ "$uuid" =~ .*your-UUID-here.* ]]
then echo $(mount | grep "$(readlink -e "$uuid")")
fi
done
输出示例:
/dev/mmcblk1p2 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
你可以让它检查字符串不为空并回显“mounted”:
for uuid in /dev/disk/by-uuid/*; do if [[ "$uuid" =~ .*your-UUID-here.* ]]; then if [[ $(mount | grep "$(readlink -e "$uuid")") ]]; then echo "mounted"; fi; fi; done
my_uuid=...
while IFS=' ' read -r dev mnt remainder; do
case "$dev" in
/dev/*)
if [ "$dev" -ef "/dev/disk/by-uuid/$my_uuid" ]; then
echo "$my_uuid ($dev) mounted at $mnt"
break
fi;;
esac
done < /proc/mounts
mountpoint=$(lsblk -no MOUNTPOINT "$disk_devname")
if [[ -n "$mountpoint" ]]; then
echo "Disk is mounted at $mountpoint"
else
echo "Disk not mounted"
fi
lsblk
可能有帮助。它可以只打印 UUID 和挂载点,因此,给定 UUID,只需查看挂载点是否为空:所以:
由于
lsblk
可以作用于特定设备,您还可以执行以下操作:使用第一种方法,如果 UUID 不是来自当前连接的磁盘,则不会出现错误。使用第二种方法,如果不存在
lsblk
则出错。/dev/disk/by-uuid/$uuid
如果您只想要一行包含您的 UUID 和挂载点($UUID 代表您的 UUID):
如果未安装,安装点将为空。尝试
lsblk -h
更多选择。用于
awk
打印结果。如果NF
(字段数)大于一,则表示它有一个挂载点:如果您想要详细信息
mount
替换
your-UUID-here
为您的 UUID更具可读性:
输出示例:
你可以让它检查字符串不为空并回显“mounted”:
但其他人提供了更好的方法来做到这一点:)
Ubuntu 使用
UDisks2
守护进程,它轮询有关文件系统的大量信息,我们可以使用udisksctl
和过滤它的输出以找到一种快速而肮脏的方式来查找我们需要的信息:您在上面看到的内容基本上会打印文件系统的 UUID 及其挂载点。通过目视检查,您现在可以确定哪个 UUID 已挂载,哪个未挂载。
我的解决方案
procfs
,因此没有奇怪的命令输出格式问题,基于我收到的关于这个问题的出色答案,我意识到使用设备名称要容易得多。从 UUID 获取设备名称:
这意味着我可以通过 grepping 的输出快速推断它是否已安装
df
:或者通过使用Muru's answer中的代码,它还有一个额外的好处是可以告诉我驱动器的安装位置:
您可以使用该
df
命令查看已挂载的文件系统及其挂载点。这是我机器上的一个示例...sdb3
我安装了另一个系统的分区未安装,因此未列出(重新标记分区,这就是显示名称而不是 UUID 的原因):您可以使用
如果输出为空,则没有
uuid
挂载该分区,否则将显示设备名、挂载点、文件系统和挂载选项。当然,您必须替换
uuid
为您要测试的实际 UUID。如果挂载分区中有名为“
the_UUID
”的链接。/dev/disk/by-uuid/
在我的 Ubuntu 14.04.5 (YMMV) 上: