如何找到当前目录所在的磁盘/分区?

Riz*_*hiy 18 shell

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

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

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

Kus*_*nda 24

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

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

示例(在 OpenBSD 机器上):

$ pwd
/usr/ports
Run Code Online (Sandbox Code Playgroud)
$ pwd -P
/extra/ports
Run Code Online (Sandbox Code Playgroud)
$ df .
Filesystem  512-blocks      Used     Avail Capacity  Mounted on
/dev/sd3a    103196440  55987080  42049540    57%    /extra
Run Code Online (Sandbox Code Playgroud)

要从此输出中解析出挂载点,您可以使用类似

$ df -P . | sed -n '$s/[^%]*%[[:blank:]]*//p'
/extra
Run Code Online (Sandbox Code Playgroud)

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

$ df -P . | sed -n '$s/[[:blank:]].*//p'
/dev/sd3a
Run Code Online (Sandbox Code Playgroud)

相信有些Linux系统也支持

findmnt --target .
Run Code Online (Sandbox Code Playgroud)

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

findmnt --output target --noheadings --target .
Run Code Online (Sandbox Code Playgroud)

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

使用--output source来获取安装设备节点。