Ich möchte, dass das ncdu
NCurses 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 /boot
kann ich meine /boot
Partition 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: du
Show-Ausgabe ähnlich machen wiencdu
Antwort1
Mit ncdu
ist dies nicht möglich. Es verwendet ncurses
eine Bibliothek, um die Ergebnisse mit interaktiven Funktionen anzuzeigen, und (anders als z. B. top
mit -b
Option) hat es keine direkte Möglichkeit, die angezeigten Ergebnisse auszudrucken.
Es kann jedoch eine json
Ausgabe mit allen benötigten, analysierbaren Informationen drucken (oder in einer Datei speichern): ncdu -o file.json
oder auf stdout: ncdu -o-
.
Ich habe ein python
Skript zur Verfügung gestellt, um dies in eine ähnliche Ausgabe umzuwandeln:Unix SE.