Я хотел бы, чтобы ncdu
инструмент NCurses Disk Usage анализировал путь, отображал вывод и выходил для целей скриптинга. Обычно это инструмент с человеческим взаимодействием, но я хотел бы удалить из него часть с человеческим взаимодействием.
Если я запущу, ncdu /boot
то увижу свой /boot
раздел. Вот что я вижу:
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
Теперь, как мне написать скрипт, чтобы отобразить этот вывод, сохранить его в переменной для последующей печати и выйти?
Мне бы хотелось что-то вроде этого:
output="$(ncdu /boot)"
echo "$output"
В настоящее время он завис на первой строке, так как, по-моему, ожидает взаимодействия с человеком.
Дополнительный вопрос:bash: сделать du
вывод похожим наncdu
решение1
С ncdu
, это невозможно. Он использует ncurses
библиотеку для отображения результатов с интерактивными функциями и (в отличие от , например, top
с -b
option) не имеет прямой опции для печати того, что он отображает.
Однако он может вывести на печать (или сохранить в файл) a json
со всей необходимой вам информацией, которую можно проанализировать: ncdu -o file.json
или вывести на стандартный вывод ncdu -o-
:.
Я предоставил python
скрипт для анализа этого и получения аналогичного вывода по адресуUnix-SE-система.
решение2
the ncdu
веб-страницаперечисляет похожие проекты внизу, один из которыхтду"максимальное использование диска", которое не выходит в интерактивном режиме с текстовым резюме (включая самые большие вложенные файлы). Другойгдуимеет как встроенный интерфейс ncurses, так и неинтерактивный выход.