当我使用df
或 时mount
,我最感兴趣的是物理磁盘分区。如今,这些命令的输出被临时和虚拟文件系统、cgroup 和其他我不感兴趣的东西所淹没。
我在输出中的物理分区始终以 ' /
' 开头,因此我尝试为df
和制作别名mount
:
alias df1="df | egrep '^/'"
alias mount1="mount | egrep '^/'"
这适用于mount1
(尽管它显示/
红色的“ ”),但对于df1
我有时想将-h
选项添加到df
and can't do 的情况df1 -h
。我不想为我可能想要使用的每个选项组合使用别名。我真的需要研究在 bash 中定义函数吗(我不想这样做)?有更好的解决方案吗df1
?
答案1
您可以df1
使用以下别名来解决参数问题:
alias df1='df --type btrfs --type ext4 --type ext3 --type ext2 --type vfat --type iso9660'
确保添加您感兴趣的任何其他类型(xfs
,fuseblk
(用于现代 NTFS 支持,如 @Pandya 指出的)等)。这样您就可以做到df1 -h
并获得预期的结果。
过滤也以相反的方式起作用,排除您不想看到的 FS 类型:
alias df1='df -x tmpfs -x efivarfs '
mount
确实有一个-t
选项,但您不能多次指定它(仅采用最后一次),我将使用:
alias mount1="mount | /bin/grep -E '^/'"
我正在使用grep -E
asegrep
已弃用,并且 using/bin/grep
确保您没有使用/--colour=auto
的别名grep
egrep
答案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
排除它们。