我发现的搜索结果要么是关于确定文件系统是否安装在特定路径上,要么是特定路径是否被用作安装点。我正在寻找一种方法来确定是否安装了给定的设备或文件(即文件系统映像)根本不。该解决方案应该能够处理设备/文件路径中的空格。
我在搜索结果中看到的这些不是解决方案:
mountpoint -q "${PATH}"
仅测试是否${PATH}
是挂载点。- 应用于
grep -q "${PATH}"
某些输出可能不起作用,因为${PATH}
其中可能有空格,并且像这样的命令的输出mount
中有空格。
此外,它应该返回文件/设备安装到的位置。
答案1
您可以查阅该文件/proc/self/mounts
(或/proc/mounts
),在此文件中空间使用 \040(八进制值)进行编码:
例如,/dev/sda1
安装在/mnt/mount sda1
grep '/dev/sda1' /proc/mounts | cut -d ' ' -f 2
返回:/mnt/mount\040sda1
grep "$(echo '/mnt/mount sda1' | sed 's/ /\\\\040/g')" /proc/mounts | cut -d ' ' -f 1
返回:/dev/sda1
答案2
/etc/mtab、/proc/mounts等不显示源文件路径。
山命令执行并格式化其输出。
所以你可以尝试:
mount | egrep "${file_path=} on /"
export file_path="/home/kalavan/Downloads/debian 6.0.10-amd64-netinst.iso"
mount | egrep "${file_path=} on /"
/home/kalavan/Downloads/debian 6.0.10-amd64-netinst.iso on /mnt/pc75 type iso9660 (ro,relatime)
与
mount | grep debian
/home/kalavan/Downloads/debian 6.0.10-amd64-netinst.iso on /mnt/pc75 type iso9660 (ro,relatime)
/home/kalavan/Downloads/debian 6.0.10-amd64-netinst.iso_somethingelse on /mnt/projekte type iso9660 (ro,relatime)
那么犯错误的风险就小得多。人们还可以尝试将其余行模式与正则表达式进行匹配。