我想让ncdu
NCurses 磁盘使用工具分析路径、显示输出并退出,以用于脚本编写。通常它是一个人机交互工具,但我想删除它的人机交互部分。
如果我运行,ncdu /boot
我就可以看到我的/boot
分区。这是我看到的:
ncdu 1.14.1 ~ Use the arrow keys to navigate, press ? for help
--- /boot -----------------------------------------------------
100.2 MiB [##########] initrd.img-5.13.0-28-generic
100.2 MiB [######### ] initrd.img-5.13.0-27-generic
11.2 MiB [# ] vmlinuz-5.11.0-46-generic
9.7 MiB [ ] vmlinuz-5.13.0-28-generic
9.7 MiB [ ] vmlinuz-5.13.0-27-generic
9.7 MiB [ ] vmlinuz-5.13.0-25-generic
8.0 MiB [ ] /grub
5.7 MiB [ ] System.map-5.13.0-28-generic
5.7 MiB [ ] System.map-5.13.0-27-generic
5.7 MiB [ ] System.map-5.13.0-25-generic
5.6 MiB [ ] System.map-5.11.0-46-generic
252.0 KiB [ ] config-5.13.0-28-generic
252.0 KiB [ ] config-5.13.0-27-generic
252.0 KiB [ ] config-5.13.0-25-generic
252.0 KiB [ ] config-5.11.0-46-generic
184.0 KiB [ ] memtest86+_multiboot.bin
184.0 KiB [ ] memtest86+.elf
180.0 KiB [ ] memtest86+.bin
! 16.0 KiB [ ] /lost+found
! 4.0 KiB [ ] /efi
@ 0.0 B [ ] initrd.img.old
@ 0.0 B [ ] initrd.img
@ 0.0 B [ ] vmlinuz.old
@ 0.0 B [ ] vmlinuz
现在,我该如何编写脚本来显示此输出,将其存储到变量中以供稍后打印,然后退出?
我想要的是这样的:
output="$(ncdu /boot)"
echo "$output"
目前它挂在第一行,因为我认为它正在等待人机交互。
后续问题:bash:使du
显示输出类似于ncdu
答案1
使用 则ncdu
无法实现。它使用ncurses
库来显示具有交互功能的结果,并且(与例如top
with-b
选项不同)它没有直接选项来打印其显示的内容。
但是,它可以打印(或保存到文件)json
您需要的所有信息,这些信息可以进行解析:ncdu -o file.json
或输出到标准输出:ncdu -o-
。
我提供了一个python
脚本来解析这个类似的输出Unix 操作系统。