🧭说明
lha 是一个用于处理 .lzh 和 .lha 格式压缩文件的Linux命令行工具,它源自日本开发者Haruhiko Okumura的LHA压缩算法,主要用于兼容旧的压缩文件,尤其在处理早年日本系统留下的归档文件时比较有用。
📌 主要功能与安装
由于 lha 并非大多数Linux发行版的预装工具,可能需要手动安装:
| 发行版 | 安装命令 |
|---|---|
| Ubuntu/Debian | sudo apt-get install lha |
| CentOS/RHEL | sudo yum install lha (CentOS 7) 或 sudo dnf install lha (CentOS 8) |
安装后,可以通过 lha --version 验证是否成功。
📖 核心命令与语法
lha 命令的基本语法结构如下:
bash
lha [选项] 命令 压缩文件 [文件或目录...]
常用命令参数(通常作为命令的首个参数):
| 命令 | 说明 |
|---|---|
a |
将文件或目录添加到压缩包(若压缩包不存在则创建) |
e |
解压文件到当前目录(不保留原始路径结构) |
x |
解压 文件并保留完整的路径结构 |
l |
列出压缩包内的文件详细内容 |
d |
从压缩包中删除指定文件 |
t |
测试压缩包的完整性 |
常用选项参数(可配合命令使用):
| 选项 | 说明 |
|---|---|
-v |
显示详细的操作信息 |
-q |
安静模式,减少输出信息 |
-f |
强制执行操作 |
-p |
保留文件的原始权限属性 |
🛠️ 常用操作示例
下面通过一个表格快速了解 lha 的典型用法场景:
| 操作场景 | 命令示例 | 说明 |
|---|---|---|
| 创建压缩包 | lha a archive.lzh file1.txt dir1/ |
将file1.txt和dir1目录打包成archive.lzh |
| 查看压缩包内容 | lha l archive.lzh |
列出压缩包内文件的权限、大小、压缩率等信息 |
| 解压到当前目录 | lha e archive.lzh |
将所有文件解压到当前目录 |
| 解压保留路径 | lha x archive.lzh |
保持压缩包内的目录结构进行解压 |
| 解压特定文件 | lha e archive.lzh file1.txt |
仅解压压缩包里的file1.txt |
| 删除压缩包内文件 | lha d archive.lzh oldfile.txt |
从archive.lzh中删除oldfile.txt |
| 测试压缩包完整性 | lha t archive.lzh |
检查压缩包是否有错误 |
⚠️ 重要提示与技巧
- 解压路径差异 :
e和x命令在解压时的行为不同。如果压缩包内文件包含路径信息(如docs/file.txt),使用e会直接将file.txt解压到当前目录,而x则会创建docs目录并将文件解压到其中。 - 脚本中使用 :在脚本中执行
lha时,可以加上-q选项来抑制非关键输出,使日志更清晰。 - 文件权限保留 :使用
-p选项可以在解压时保留文件原始的权限属性,这在备份恢复时很有用。 - 分卷压缩 :虽然不常用,但
lha支持分卷压缩。例如lha -v -s1024k a archive.lzh large_dir/会创建每个大小为1MB的分卷。
❓ 常见问题
Q1: lha 和 zip/gzip 有什么区别?
- 格式专用 :
lha是专门为.lzh/.lha格式设计的,而zip和gzip更为通用。 - 压缩率 :
lha的压缩率通常不如gzip或bzip2。 - 主要用途 :
lha的优势在于兼容旧系统文件,新项目建议使用更通用的zip或tar.gz格式。
Q2: 如何解压密码保护的 .lzh 文件?
lha命令本身不支持密码保护 。如果遇到加密的.lzh文件,可以尝试使用unar工具:unar -p 密码 protected.lzh。
Q3: 执行 lha 命令报错 "command not found" 怎么办?
- 这表示系统未安装
lha,请参照本文开头部分的安装命令进行安装。
💎 总结
lha 是一个功能专一的压缩工具,虽然在新项目中已不常用,但在处理遗留的 .lzh 格式文件时仍是不可或缺的工具。