Como fazer com que o `ncdu` mostre um rápido resumo do uso do disco e saia?

Como fazer com que o `ncdu` mostre um rápido resumo do uso do disco e saia?

Gostaria de fazer com que a ncduferramenta NCurses Disk Usage analisasse um caminho, exibisse a saída e saísse para fins de script. Normalmente é uma ferramenta interativa com humanos, mas gostaria de remover a parte interativa com humanos.

Se eu executar, ncdu /bootposso ver minha /bootpartição. Aqui está o que vejo:

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

Agora, como posso criar um script para exibir essa saída, armazená-la em uma variável para impressão posterior e sair?

O que eu gostaria é algo assim:

output="$(ncdu /boot)"
echo "$output"

Atualmente ele trava na primeira linha porque está aguardando interação humana, eu acho.

Pergunta complementar:bash: torna dua saída do show semelhante ancdu

Responder1

Com ncdu, não é possível. Ele usa ncursesuma biblioteca para exibir os resultados com recursos interativos e (ao contrário, por exemplo, topda -bopção) não possui opção direta para imprimir o que exibe.

No entanto, ele pode imprimir (ou salvar em arquivo) um arquivo jsoncom todas as informações necessárias, que podem ser analisadas: ncdu -o file.jsonou em stdout: ncdu -o-.

Forneci um pythonscript para analisar isso em uma saída semelhante emUnix SE.

Responder2

oncdu página da Internetlista projetos semelhantes na parte inferior, um deles sendotdu"uso superior do disco" que sai de forma não interativa com um resumo de texto (incluindo os maiores arquivos aninhados). Outrogdupossui interface ncurses e saída não interativa integradas.

informação relacionada