19 个不稳定版本

0.16.1 2022年9月22日
0.16.0 2020年11月8日
0.15.0 2018年9月26日
0.14.0 2017年12月11日
0.9.4 2016年11月10日

#309 in 文本处理

Download history 1485/week @ 2024-03-14 1483/week @ 2024-03-21 1711/week @ 2024-03-28 1630/week @ 2024-04-04 1867/week @ 2024-04-11 1581/week @ 2024-04-18 1815/week @ 2024-04-25 1768/week @ 2024-05-02 1560/week @ 2024-05-09 1896/week @ 2024-05-16 1981/week @ 2024-05-23 1845/week @ 2024-05-30 2057/week @ 2024-06-06 1767/week @ 2024-06-13 1745/week @ 2024-06-20 1888/week @ 2024-06-27

7,788 每月下载量
用于 35 个 crates (34 直接)

Apache-2.0/MIT

16KB
238

分页器 - 长输出最佳伙伴

Build Status Crates.io Docs.rs

通过外部分页器进行管道传输的长输出的所有魔法处理。类似于 git 对其输出所做的。

快速入门

extern crate pager;

use pager::Pager;

fn main() {
    Pager::new().setup();
    // The rest of your program goes here
}

在内部,它将当前进程进行分叉,将子进程的 stdout 连接到父进程的 stdin,然后替换父进程为选定的分页器(环境变量 PAGER)。子进程将继续正常运行。如果不存在 PAGER 环境变量,Pager 将在当前 PATH 中查找 more。如果找到,它将用作默认分页器。

您可以有限度地控制分页器。例如,您可以更改用于查找分页器可执行文件的环境变量。

extern crate pager;

use pager::Pager;

fn main() {
    Pager::with_env("MY_PAGER").setup();
    // The rest of your program goes here
}

您还可以设置替代的默认(回退)分页器,以代替 more。如果设置了 PAGER 环境变量,它将具有优先级。

extern crate pager;

use pager::Pager;

fn main() {
    Pager::with_default_pager("pager").setup();
    // The rest of your program goes here
}

如果没有找到合适的分页器,setup() 将不执行任何操作,您的可执行文件将继续正常运行。如果设置失败,Pager 将清理自身,并且不会泄露资源。

或者,您可以直接指定所需的分页器命令,就像它出现在 PAGER 环境变量中一样。如果您需要一些特定的分页器以及/或标志(例如 "less -r")并且希望避免强制您的消费者仅为了您的应用程序而修改他们现有的 PAGER 配置,这很有用。

extern crate pager;
use pager::Pager;
fn main() {
    Pager::with_pager("less -r").setup();
    // The rest of your program goes here
}

有时,如果您可执行文件的输出不是 tty,您可能希望绕过分页器。在这种情况下,您可以使用 .skip_on_notty() 来获得所需的效果。

extern crate pager;
use pager::Pager;
fn main() {
    Pager::new().skip_on_notty().setup();
    // The rest of your program goes here
}

如果您需要完全禁用分页器,请设置环境变量 NOPAGER,则Pager::setup()将跳过初始化。主应用程序将按正常继续。Pager::is_on()将反映没有激活分页器的事实。

依赖项

~230KB