Linux lha命令

简介

lha是Linux系统中用于处理LZH/LHA压缩格式的命令行工具。LZH格式在日本较为流行,特别是在早期的Windows和MS-DOS系统中。lha可以创建、查看和提取.lzh、.lha格式的压缩文件。

注意:lha命令通常不是Linux系统默认安装的,需要手动安装。LZH格式在现代Linux系统中较少使用,但在处理一些旧档案时可能还会遇到。

安装方法

在大多数Linux发行版中,lha需要手动安装:

Debian/Ubuntu系统:
sudo apt update
sudo apt install lha
RHEL/CentOS/Fedora系统:
# RHEL/CentOS需要启用EPEL仓库
sudo yum install epel-release
sudo yum install lha

# 或使用dnf(Fedora/RHEL8+)
sudo dnf install lha
Arch Linux系统:
sudo pacman -S lha
从源码编译安装:
# 下载源码
wget http://www2m.biglobe.ne.jp/~dolphin/lha/lha-1.14i.tar.gz

# 解压
tar xzf lha-1.14i.tar.gz
cd lha-1.14i

# 编译安装
./configure
make
sudo make install

语法格式

lha [选项] 命令 [参数] 压缩文件 [文件...]

常用命令

命令 说明
a 添加文件到压缩包(如果压缩包不存在则创建)
e 从压缩包中提取文件(不保留路径)
x 从压缩包中提取文件(保留路径)
l 列出压缩包中的文件列表
t 测试压缩包的完整性
d 从压缩包中删除文件
u 更新压缩包中的文件(只添加新文件或更新旧文件)
v 列出压缩包中的文件详细信息
p 将压缩包中的文件内容输出到标准输出

常用选项

选项 说明
-a 归档模式,保留文件属性
-c 创建新的压缩包
-d 解压后删除压缩包
-f 强制操作,不询问确认
-g 使用gzip算法(某些版本支持)
-h 显示帮助信息
-q 安静模式,不显示处理信息
-v 详细模式,显示处理过程
-x 允许提取文件名中的扩展属性
-z 使用compress算法(某些版本支持)

使用示例

示例1:创建压缩包

创建.lzh压缩包:

# 创建几个测试文件
echo "File 1 content" > file1.txt
echo "File 2 content" > file2.txt
mkdir docs
echo "Document content" > docs/doc1.txt

# 创建压缩包(添加文件)
lha a archive.lzh file1.txt file2.txt docs/

# 或使用-c选项创建新压缩包
lha -c archive2.lzh *.txt
示例2:查看压缩包内容

列出压缩包中的文件:

# 简单列表
lha l archive.lzh

# 详细列表
lha v archive.lzh
示例3:提取文件

从压缩包中提取文件:

# 提取所有文件(不保留路径)
lha e archive.lzh

# 提取所有文件(保留路径)
lha x archive.lzh

# 提取特定文件
lha e archive.lzh file1.txt

# 提取到指定目录
mkdir extracted
lha x archive.lzh -w extracted/
示例4:更新压缩包

向现有压缩包中添加新文件或更新旧文件:

# 创建新文件
echo "New file content" > newfile.txt

# 更新压缩包
lha u archive.lzh newfile.txt

# 查看更新后的压缩包
lha l archive.lzh
示例5:删除压缩包中的文件

从压缩包中删除指定文件:

# 删除文件
lha d archive.lzh file1.txt

# 查看删除后的结果
lha l archive.lzh
示例6:测试压缩包完整性

检查压缩包是否完整:

# 测试压缩包
lha t archive.lzh

# 如果有错误会显示错误信息
示例7:显示压缩包中的文件内容

不解压直接查看文件内容:

# 显示文件内容
lha p archive.lzh file1.txt

# 通过管道传递给其他命令
lha p archive.lzh file1.txt | grep "content"

高级用法

1. 批量处理多个压缩包
# 批量解压当前目录下所有.lzh文件
for file in *.lzh; do
    echo "Extracting $file..."
    lha x "$file"
done
2. 创建分卷压缩包

某些版本的lha支持分卷压缩:

# 创建分卷压缩(每卷1MB)
lha a -s1024k archive.lzh largefile.iso
3. 使用不同压缩级别
# 使用最大压缩
lha a -m5 archive.lzh file.txt

# 使用快速压缩
lha a -m1 archive.lzh file.txt

常见问题

lha不是Linux系统的标准工具,需要手动安装。请参考上面的安装方法。

主要支持.lzh和.lha格式。某些版本可能还支持其他格式,但不如gzip或zip通用。

lha应该能解压大多数标准的.lzh文件。如果遇到问题,可以尝试使用-f选项强制解压,或使用其他工具如unar。

unlha通常只是lha的符号链接或别名,功能相同。有些系统可能只安装了解压工具unlha,而没有完整的lha。

兼容性说明

LZH格式的兼容性:

系统/工具 支持情况 备注
Windows (早期版本) 原生支持 Windows 3.x/95/98时期常用
Windows (现代版本) 需要第三方软件 如7-Zip、WinRAR
macOS 需要第三方工具 如The Unarchiver
Linux 需要安装lha 或使用unar等替代工具
其他工具 7-Zip、WinRAR 广泛支持.lzh格式

替代工具

如果不想使用lha,可以考虑以下替代工具:

  • unar - 支持多种格式的解压工具,包括.lzh
  • 7za - 7-Zip的命令行版本
  • unzip - 处理.zip格式(更通用)
  • tar - 配合gzip/bzip2/xz(Linux标准)