![如何查找当前目录位于哪个磁盘/分区?](https://linux22.com/image/151039/%E5%A6%82%E4%BD%95%E6%9F%A5%E6%89%BE%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%BD%8D%E4%BA%8E%E5%93%AA%E4%B8%AA%E7%A3%81%E7%9B%98%2F%E5%88%86%E5%8C%BA%EF%BC%9F%20.png)
我可以使用 打印当前目录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
。