用法
四個指令 — 其他都是選項。
看歸檔内容:lha l archive.lzh
最常用的操作。列出歸檔内每个成员的大小、壓縮率、时间戳:
$ lha l README.lzh
PERM UID GID SIZE RATIO STAMP NAME
[generic] 1234 60.0% Jul 14 20:30 README.md
[generic] 5678 72.5% Jul 14 20:30 src/main.c
---------- -------------------- ------- ----------
2 files, 6912 bytes (62.5%)
加 v 出詳情(路径权限 + CRC):
$ lha lv README.lzh
两个 v 是超詳細(每块信息):
$ lha lvv README.lzh
解壓:lha x archive.lzh
預設解壓模式。檔案按歸檔里的相对路径写到当前目录:
$ lha x archive.lzh
常用選項:
q(安靜):lha xq archive.lzhw=DIR(写到 DIR,自动 mkdir):lha xw=output archive.lzhf(强制覆盖,不问):lha xf archive.lzhi(忽略目录条目,把所有檔案平铺到当前目录):lha xi archive.lzh
glob 過濾:
$ lha x archive.lzh "*.c" # 只解 *.c
$ lha x archive.lzh src/* # 只解 src/ 下
CRC 校驗:lha t archive.lzh
遍歷整个歸檔,重算每个成员的 CRC16,和歸檔头里写的对一遍。退出码 0 = 全过;非 0 = 有成员 CRC 不对(歸檔坏了或者没下完)。
$ lha t README.lzh
test README.lzh : OK
在 CI 里这个很管用——从上游 mirror 拉完 .lzh 之后
lha t 一下再解。
打印到标准輸出:lha p archive.lzh file
把歸檔里单个成员輸出到 stdout(已解壓)。等价
tar -xOf archive.lzh file:
$ lha p README.lzh src/main.c | head -5
/* main.c — entry point */
不加成员過濾则按顺序打印全部成员,方便管道:
$ lha p archive.lzh | grep TODO
lhasa 不做什么
- 不写新
.lzh歸檔。要写就只能用原版 jca02266/lha (LHa for UNIX 1.14i)自己 build 的lha。 - 不写新
.lzs或.pma。同上——lhasa 故意只做 decode,encoder 是另一个历史问题。
读(2026 年的 99% 用例)用 lhasa 就够了。