> 文本处理与搜索 > lesspipe

lesspipe: less 的预处理器

`lesspipe` 是一个输入预处理器脚本,它扩展了 `less` 命令的功能,允许用户直接查看压缩文件、归档文件、PDF 等多种格式的文件。通过 `LESSOPEN` 环境变量,`less` 在打开文件之前会调用 `lesspipe`,将文件内容通过管道传递。这样,用户无需进行解压或转换等额外步骤,即可立即查看文件内容。

概述

`lesspipe` 是一个帮助 `less` 处理除纯文本文件之外的各种文件格式的实用程序。当 `less` 打开文件时,它会执行 `lesspipe` 脚本,将文件内容转换为标准输出,然后 `less` 接收此输出并进行显示。

主要功能

  • 直接查看压缩文件(如 gzip, bzip2, xz 等)的内容
  • 查看归档文件(如 tar, zip, rar 等)的内部列表和内容
  • 提取并查看 PDF、图像等非文本文件的文本内容(需要相关工具)
  • 保持 `less` 强大的搜索和导航功能

安装与配置

`lesspipe` 通常作为 `less` 包的一部分提供,或者作为独立的 `lesspipe` 包在大多数 Linux 发行版中提供。关键在于设置 `LESSOPEN` 环境变量,使 `less` 使用 `lesspipe`。

检查安装

大多数系统默认安装了它,但您可以使用以下命令检查其是否存在。

which lesspipe

安装软件包(如果需要)

如果 `lesspipe` 未安装,您可以使用以下命令进行安装。

Debian/Ubuntu

sudo apt update && sudo apt install less

Fedora/RHEL

sudo dnf install less

设置 LESSOPEN 环境变量

要启用 `lesspipe`,您需要在您的 shell 配置文件(例如 `~/.bashrc`、`~/.zshrc`)中添加 `LESSOPEN` 环境变量。`lesspipe` 的确切路径可能因系统而异,请使用 `which lesspipe` 进行确认。

LESSOPEN 设置示例

export LESSOPEN="|/usr/bin/lesspipe %s"
export LESS_ADVANCED_PREPROCESSOR=1
source ~/.bashrc

常见的设置如下。使用 `source` 命令立即应用更改。

LESSOPEN 变量说明

  • `|`: 表示通过管道将 `lesspipe` 的输出传递给 `less`。
  • `%s`: 是 `less` 尝试打开的文件的路径占位符。
  • `LESS_ADVANCED_PREPROCESSOR=1`: 用于在某些 `lesspipe` 版本中启用高级预处理功能。

使用示例

当 `lesspipe` 正确配置后,您像往常一样使用 `less` 命令,它将自动处理各种文件格式。

查看 gzip 压缩文件内容

less my_log.gz

直接使用 `less` 查看 `.gz` 文件的内容,无需解压。

查看 tar 归档文件列表

less my_archive.tar.gz

使用 `less` 查看 `.tar.gz` 文件中的文件列表,无需解压。

查看 zip 文件列表

less my_documents.zip

使用 `less` 查看 `.zip` 文件中的文件列表,无需解压。

查看 PDF 文件文本内容

less document.pdf

如果安装了 `pdftotext` 等工具,您可以使用 `less` 查看 PDF 文件的文本内容。

查看二进制文件的字符串

less /bin/ls

对于二进制文件,您可以使用 `strings` 命令提取字符串并通过 `less` 查看。

提示与注意事项

有效使用 `lesspipe` 的技巧和需要考虑的事项。

自定义 lesspipe 脚本

默认的 `lesspipe` 脚本是 shell 脚本,您可以根据需要修改它,或者编写自己的 `lesspipe` 脚本并将其指定给 `LESSOPEN` 变量。例如,您可以为特定文件格式添加额外的处理逻辑。

  • 复制并修改现有的 `lesspipe` 脚本
  • 添加新的文件格式处理逻辑
  • 在 `LESSOPEN` 变量中指定自定义脚本路径

性能考虑

当使用 `lesspipe` 打开非常大的压缩文件或归档文件时,提取和转换文件内容可能需要一些时间。在这种情况下,`less` 的启动可能会有轻微延迟。

安全注意事项

`lesspipe` 通过执行外部命令来处理文件。因此,使用不可信的 `lesspipe` 脚本,或者恶意文件通过 `lesspipe` 处理,都可能导致安全问题。请始终使用来自可信来源的 `lesspipe`,并注意 `LESSOPEN` 变量的设置。

检查支持的文件格式

通过查看系统中安装的 `lesspipe` 脚本内容,您可以了解它支持哪些文件格式以及使用哪些外部工具。通常,您可以使用 `cat /usr/bin/lesspipe`(或相应路径)命令查看脚本内容。


相同类别命令