Answers:
该命令df(1)
采用一个或多个参数,并将返回该文件或目录所在的安装点和设备以及使用信息。然后,您可以使用路径或设备在mount -v
或类似输出中查找文件系统类型。
不幸的是,和的输出格式都df
与mount
系统有关;没有明显的标准,至少在Solaris,NetBSD和Mac OS X之间可以看到。
df /path-to-the-directory
将为您提供该目录的包含分区
您可以使用stat。命令stat --printf'%d'filename.txt将以十六进制/十进制形式返回设备号。
stat --printf "%d"
确实告诉您设备的次要数量,但是要获取设备名称及其挂载的文件系统,还有更多工作要做。
stat --format '%m' $file
它将为您stat --file-system --format '%T' $mount
提供安装点,并提供文件系统类型名称。
在Linux上df和btrfs似乎有一个问题。当您要求df找到已安装的btrfs卷的安装点时,它将做正确的事情。在这种情况下,joe是/ m / whale / backup的子目录。
# df /srv/backup/joe
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/md126 2930135488 307676684 2619663252 11% /m/whale/backup
但是,如果所引用的目录是一个子卷,它将不再告诉您安装点。
# df /srv/backup/joe/code
Filesystem 1K-blocks Used Available Use% Mounted on
- 2930135488 307676684 2619663252 11% /a/whale/backup/joe/code
根据内核,/ a / whale / backup是唯一的安装点。
# mount | grep whale
/dev/md126 on /a/whale/backup type btrfs (rw,relatime,space_cache)
FWIW,stat做同样的事情:
# stat --printf '%m\n' /srv/backup/joe/code
/a/whale/backup/joe/code
从/programming/2167558/give-the-mount-point-of-a-path:
df -P $path | tail -1 | awk '{ print $NF}'
可以在我测试过的任何地方工作,无论是* BSD还是sysV,以及古怪的自动挂载目录。我很高兴听到它失败的情况。
df -P
应该在任何符合POSIX的系统上产生标准化的输出。一些傻瓜系统可能还需要设置一个神奇的环境变量,例如POSIXLY_CORRECT。