我想讓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
與例如-b
選項不同)它沒有直接選項來列印其顯示的內容。
但是,它可以打印(或保存到文件) ajson
以及您需要的所有信息,這些信息可以被解析:ncdu -o file.json
或到 stdout: ncdu -o-
。
我提供了一個python
腳本來將其解析為類似的輸出Unix系統環境。