如何使 ncdu 顯示磁碟使用情況的快速摘要並退出?

如何使 ncdu 顯示磁碟使用情況的快速摘要並退出?

我想讓ncduNCurses 磁碟使用工具分析路徑、顯示輸出並退出,以用於腳本編寫。通常它是一個人機互動工具,但我想刪除其中的人機互動部分。

如果我運行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系統環境

答案2

ncdu 網頁在底部列出了類似的項目,其中之一是tdu「頂級磁碟使用情況」確實以文字摘要(包括最大的嵌套檔案)非互動方式退出。其他廣東大學確實具有 - ncurses 介面和內建的非互動式退出。

相關內容