当前目录的挂载信息

当前目录的挂载信息

我可以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。这就是grepmount 命令中查找并输出的内容。

获取您的.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 具有该模块系统::文件系统::安装点它提供了所需的功能。

相关内容