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


9

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

我在输出中的物理分区始终以“ /” 开头,因此我尝试为df和创建别名mount

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

这样就可以了mount1(尽管它/以红色显示' '),但是因为df1我有时想将-h选项添加到df而不能这样做df1 -h。我不希望对每个可能要使用的选项组合都没有别名。我是否真的需要研究在bash中定义函数(我不想这样做)?有更好的解决方案df1吗?

Answers:


6

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

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

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

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

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

我不推荐使用grep -Eas egrep,并且using /bin/grep确保您没有使用/ --colour=auto的别名grepegrep


df --type ntfs没有显示5 ntfs分区,因此对我来说跳过它们
Pandya

我已经使用--type fuseblk
潘迪亚

@Pandya就是我所指示的,您需要添加您感兴趣的其他类型。几年来我的系统中都没有ntfs分区,因此我不确定该别名来自何处。 。
Anthon

1
@Pandya看起来--type ntfs是从我的别名开始的,这是因为对NTFS的支持最少(重新引导到Windows%-之后,必须在NTFS分区上执行文件系统检查的时间))。更新了我的答案,谢谢。
Anthon

3

您可以如下定义函数:

function df1() { df "$@" | grep -E '^/'; }

输出示例:

$ df1 -h
/dev/sda8        25G  8.1G   16G  35% /
/dev/sda4        25G   20G  5.8G  78% /media/pandya/Documents+Edu
/dev/sda3       9.5G  7.1G  2.0G  79% /media/pandya/Ext4
/dev/sda7        24G   17G  6.9G  71% /media/pandya/Extra+Other
/dev/sda6        26G   25G  448M  99% /media/pandya/Media+Game
/dev/sda10       15G  7.9G  7.1G  53% /media/pandya/Miscellaneous
/dev/sda5        36G   22G   14G  63% /media/pandya/Software+OS

在这里$@,您可以输入参数![请注意,$@除非有具体原因,否则请始终使用双引号引起来。-ed]


3

如果选择切换到其他df选项,请改用pydf它,因为默认情况下它不显示具有0个块的文件系统,并且默认情况下启用了量规,颜色和其他一些属性。别名为df,效果很好,\df无论如何,原始文档始终可用。


对我来说,这里最有用的答案。遗憾的是,这对于不存在mount
emk2203 '18

有点晚了,但是对我来说,pydf显示了我的单个物理驱动器和33个/ dev / loop ##驱动器,而我只需要物理驱动器。公认的DF答案的作品,但我更喜欢这样的形式:别名DFH =“DF -h -x的squashfs -x tmpfs的”
史蒂夫━瓦莱尔

1

该答案试图解决yves的以下问题:

我不希望每个选项组合都没有别名(1)

尽管它以红色显示'/' (2)

(3) 信息的一个重要部分添加到该变化的输出,这是df根据所供给的标志的变化的标题行。

(1)您需要function,因为根据定义它需要参数。而且,定义和使用非常简单,如下所示。

(2)红色/是由产生的grep --color,红色是其grep自身的通用别名(您可以通过运行进行检查alias)。

function df1 
{ 
    df $* | sed -n '1p;/^\//p;'
}

上面的换行符旨在提高可读性,您可以将它们替换为空格。

将此代码段直接复制并粘贴到交互式bash会话中,或者甚至更好地将其附加到~/.bashrc

用法示例

$ df1 
Filesystem                        1K-blocks      Used Available Use% Mounted on
/dev/disk1                        487358464 316093104 171009360  65% /
/dev/disk2                           524032    302620    221412  58% /Volumes/Packer

$ df1 -hT
Filesystem                        Type   Size  Used Avail Use% Mounted on
/dev/disk1                        hfs    465G  302G  164G  65% /
/dev/disk2                        hfs    512M  296M  217M  58% /Volumes/Packer

$ df1 -hT .
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/disk1     hfs   465G  302G  164G  65% /

它能做什么

该函数df1df使用传递给它的任何参数进行调用,|并将输出通过管道()传递到sed,以使用该调用-n来禁止自动打印模式空间。其余部分表示sed的“脚本”,其中两个实际上是:

  1. 脚本会1p打印第一行,在我们的例子中是第一行df的标题(我对ps管道使用相同的标题),
  2. 脚本/^\//p匹配以开头的任何行/,然后打印
  3. ; 分隔2个sed脚本

0

我用alias df='df -hT -xtmpfs -xdevtmpfs'

如今,必须使用别名才能使GNU df实际上在Linux上可用,这实在是太糟糕了。应该有一个仅显示“真实”文件系统的选项(无论如何)。

音频上,df -hxtmpfs大部分都可以使用,并且无需别名即可使用。真的不比netstat -tulnp…… 更糟


0

阅读 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
...
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.