Wie kann man „ncdu“ dazu bringen, eine kurze Zusammenfassung der Festplattennutzung anzuzeigen und zu beenden?

Wie kann man „ncdu“ dazu bringen, eine kurze Zusammenfassung der Festplattennutzung anzuzeigen und zu beenden?

Ich möchte, dass das ncduNCurses Disk Usage-Tool einen Pfad analysiert, die Ausgabe anzeigt und beendet, und zwar für Skriptzwecke. Normalerweise ist es ein Tool, das Benutzer einbezieht, aber ich möchte den interaktiven Teil davon entfernen.

Wenn ich laufe, ncdu /bootkann ich meine /bootPartition sehen. Folgendes sehe ich:

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

Wie kann ich nun ein Skript erstellen, um diese Ausgabe anzuzeigen, sie zum späteren Ausdrucken in einer Variablen zu speichern und das Programm zu beenden?

Ich hätte gerne so etwas:

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

Momentan hängt es in der ersten Zeile, da es, glaube ich, auf menschliche Interaktion wartet.

Anschlussfrage:bash: duShow-Ausgabe ähnlich machen wiencdu

Antwort1

Mit ncduist dies nicht möglich. Es verwendet ncurseseine Bibliothek, um die Ergebnisse mit interaktiven Funktionen anzuzeigen, und (anders als z. B. topmit -bOption) hat es keine direkte Möglichkeit, die angezeigten Ergebnisse auszudrucken.

Es kann jedoch eine jsonAusgabe mit allen benötigten, analysierbaren Informationen drucken (oder in einer Datei speichern): ncdu -o file.jsonoder auf stdout: ncdu -o-.

Ich habe ein pythonSkript zur Verfügung gestellt, um dies in eine ähnliche Ausgabe umzuwandeln:Unix SE.

Antwort2

Diencdu Websitelistet ähnliche Projekte am Ende, eines davontdu"Top Disk Usage", das nicht interaktiv mit einer Textzusammenfassung (einschließlich der größten verschachtelten Dateien) beendet wird. Ein weiterergduhat beides integriert: Ncurses-Schnittstelle und nicht-interaktives Beenden.

verwandte Informationen