我可以df .
获取当前目录所在挂载点的一些信息,并且可以从中获取我想要的所有信息mount
。但是,我得到了太多信息(有关其他坐骑的信息)。我可以 grep 下来,但我想知道是否有更好的方法。
是否有一些命令mountinfo
可以mountinfo .
提供我想要的信息(例如df .
但带有提供的信息mount
)?
我正在使用 Debian GNU/Linux。
答案1
我想你想要这样的东西:
findmnt -T .
使用该选项时
-T,--目标小路如果路径不是挂载点文件或目录,
findmnt
则按相反顺序检查路径元素以获取挂载点。您可以通过 只打印某些字段-o, --output [list]
。请参阅
findmnt --help
参考资料 获取可用字段的列表。
或者,您可以运行:
(until findmnt . ; do cd .. ; done)
您遇到的问题是所有路径都与某事物或其他事物相关,因此您只需走树即可。每次。
findmnt
是 util-linux 软件包的成员,并且已经存在几年了。到目前为止,无论您使用哪种发行版,如果您也有该mount
工具,它都应该已经安装在您的 Linux 计算机上。
man mount | grep findmnt -B1 -m1
For more robust and customizable output use
findmnt(8), especially in your scripts.
findmnt
将打印出所有不带挂载点参数的挂载信息,并且仅打印其带挂载点参数的信息。是-D
仿真df
选项。没有-D
它的输出类似于mount
's - 但更可配置。findmnt --help
亲自尝试看看。
我将它放在子 shell 中,这样当前 shell 的当前目录就不会改变。
所以:
mkdir -p /tmp/1/2/3/4/5/6 && cd $_
(until findmnt . ; do cd .. ; done && findmnt -D .) && pwd
输出
TARGET SOURCE FSTYPE OPTIONS
/tmp tmpfs tmpfs rw
SOURCE FSTYPE SIZE USED AVAIL USE% TARGET
tmpfs tmpfs 11.8G 839.7M 11G 7% /tmp
/tmp/1/2/3/4/5/6
如果您没有-D
可用的选项(不适用于旧版本的 util-linux)那么您就无需担心 - 无论如何,它只不过是一个方便的开关。请注意它为每个调用生成的列标题 - 您可以使用-o
输出开关包含或排除每个调用的列标题。我可以获得与-D
可能提供的相同的输出,例如:
findmnt /tmp -o SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,TARGET
输出
SOURCE FSTYPE SIZE USED AVAIL USE% TARGET
tmpfs tmpfs 11.8G 1.1G 10.6G 10% /tmp
答案2
我不知道命令,但你可以创建一个函数。您可以将以下内容添加到您的.bashrc
:
mountinfo () {
mount | grep $(df -P "$1" | tail -n 1 | awk '{print $1}')
}
这将执行mount
命令并将输出传递到grep
.grep
将查找 的输出df -P "$1" | tail -n 1 | awk '{print $1}'
,并将其分解:
df -P "$1"
df
将在传递给函数的参数上运行,tail -n 1
只会输出第二行,即包含partition
信息的行。awk '{print $1}'
将打印该行的第一部分,即磁盘/分区号,例如/dev/sda5
。这就是grep
mount 命令中查找并输出的内容。
获取您的.bashrc
文件以应用更改,或注销并重新登录。
现在,如果您运行mountinfo .
,您将获得您想要的输出。
答案3
Linux/Unix 的方法是拥有一个由小型实用程序组成的工具箱,将它们组合起来即可为您提供所需的结果。
它们往往并不适用于所有场合。相反,您有许多小的有用的实用程序,它们与管道等组合在一起。这样做的优点是,如果没有可用的实用程序,您可以很容易地编写自己的实用程序。
例如,要获取您想要的信息,您可以使用:
mount | grep $(df --output=source . | tail -1)
如果您想在不同的目录中重用上述内容,请创建一个脚本:
#!/bin/bash
mount | grep $(df --output=source $1 | tail -1)
将其另存为mountinfo
并使其可执行 ( chmod +x mountinfo
)。然后您可以将其用作:
mountinfo .
如果您想要一个具有适用于所有互操作性的实用程序的系统,那么盖茨先生也许能够帮助您;-)
答案4
如果您使用不完全古老的 GNU coreutils df 版本,那么就echo $(df . --output=target | tail -n 1)
可以了。同样stat -c '%m' .
,尽管我注意到https://linux.die.net/man/1/stat缺少格式选项的文档%m
。
可移植地执行此操作很烦人:以上都不适用于 stat 或 df 的 BSD 或 Cygwin 版本。如果安装点的路径中没有可能存在空格,df -P . | tail -1 | awk '{ print $NF}'
那就太好了,但 USB 闪存驱动器的卷名中通常有空格,这可能会出现在安装路径中并破坏此设置。为了可移植性,Perl 几乎可以在任何地方安装,并且 CPAN 具有该模块系统::文件系统::安装点它提供了所需的功能。