Stu*_*Stu 13 shell filesystems mount
我正在寻找一种快速方法来查找包含给定 FILE 的文件系统的挂载点。有什么比我下面的解决方案更简单或更直接的吗?
df -h FILE |tail -1 | awk -F% '{print $NF}' | tr -d ' '
Run Code Online (Sandbox Code Playgroud)
一个类似的问题“是否有命令可以查看磁盘的安装位置? ”使用当前磁盘的设备节点作为输入,而不是磁盘中的任意文件......
Sté*_*las 20
在 GNU/Linux 上,如果您拥有statcoreutils 8.6 或更高版本的GNU ,您可以执行以下操作:
stat -c %m -- "$file"
Run Code Online (Sandbox Code Playgroud)
除此以外:
mount_point_of() {
f=$(readlink -e -- "$1") &&
until mountpoint -q -- "$f"; do
f=${f%/*}; f=${f:-/}
done &&
printf '%s\n' "$f"
}
Run Code Online (Sandbox Code Playgroud)
您的方法是有效的,但假设挂载点不包含空格、%、换行符或其他不可打印的字符,您可以使用较新版本的 GNU df(8.21 或更高版本)稍微简化它:
df --output=target FILE | tail -n +2
Run Code Online (Sandbox Code Playgroud)
rud*_*ier 11
对于 Linux,我们有 util-linux 的 findmnt 正是为此而制作的
findmnt -n -o TARGET --target /path/to/FILE
Run Code Online (Sandbox Code Playgroud)
请注意,如果有多个绑定安装,可能会返回某种随机安装点。使用df也有同样的问题。
你可以做类似的事情
df -P FILE | awk 'NR==2{print $NF}'
Run Code Online (Sandbox Code Playgroud)
甚至
df -P FILE | awk 'END{print $NF}'
Run Code Online (Sandbox Code Playgroud)
由于awk默认情况下在空格上拆分,因此您不需要指定 ,-F也不需要用 修剪空格tr。最后,通过指定感兴趣的行号 ( NR==2),您还可以取消tail.