スクリプト作成の目的で、NCurses ディスク使用量ツールにパスを分析し、出力を表示して終了させたいと思いますncdu
。通常は人間と対話するツールですが、人間と対話する部分を削除したいと思います。
実行するとパーティション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"
現在は、人間の操作を待っているため、最初の行でハングしていると思います。
答え1
ではncdu
、それは不可能です。はncurses
、インタラクティブな機能を使用して結果を表示するためにライブラリを使用し、(たとえばオプションtop
の場合とは異なり-b
) 表示内容を印刷する直接的なオプションはありません。
json
ただし、解析可能な必要なすべての情報を含む を印刷 (またはファイルに保存) したり、 ncdu -o file.json
stdout に出力したりすることはできますncdu -o-
。
私はpython
これを解析して同様の出力を得るためのスクリプトを提供しました。Unix SE。