如何查找当前目录位于哪个磁盘/分区?

如何查找当前目录位于哪个磁盘/分区?

我可以使用 打印当前目录pwd,但这给了我导航到我所在位置的路径。我需要知道当前目录位于哪个磁盘/分区上。

例如,如果我创建符号链接user@pc:~$ ln -s /media/HD1 hard_disk,然后导航到~/hard_disk并运行pwd它将打印/home/user/hard_disk.

我想获取我当前所在的实际路径,或者更好的是我当前所在的实际文件系统,它对应于df.

答案1

pwd -P将为您提供当前所在的物理目录,即已解析符号链接的当前工作目录的路径名。

使用df .将为您提供df当前目录所在的任何分区的输出。

示例(在 OpenBSD 机器上):

$ pwd
/usr/ports
$ pwd -P
/extra/ports
$ df .
Filesystem  512-blocks      Used     Avail Capacity  Mounted on
/dev/sd3a    103196440  55987080  42049540    57%    /extra

要从此输出中解析出安装点,您可以使用类似的东西

$ df -P . | sed -n '$s/[^%]*%[[:blank:]]*//p'
/extra

要解析所使用的文件系统设备,请使用

$ df -P . | sed -n '$s/[[:blank:]].*//p'
/dev/sd3a

相信有些Linux系统也支持

findmnt --target .

(其中--target .可以替换为-T .)或者,为了更简洁的输出,

findmnt --output target --noheadings --target .

(其中--noheadings可以替换为-n,并且--output target可以替换为-o target)以获取保存当前目录所在文件系统的挂载点。

用于--output source获取已挂载的设备节点。

答案2

正如伊格纳西奥所说这里, 您可以使用df -P file/goes/here | tail -1 | cut -d' ' -f 1

相关内容