Ubuntu 22.04 ncdu 安装与命令参数详解
在 Ubuntu 22.04 上从零安装 ncdu 1.15.1(在线 apt 与离线 deb 两种方式),并逐条实测全部命令行参数与交互式 TUI 真实输出,附与 CentOS 1.22 的版本差异(含 --exclude 目录语义)与命令速查表
Ubuntu 22.04 ncdu 安装与命令参数详解
目标:说明 ncdu 这一交互式 TUI 磁盘用量分析工具在 Ubuntu 22.04(x86_64)上的完整安装(在线 apt 与离线 deb 两种方式)、全部命令行参数与 JSON 导入导出能力的逐条实测结果,以及 ncdu 1.15.1 与新版(如 CentOS 的 1.22)的版本差异说明(重点是
--exclude仅匹配目录名的实测语义),已在真实环境中逐条实测通过。
一、环境信息
- 操作系统:Ubuntu 22.04 LTS(amd64 / x86_64)
- 测试主机名:fm-ubuntu2204
- 工具版本:ncdu 1.15.1(Debian 包版本 1.15.1-1,实测
ncdu --version输出ncdu 1.15.1) - CPU 核数:6 核
- 内存:31.3G / 交换 2.00G(实测
free -h) - 安装来源仓库:Ubuntu 官方仓库 archive.ubuntu.com(jammy/universe,实测
apt-cache policy显示500 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages) - 说明:本次采集日志未记录内核版本(uname -r)与 IP,故本节仅列出日志中可确证的信息,不臆造。
二、工具概览
ncdu(NCurses Disk Usage)是一个基于 ncurses 库的交互式磁盘用量分析工具,由 Yoran Heling 开发并维护。它以全屏 TUI 界面展示指定目录的磁盘占用树,是传统 du 命令的交互式增强版。
相比 du,ncdu 的核心优势在于:
- 交互式浏览:方向键在目录树中上下移动、回车进入子目录,实时查看每个目录 / 文件的占用大小与百分比;
- JSON 导入导出:
-o把扫描结果导出为 JSON 文件,-f导入后离线浏览,适合定时扫描归档后对比; - 灵活排除:
--exclude/-X支持按模式排除目录,扫描结果更聚焦(注意:1.15.1 的模式只匹配目录名,实测细节见 5.6~5.8); - 单位与配色:默认按 1024 进制显示(KiB/MiB),
--si切换为 1000 进制(kB/MB),--color支持深色终端配色。
Ubuntu 22.04 的官方仓库(jammy/universe)提供 ncdu 1.15.1,直接 apt-get install 即可,无需添加第三方源。本文档下文所有命令均以 root 用户在本机终端执行,交互式界面输出使用 script 以文本帧方式捕获,帧中的终端控制序列已剥离、扫描进度条等瞬态残留已忽略,仅保留稳定可见的内容。
三、在线安装
3.1 查看当前包状态
命令:dpkg -l ncdu 查看 ncdu 是否已安装及其精确包版本。
dpkg -l ncdu
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-================-============-==================================================
ii ncdu 1.15.1-1 amd64 ncurses disk usage viewer
说明:ii 表示已安装(installed),包全名为 ncdu,版本是 1.15.1-1(1.15.1 为上游版本、-1 为 Debian 打包版本),架构 amd64。
3.2 在线安装 / 重装
命令:apt-get install 安装 ncdu;已安装时可用 --reinstall 强制重装(真实回显如下)。
apt-get install -y --reinstall ncdu
Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 10 not upgraded.
Need to get 43.4 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy/universe amd64 ncdu amd64 1.15.1-1 [43.4 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 43.4 kB in 1s (39.5 kB/s)
(Reading database ... 10804 files and directories currently installed.)
Preparing to unpack .../ncdu_1.15.1-1_amd64.deb ...
Unpacking ncdu (1.15.1-1) over (1.15.1-1) ...
Setting up ncdu (1.15.1-1) ...
说明:Get:1 行的仓库路径 jammy/universe 确证包来自官方 universe 仓库;包体仅 43.4 kB,体积小巧、依赖极少。debconf: delaying package configuration, since apt-utils is not installed 是本机未安装 apt-utils 时的正常提示,不影响安装结果。
3.3 在线安装后的版本验证
命令:ncdu --version 验证。
ncdu --version
ncdu 1.15.1
四、离线安装
离线场景(目标机无法联网)下,可在可联网机器上先把 deb 包下载下来,再拷贝到目标机用 dpkg -i 安装。ncdu 依赖极少,主包即可独立安装。
4.1 下载 deb 包到指定目录
命令:apt-get install --download-only 只下载不安装,配合 -o Dir::Cache::archives=... 指定下载目录。
mkdir -p /root/off-ncdu
apt-get install -y --download-only --reinstall -o Dir::Cache::archives=/root/off-ncdu ncdu
Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 10 not upgraded.
Need to get 43.4 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy/universe amd64 ncdu amd64 1.15.1-1 [43.4 kB]
Fetched 43.4 kB in 1s (33.8 kB/s)
Download complete and in download only mode
W: Download is performed unsandboxed as root as file '/root/off-ncdu/partial/ncdu_1.15.1-1_amd64.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)
💡 说明:
Download complete and in download only mode表示只下载未安装。末尾W:警告是因为 root 把下载目录建在非_apt属主的位置,apt 提示「以 root 身份非沙箱下载」,属权限提示、不影响下载与后续安装。已装最新版时需加--reinstall才会重新下载。
4.2 离线包清单
命令:ls -l 查看下载目录,确认 deb 包已就位。
ls -l /root/off-ncdu
total 48
-rw-r----- 1 root root 0 Oct 6 17:26 lock
-rw-r--r-- 1 root root 43376 Aug 9 2020 ncdu_1.15.1-1_amd64.deb
drwx------ 2 _apt root 4096 Oct 6 17:26 partial
说明:主包文件为 ncdu_1.15.1-1_amd64.deb(43376 B);lock 与 partial/ 是 apt 缓存机制生成的临时项,拷贝离线包时只取 .deb 即可。
4.3 离线安装
命令:dpkg -i 直接安装本地 deb 包(真实回显如下)。
dpkg -i /root/off-ncdu/ncdu_1.15.1-1_amd64.deb
(Reading database ... 10804 files and directories currently installed.)
Preparing to unpack .../ncdu_1.15.1-1_amd64.deb ...
Unpacking ncdu (1.15.1-1) over (1.15.1-1) ...
Setting up ncdu (1.15.1-1) ...
4.4 离线安装后的版本验证
ncdu --version
dpkg -l ncdu
ncdu 1.15.1
ii ncdu 1.15.1-1 amd64 ncurses disk usage viewer
五、全部命令参数实测
以下是 ncdu 1.15.1 全部命令行参数的逐条实测。交互式界面输出通过 script 捕获为文本帧,命令统一以 timeout 5 script -qc "TERM=xterm ncdu <参数> /root/t-ncdu" 方式采集。测试目录 /root/t-ncdu 结构如下(du -sh 实测 7.1M):
/root/t-ncdu
├── big.bin 5.0 MiB(5242880 B 随机数据)
├── hello.txt 6 B
├── passwd.bak 1275 B(/etc/passwd 副本)
├── .hiddenfile 0 B(隐藏文件)
├── .hiddendir/ 隐藏目录
│ └── secret.conf 6 B
└── sub1/
├── medium.bin 2.0 MiB(2097152 B)
├── world.log 6 B
├── .hidden/ 空隐藏目录
└── sub2/
└── deep.txt 5 B
5.1 -v / -V / --version:打印版本
作用:输出 ncdu 版本号后退出。1.15.1 中 -v、-V、--version 三个写法等价。
ncdu -v
ncdu -V
ncdu --version
ncdu 1.15.1
ncdu 1.15.1
ncdu 1.15.1
5.2 -h / --help:打印帮助与全部可用参数
作用:打印命令行帮助,列出 1.15.1 支持的完整选项清单(实测全文如下,较 1.22 的按组排版更简短)。
ncdu --help
ncdu <options> <directory>
-h,--help This help message
-q Quiet mode, refresh interval 2 seconds
-v,-V,--version Print version
-x Same filesystem
-e Enable extended information
-r Read only
-o FILE Export scanned directory to FILE
-f FILE Import scanned directory from FILE
-0,-1,-2 UI to use when scanning (0=none,2=full ncurses)
--si Use base 10 (SI) prefixes instead of base 2
--exclude PATTERN Exclude files that match PATTERN
-X, --exclude-from FILE Exclude files that match any pattern in FILE
-L, --follow-symlinks Follow symbolic links (excluding directories)
--exclude-caches Exclude directories containing CACHEDIR.TAG
--exclude-kernfs Exclude Linux pseudo filesystems (procfs,sysfs,cgroup,...)
--confirm-quit Confirm quitting ncdu
--color SCHEME Set color scheme (off/dark)
说明:1.15.1 的帮助是单组平铺结构(1.22 分 Mode / Scan / Interface 三组);-q 没有长形式 --slow-ui-updates、--color 只支持 off/dark(1.22 才支持 dark-bg)。注意帮助中没有 -a、-s、--max-depth、--hide-hidden 参数,实测结果见 5.9、5.11、5.12 小节。
5.3 默认视图(不带参数)
作用:默认参数扫描并进入交互界面。实测文本帧(已剥离控制序列、忽略扫描进度残留)如下:
ncdu /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
5.0 MiB [##########] big.bin
2.0 MiB [#### ] /sub1
8.0 KiB [ ] /.hiddendir
4.0 KiB [ ] passwd.bak
4.0 KiB [ ] hello.txt
0.0 B [ ] .hiddenfile
Total disk usage: 7.0 MiB Apparent size: 7.0 MiB Items: 12
说明:默认即显示隐藏文件(.hiddendir、.hiddenfile 在列);/sub1 是目录(大小为其内部文件合计 2.0 MiB),其余为文件。底部 Total disk usage: 7.0 MiB 为磁盘占用总量,Apparent size: 7.0 MiB 为文件逻辑大小(小文件因块对齐实际占用 4096 B,故两项常不一致),Items: 12 为扫描到的条目总数。[#] 为占用图列。
5.4 -x / --one-file-system:不跨文件系统
作用:限制扫描不跨越文件系统边界,避免把挂载在目录树下的其它分区 / 伪文件系统一并计入。
ncdu -x /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
5.0 MiB [##########] big.bin
2.0 MiB [#### ] /sub1
8.0 KiB [ ] /.hiddendir
4.0 KiB [ ] passwd.bak
4.0 KiB [ ] hello.txt
0.0 B [ ] .hiddenfile
Total disk usage: 7.0 MiB Apparent size: 7.0 MiB Items: 12
说明:测试目录全部位于同一文件系统,故结果与默认一致;若目录下挂载了 /proc、/sys 等其它文件系统,-x 会停止进入这些挂载点,防止把内核伪文件系统计入磁盘占用。
5.5 -e / --extended:启用扩展信息
作用:启用扩展信息收集(访问时间等)。1.15.1 没有 --show-mtime 之类参数(那是 1.22 的),扩展信息仅在交互界面内按键切换时体现,默认列表与不启用时一致。
ncdu -e /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
5.0 MiB [##########] big.bin
2.0 MiB [#### ] /sub1
8.0 KiB [ ] /.hiddendir
4.0 KiB [ ] passwd.bak
4.0 KiB [ ] hello.txt
0.0 B [ ] .hiddenfile
Total disk usage: 7.0 MiB Apparent size: 7.0 MiB Items: 12
说明:实测帧与默认完全一致。注意 -e 的真实含义是「启用扩展信息」而非「不显示隐藏文件」;1.15.1 默认就显示隐藏文件,也没有 --hide-hidden 参数(见 5.12)。
5.6 --exclude PATTERN:按模式排除(1.15.1 只匹配目录名)
作用:排除匹配指定 glob 模式的文件 / 目录(可多次指定)。重要实测发现:1.15.1 的排除模式只匹配目录名,对文件名的模式完全无效。
ncdu --exclude '*.log' /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
5.0 MiB [##########] big.bin
2.0 MiB [#### ] /sub1
8.0 KiB [ ] /.hiddendir
4.0 KiB [ ] passwd.bak
4.0 KiB [ ] hello.txt
0.0 B [ ] .hiddenfile
Total disk usage: 7.0 MiB Apparent size: 7.0 MiB Items: 12
说明:测试树中有 sub1/world.log(6 B),但 --exclude '*.log' 后 Items 仍为 12、总量不变——模式 *.log 命中的是文件名,1.15.1 不会排除文件。补充实测:--exclude hello.txt、--exclude '*.bin'、--exclude '*.txt' 均同样无效(Items 不变),只有命中目录名的模式才生效(见 5.7、5.8)。
5.7 -X / --exclude-from FILE:从文件读取排除模式
作用:从指定文件逐行读取排除模式(每行一个),适合批量维护排除清单。本机 /root/excl-patterns 内容为 *.log 与 sub2(两个模式):
ncdu -X /root/excl-patterns /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
5.0 MiB [##########] big.bin
2.0 MiB [#### ] /sub1
8.0 KiB [ ] /.hiddendir
4.0 KiB [ ] passwd.bak
4.0 KiB [ ] hello.txt
0.0 B [ ] .hiddenfile
Total disk usage: 7.0 MiB Apparent size: 7.0 MiB Items: 11
说明:模式 sub2 命中了嵌套目录 sub1/sub2(目录名匹配生效),其子项 deep.txt 不再计入,Items 由 12 减为 11;顶层列表不变(sub2 在折叠的 /sub1 内部,不占顶层行)。*.log 对文件 world.log 无效,与 5.6 结论一致。
5.8 --exclude 排除目录:显示 < 占位且不再深入
作用:当排除模式命中顶层目录时,该目录在列表中显示为 < 前缀的 0.0 B 占位符,内部条目全部消失。
ncdu --exclude sub1 /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
5.0 MiB [##########] big.bin
8.0 KiB [ ] /.hiddendir
4.0 KiB [ ] passwd.bak
4.0 KiB [ ] hello.txt
< 0.0 B [ ] sub1
0.0 B [ ] .hiddenfile
Total disk usage: 5.0 MiB Apparent size: 5.0 MiB Items: 7
说明:--exclude sub1 后 sub1 变成 < 0.0 B 占位符,其内部 5 个条目(medium.bin、world.log、.hidden、sub2、deep.txt)不再计入,总量从 7.0 MiB 骤降至 5.0 MiB;Items 12 - 5 = 7(占位符本身仍计 1)。被排除目录仍列在清单中以便知晓其存在,但不再展开、不占空间。
5.9 --max-depth:限制扫描深度(1.15.1 不支持)
作用:限制扫描的最大目录深度。实测 ncdu 1.15.1 无此参数,直接报错:
ncdu --max-depth 1 /root/t-ncdu
ncdu: Unknown option '--max-depth'.
⚠️ 注意:
--max-depth并非 ncdu 的命令行参数(帮助中未列出)。限制深度的需求可改用--exclude排除深层目录,或在 TUI 界面内折叠子目录实现。
5.10 -q:安静模式(2 秒刷新)
作用:把扫描 / 界面刷新间隔降低到 2 秒,适合扫描超大目录时减少终端刷新开销。
ncdu -q /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
5.0 MiB [##########] big.bin
2.0 MiB [#### ] /sub1
8.0 KiB [ ] /.hiddendir
4.0 KiB [ ] passwd.bak
4.0 KiB [ ] hello.txt
0.0 B [ ] .hiddenfile
Total disk usage: 7.0 MiB Apparent size: 7.0 MiB Items: 12
说明:扫描进度条的刷新频率降为每 2 秒一次(默认约 1 秒),数据结果与默认一致。1.15.1 中 -q 没有长形式。
5.11 -a / -s:1.15.1 不存在的参数(实测报错)
作用:历史 / 其它版本中 -a 曾用于「显示文件」、-s 曾用于「汇总输出」,但 ncdu 1.15.1 均不支持,实测如下:
ncdu -a /root/t-ncdu
ncdu: Unknown option '-a'.
ncdu -s /root/t-ncdu
ncdu: Unknown option '-s'.
⚠️ 注意:1.15.1 直接报
Unknown option退出。1.15.1 中「显示文件 / 汇总」能力由默认行为(目录与文件同列表展示、底部自动汇总)覆盖,无需额外参数。
5.12 --hide-hidden:默认隐藏隐藏文件(1.15.1 不支持)
作用:默认隐藏以 . 开头的文件与目录。实测 ncdu 1.15.1 无此参数(1.22 才有),直接报错:
ncdu --hide-hidden /root/t-ncdu
ncdu: Unknown option '--hide-hidden'.
⚠️ 注意:1.15.1 默认显示隐藏文件(见 5.3 帧),想隐藏需在进入界面后按键切换显示,命令行没有对应参数。
5.13 --si:以 1000 进制(SI)显示单位
作用:把单位从二进制(1024)切换为十进制(1000),即 MiB → MB、KiB → kB。
ncdu --si /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
5.2 MB [##########] big.bin
2.1 MB [#### ] /sub1
8.2 KB [ ] /.hiddendir
4.1 KB [ ] passwd.bak
4.1 KB [ ] hello.txt
0.0 B [ ] .hiddenfile
Total disk usage: 7.4 MB Apparent size: 7.4 MB Items: 12
说明:同一文件在两种单位下的读数不同:big.bin 由 5.0 MiB(1024³ 进制)显示为 5.2 MB(1000³ 进制),总量由 7.0 MiB → 7.4 MB。
5.14 --color SCHEME:配色方案
作用:指定界面配色,1.15.1 取值 off / dark(1.22 才支持 dark-bg;默认自动判断)。
ncdu --color dark /root/t-ncdu
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /root/t-ncdu ---------------------------------------------------------------
5.0 MiB [##########] big.bin
2.0 MiB [#### ] /sub1
8.0 KiB [ ] /.hiddendir
4.0 KiB [ ] passwd.bak
4.0 KiB [ ] hello.txt
0.0 B [ ] .hiddenfile
Total disk usage: 7.0 MiB Apparent size: 7.0 MiB Items: 12
说明:--color dark 采用深色终端配色(数据与默认一致,颜色差异在文本帧中不可见);--color off 强制关闭颜色,适合纯文本 / 脚本环境。
5.15 -o 导出 / -f 导入:JSON 扫描结果交换
作用:-o FILE 把扫描结果导出为 JSON 文件;-f FILE 导入后离线浏览,便于定期归档对比。
ncdu -o /tmp/ncdu-scan.json /root/t-ncdu
/root/t-ncdu/.hiddendir/secret.conf 3 files
说明:导出结束后打印末条扫描路径与文件数(3 files)。查看 JSON 内容:
cat /tmp/ncdu-scan.json
[1,1,{"progname":"ncdu","progver":"1.15.1","timestamp":1791307413},
[{"name":"/root/t-ncdu","asize":4096,"dsize":4096,"dev":95,"ino":29622668},
[{"name":".hiddendir","asize":4096,"dsize":4096,"ino":29622681},
{"name":"secret.conf","asize":6,"dsize":4096,"ino":29622707}],
[{"name":"sub1","asize":4096,"dsize":4096,"ino":29622675},
{"name":"medium.bin","asize":2097152,"dsize":2097152,"ino":29622714},
[{"name":"sub2","asize":4096,"dsize":4096,"ino":29622676},
{"name":"deep.txt","asize":5,"dsize":4096,"ino":29622720}],
{"name":"world.log","asize":6,"dsize":4096,"ino":29622715},
[{"name":".hidden","asize":4096,"dsize":4096,"ino":29622688}]],
{"name":"passwd.bak","asize":1275,"dsize":4096,"ino":29622701},
{"name":"big.bin","asize":5242880,"dsize":5242880,"ino":29622689},
{"name":".hiddenfile","ino":29622702},
{"name":"hello.txt","asize":6,"dsize":4096,"ino":29622694}]]
说明:JSON 首元素 [1,1,{...}] 中 1 为格式版本号(1.22 为版本 2),且每个条目含 ino 字段(inode 号,1.22 无此字段);asize 为 apparent size(逻辑大小)、dsize 为 disk usage(块占用),big.bin 的 asize=5242880(5 MiB)与 dsize 一致,小文件则 dsize 固定为 4096,passwd.bak 的 asize=1275。再以 -f 导入浏览:
ncdu -f /tmp/ncdu-scan.json
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help [imported]
--- /root/t-ncdu ---------------------------------------------------------------
5.0 MiB [##########] big.bin
2.0 MiB [#### ] /sub1
8.0 KiB [ ] /.hiddendir
4.0 KiB [ ] passwd.bak
4.0 KiB [ ] hello.txt
0.0 B [ ] .hiddenfile
Total disk usage: 7.0 MiB Apparent size: 7.0 MiB Items: 12
说明:导入模式标题栏出现 [imported] 标记,列表与扫描结果一致;此时无需访问磁盘即可浏览历史快照,适合对已归档的 JSON 反复分析。
六、常见问题与真实行为
6.1 现象:ncdu -a、ncdu -s、ncdu --max-depth、ncdu --hide-hidden 报 Unknown option
原因:这四个参数均非 ncdu 1.15.1 的命令行参数(帮助中未列出;-a / -s 来自其它版本历史用法,--max-depth / --hide-hidden 是 1.22 才新增)。解决:显示文件与汇总为默认行为;限制深度可用 --exclude 排除深层目录;隐藏文件可在界面内按键切换显示。
6.2 现象:--exclude '*.log' 完全无效,日志文件一个都没排除
原因:1.15.1 的排除模式只匹配目录名,不匹配文件名(实测 *.log、hello.txt、*.bin、*.txt 等文件模式全部无效,Items 不变)。这与 1.22 不同(1.22 可排除文件,被排除文件带 < 前缀且 Items 不减)。解决:1.15.1 上想排除日志 / 缓存,请让模式命中目录名(如 --exclude '*.log' 对名为 logs/ 的目录有效),或升级 ncdu。
6.3 现象:被排除目录以 < 前缀占位符显示,内部条目消失
原因:ncdu 的目录排除是「不深入 + 占位显示」:命中的目录显示 < 0.0 B,其内部文件不再计入大小与 Items(占位符本身计 1 条)。解决:顶层排除用 --exclude 目录名,嵌套目录排除同样生效(见 5.7 的 Items 12→11)。
6.4 现象:磁盘占用(disk usage)大于文件逻辑大小(apparent size)
原因:小文件按文件系统块对齐占用(如 6 B 的 hello.txt 实际占用 4096 B),故 dsize ≥ asize;稀疏文件、压缩文件系统场景则相反。解决:关注磁盘是否吃紧时看 Total disk usage,关注文件真实内容大小时看 Apparent size。
6.5 版本差异速览:ncdu 1.15.1(Ubuntu 22.04)vs 1.22(CentOS 8)
| 对比项 | Ubuntu 22.04(ncdu 1.15.1) | CentOS 8(ncdu 1.22) |
|---|---|---|
| JSON 格式版本 | [1,1,{...}](格式版本 1,条目含 ino 字段) | [1,2,{...}](格式版本 2,无 ino) |
--exclude 语义 | 模式只匹配目录名;文件模式完全无效;排除目录显示 < 占位、Items 减少 | 文件也可排除;被排除文件带 < 前缀且 Items 不减 |
| 隐藏文件控制 | 无 --hide-hidden(报 Unknown option),仅界面内按键切换 | --hide-hidden 参数支持 |
--show-mtime | 无此参数 | 支持(需配合 -e) |
--enable-shell / --enable-delete / --enable-refresh | 无(仅 -r 只读) | 支持(可在界面内执行 shell / 删除 / 刷新) |
--color 取值 | off / dark | off / dark / dark-bg |
--apparent-size、--group-directories-first、--sort 等 | 不支持 | 支持 |
-q 长形式 | 无(仅 -q) | -q / --slow-ui-updates |
| 帮助结构 | 单组平铺 | 分 Mode / Scan / Interface 三组 |
-a / -s / --max-depth | 均不支持(报 Unknown option) | 均不支持(报 Unknown option) |
| 包来源 | Ubuntu 官方仓库 jammy/universe(1.15.1-1) | EPEL(ncdu-1.22-1.el8) |
6.6 现象:文本捕获帧存在扫描进度残留与换行错位
原因:交互式 TUI 通过 script 捕获为文本帧时,ncurses 的扫描进度条、边框绘制符号会以瞬态形式留在帧中;本文档展示时已剥离终端控制序列并忽略进度条 / 边框残留行。解决:读取帧内容时以有意义的字段(大小、名称、合计、Items)为准。
七、命令与参数速查表
| 参数/命令 | 含义 | 实测说明/默认值 |
|---|---|---|
ncdu -v / -V / --version | 打印版本 | 实测输出 ncdu 1.15.1 |
-h / --help | 打印帮助 | 单组平铺列出全部选项(1.15.1) |
-f FILE | 导入扫描结果 | 导入后标题栏显示 [imported],无需读盘 |
-o FILE | 导出 JSON 扫描结果 | 格式版本 1、条目含 ino;与 -f 成对使用 |
-e / --extended | 启用扩展信息 | 默认列表无变化,界面内按键切换体现 |
-x / --one-file-system | 不跨文件系统 | 扫描到挂载点即停止深入 |
-q | 安静模式 | 刷新间隔 2 秒;无长形式 |
-r | 只读模式 | 禁删除 |
-0 / -1 / -2 | 扫描进度 UI 级别 | 0=none、2=full ncurses |
--si | 1000 进制单位 | 7.0 MiB → 7.4 MB |
--exclude PATTERN | 排除匹配模式的目录 | 1.15.1 只匹配目录名,文件模式无效 |
-X / --exclude-from FILE | 从文件读取排除模式 | 每行一个;实测 *.log+sub2 → Items 12→11 |
--exclude-caches | 排除含 CACHEDIR.TAG 的目录 | 缓存目录标准标记 |
--exclude-kernfs | 排除 procfs/sysfs/cgroup 等 | 扫描 / 时强烈建议 |
-L / --follow-symlinks | 跟随符号链接(不含目录) | 防止链接到外部目录递归爆炸 |
--confirm-quit | 退出前确认 | 防止误按 q 退出 |
--color SCHEME | 配色 | off / dark(1.15.1 无 dark-bg) |
-a / -s / --max-depth / --hide-hidden | — | 1.15.1 不支持,均报 Unknown option |
apt-get install -y ncdu | 在线安装 | 源为 jammy/universe |
apt-get install -y --download-only -o Dir::Cache::archives=<目录> ncdu | 离线只下载不安装 | 生成 ncdu_1.15.1-1_amd64.deb |
dpkg -i ncdu_1.15.1-1_amd64.deb | 离线安装本地 deb | 实测回显见第四章 |
八、卸载方式
在线安装的 ncdu 使用 apt-get 卸载:
apt-get remove -y ncdu
如需连同配置文件一起彻底清除:
apt-get purge -y ncdu
离线场景(使用 dpkg -i 安装)可先用 dpkg -l ncdu 确认包状态,再执行上述 apt-get remove/purge,或直接 dpkg -r ncdu。卸载后可用 which ncdu 或 ncdu --version 确认已移除。
💡 说明:ncdu 为交互式命令工具,无守护进程与开机自启项,卸载后无需额外清理服务;其用户配置文件位于
~/.config/ncdu/ncdu.conf,如彻底清理需一并删除。