在我的系统中,df -hT
输出如下内容:
> df -hT
Sist. Arq. Tipo Tam. Usado Disp. Uso% Montado em
devtmpfs devtmpfs 1,9G 8,0K 1,9G 1% /dev
tmpfs tmpfs 1,9G 616K 1,9G 1% /dev/shm
tmpfs tmpfs 1,9G 1,8M 1,9G 1% /run
tmpfs tmpfs 1,9G 0 1,9G 0% /sys/fs/cgroup
/dev/sda6 btrfs 80G 22G 58G 27% /
/dev/sda6 btrfs 80G 22G 58G 27% /.snapshots
/dev/sda6 btrfs 80G 22G 58G 27% /var/lib/pgsql
/dev/sda6 btrfs 80G 22G 58G 27% /var/lib/mysql
/dev/sda6 btrfs 80G 22G 58G 27% /var/opt
/dev/sda6 btrfs 80G 22G 58G 27% /var/lib/libvirt/images
/dev/sda6 btrfs 80G 22G 58G 27% /var/lib/mailman
/dev/sda6 btrfs 80G 22G 58G 27% /var/lib/machines
/dev/sda6 btrfs 80G 22G 58G 27% /var/crash
/dev/sda6 btrfs 80G 22G 58G 27% /var/lib/mariadb
/dev/sda6 btrfs 80G 22G 58G 27% /var/lib/named
/dev/sda6 btrfs 80G 22G 58G 27% /boot/grub2/x86_64-efi
/dev/sda6 btrfs 80G 22G 58G 27% /usr/local
/dev/sda6 btrfs 80G 22G 58G 27% /boot/grub2/i386-pc
/dev/sda6 btrfs 80G 22G 58G 27% /var/spool
/dev/sda6 btrfs 80G 22G 58G 27% /opt
/dev/sda6 btrfs 80G 22G 58G 27% /var/cache
/dev/sda6 btrfs 80G 22G 58G 27% /srv
/dev/sda6 btrfs 80G 22G 58G 27% /var/log
/dev/sda6 btrfs 80G 22G 58G 27% /var/tmp
/dev/sda6 btrfs 80G 22G 58G 27% /tmp
/dev/sda8 vfat 340G 313G 27G 93% /mnt/Data
/dev/sda7 xfs 200G 143G 58G 72% /home
tmpfs tmpfs 385M 44K 385M 1% /run/user/1000
/dev/sda3 fuseblk 287G 190G 98G 67% /run/media/jaques/OS
/dev/mmcblk0p1 vfat 7,5G 2,1G 5,4G 28% /run/media/jaques/9843-A435
但我希望每个设备只列出一次,无论它被安装多少次。
我想要一些更简单的东西,像这样:
> df -hT
Sist. Arq. Tipo Tam. Usado Disp. Uso%
/dev/sda6 btrfs 80G 22G 58G 27%
/dev/sda8 vfat 340G 313G 27G 93%
/dev/sda7 xfs 200G 143G 58G 72%
/dev/sda3 fuseblk 287G 190G 98G 67%
/dev/mmcblk0p1 vfat 7,5G 2,1G 5,4G 28%
有可能吗?怎样做?
系统信息(如果需要):
OpenSuse Tumbleweed
Kernel 4.10.1
提前致谢。
答案1
好吧,编辑 的输出df
(例如使用awk
)比尝试调整其选项更容易。所以我要做的是定义一个别名
alias my_df="df -hT|awk -F% '$1!=p&&$1!~/tmpfs/{print $1 FS;p=$1}'"
并在需要减少输出时使用它。使用您提供的输入
$ my_df
Sist. Arq. Tipo Tam. Usado Disp. Uso%
/dev/sda6 btrfs 80G 22G 58G 27%
/dev/sda8 vfat 340G 313G 27G 93%
/dev/sda7 xfs 200G 143G 58G 72%
/dev/sda3 fuseblk 287G 190G 98G 67%
/dev/mmcblk0p1 vfat 7,5G 2,1G 5,4G 28%
解释:
的输出df
通过管道传输awk
,按照 的指示-F%
,将每行输入分成两部分,$1
一部分处理,$2
一部分丢弃。然后,如果$1
不同于p
(见下文)并且$1
不匹配tmpfs
,我们会用最后的 打印它%
。最后,我们将 的值赋给 ,$1
这样p
,如果下一行与这一行相同,我们就不会打印它。
希望一切都清楚。