¿Cómo hacer que `ncdu` muestre un resumen rápido del uso del disco y salga?

¿Cómo hacer que `ncdu` muestre un resumen rápido del uso del disco y salga?

Me gustaría hacer que la ncduherramienta NCurses Disk Usage analice una ruta, muestre el resultado y salga, con fines de secuencias de comandos. Normalmente es una herramienta interactiva con humanos, pero me gustaría eliminar la parte interactiva con humanos.

Si ejecuto ncdu /bootpuedo ver mi /bootpartición. Esto es lo que veo:

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

Ahora, ¿cómo puedo programar esto para mostrar esta salida, almacenarla en una variable para imprimirla más tarde y salir?

Lo que me gustaría es algo como esto:

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

Actualmente se cuelga en la primera línea ya que creo que está esperando la interacción humana.

Pregunta de seguimiento:bash: hace que dula salida del programa sea similar ancdu

Respuesta1

Con ncdu, no es posible. Utiliza ncursesuna biblioteca para mostrar los resultados con funciones interactivas y (a diferencia de, por ejemplo, topcon -bla opción) no tiene una opción directa para imprimir lo que muestra.

Sin embargo, puede imprimir (o guardar en un archivo) un archivo jsoncon toda la información que necesita, que se puede analizar: ncdu -o file.jsono stdout ncdu -o-:.

Proporcioné un pythonscript para analizar esto y obtener un resultado similar enUnixSE.

Respuesta2

elncdu Página webenumera proyectos similares en la parte inferior, uno de sertdu"uso principal del disco" que sale de forma no interactiva con un resumen de texto (incluidos los archivos anidados más grandes). Otrogdutiene ambas: interfaz ncurses y salida no interactiva incorporada.

información relacionada