Как заставить `ncdu` показать краткую сводку использования диска и выйти?

Как заставить `ncdu` показать краткую сводку использования диска и выйти?

Я хотел бы, чтобы 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с -boption) не имеет прямой опции для печати того, что он отображает.

Однако он может вывести на печать (или сохранить в файл) a jsonсо всей необходимой вам информацией, которую можно проанализировать: ncdu -o file.jsonили вывести на стандартный вывод ncdu -o-:.

Я предоставил pythonскрипт для анализа этого и получения аналогичного вывода по адресуUnix-SE-система.

решение2

the ncdu веб-страницаперечисляет похожие проекты внизу, один из которыхтду"максимальное использование диска", которое не выходит в интерактивном режиме с текстовым резюме (включая самые большие вложенные файлы). Другойгдуимеет как встроенный интерфейс ncurses, так и неинтерактивный выход.

Связанный контент