Me gustaría hacer que la ncdu
herramienta 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 /boot
puedo ver mi /boot
partició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 du
la salida del programa sea similar ancdu
Respuesta1
Con ncdu
, no es posible. Utiliza ncurses
una biblioteca para mostrar los resultados con funciones interactivas y (a diferencia de, por ejemplo, top
con -b
la opción) no tiene una opción directa para imprimir lo que muestra.
Sin embargo, puede imprimir (o guardar en un archivo) un archivo json
con toda la información que necesita, que se puede analizar: ncdu -o file.json
o stdout ncdu -o-
:.
Proporcioné un python
script 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.