使用 df 和 mount 时仅显示物理磁盘

使用 df 和 mount 时仅显示物理磁盘

当我使用df或 时mount,我最感兴趣的是物理磁盘分区。如今,这些命令的输出被临时和虚拟文件系统、cgroup 和其他我不感兴趣的东西所淹没。

我在输出中的物理分区始终以 ' /' 开头,因此我尝试为df和制作别名mount

alias df1="df | egrep '^/'"
alias mount1="mount | egrep '^/'"

这适用于mount1(尽管它显示/红色的“ ”),但对于df1我有时想将-h选项添加到dfand can't do 的情况df1 -h。我不想为我可能想要使用的每个选项组合使用别名。我真的需要研究在 bash 中定义函数吗(我不想这样做)?有更好的解决方案吗df1

答案1

您可以df1使用以下别名来解决参数问题:

alias df1='df --type btrfs --type ext4 --type ext3 --type ext2 --type vfat --type iso9660'

确保添加您感兴趣的任何其他类型(xfsfuseblk(用于现代 NTFS 支持,如 @Pandya 指出的)等)。这样您就可以做到df1 -h并获得预期的结果。

过滤也以相反的方式起作用,排除您不想看到的 FS 类型:

alias df1='df -x tmpfs -x efivarfs '

mount确实有一个-t选项,但您不能多次指定它(仅采用最后一次),我将使用:

alias mount1="mount | /bin/grep -E '^/'"

我正在使用grep -Easegrep已弃用,并且 using/bin/grep确保您没有使用/--colour=auto的别名grepegrep

答案2

阅读man mount

列出安装
保留列出模式只是为了向后兼容。为了更强大和可定制的输出使用findmnt(8),特别是在您的脚本中。

向我展示了另一种获得所需输出的方法。

我创建了一个函数lsmounts

lsmounts () {
  findmnt -D -t nosquashfs,notmpfs,nodevtmpfs
}

参数解释:

  • -D:提供我们所知道的输出df
  • -t:选择您要查看的文件系统类型。前置no排除了提到的文件系统。

所以我得到了想要的输出

SOURCE                       FSTYPE   SIZE   USED  AVAIL USE% TARGET
/dev/mapper/vgubuntu-lvroot  ext4    78,3G  42,5G  31,7G  54% /
/dev/mapper/vgubuntu-lvhome  ext4   284,5G 146,4G 124,5G  51% /home
...

答案3

df如果可以选择切换到不同的文件系统,请改为使用pydf,因为它默认情况下不显示具有 0 个块的文件系统,并且默认情况下启用仪表、颜色和其他一些属性。它的别名可以很好地工作df,并且无论如何都可以使用原始版本\df

答案4

使用findmnt --real而不是mount

findmnt --real -t nosquashfs

findmnt根据mount手册页,这是列出安装的推荐方式:

保留列表模式只是为了向后兼容。

要获得更强大和可定制的输出,请使用 findmnt(8),尤其是在脚本中。

--real选项不包括虚拟文件系统(如 proc、devtmpfs 或 cgroup)。

此外,您可能希望排除squashfs文件系统(如果您使用snap)以使用-t nosquashfs.您可以排除更多用逗号分隔的文件系统,例如-t nosquashfs,nofuse.sshfs.

df

df -x tmpfs -l

df默认情况下不会列出大多数虚拟系统(除非您传递该-a选项),因此您要排除的主要内容是 tmpfs 文件系统 ( -x tmpfs),以及可能的非本地文件系统 ( -l)。如果您df显示了 squashfs 文件系统(我的没有),您可能必须通过-x tmpfs -x squashfs排除它们。

相关内容