#command-output #pty #tty #terminal #logging #process #exec

app faketty

在 pty 中执行命令的包装器,即使重定向输出

19 个稳定版本

1.0.18 2024年8月11日
1.0.17 2024年5月25日
1.0.16 2024年2月29日
1.0.14 2023年12月21日
1.0.1 2020年9月21日

#44命令行工具

Download history 24/week @ 2024-05-02 23/week @ 2024-05-09 29/week @ 2024-05-16 237/week @ 2024-05-23 55/week @ 2024-05-30 55/week @ 2024-06-06 70/week @ 2024-06-13 27/week @ 2024-06-20 38/week @ 2024-06-27 199/week @ 2024-07-04 24/week @ 2024-07-11 19/week @ 2024-07-18 36/week @ 2024-07-25 28/week @ 2024-08-01 171/week @ 2024-08-08 36/week @ 2024-08-15

每月下载量 275

MIT/Apache

12KB
174

faketty

github crates.io build status

一个用于在 pty 中执行命令的包装器二进制程序,即使重定向输出。

这允许分别记录进程的 stdout 和 stderr,而输出与未进行记录时在终端中看到的不同。

$ cargo install faketty
$ faketty bazel build :target >log/out 2>log/err
          ~~~~~~~~~~~~~~~~~~~ command to run

背景

当将 stdout/err 重定向到管道或文件时,进程可能会检测到输出不再发送到 tty(因为它没有宽度/高度、波特率等),并相应地改变其行为。例如,许多涉及终端进度条或彩色文本的程序,当输出不发送到终端时会禁用这些功能。

存在一个 script(1) 命令,它通过在伪终端(pty)中执行命令来使重定向命令的终端样式输出成为可能——一个具有宽度、高度等双向管道,并使进程相信它在与真实终端对话。然而,script 只使用单个 pty,这使得无法将 stdout 和 stderr 分解到不同的地方。

本仓库中的 faketty 命令与 script --quiet --return --command '...' /dev/null 类似,但它保留了独立的 stdout 和 stderr 流。


许可证

根据您的选择,在 Apache 许可证 2.0 版MIT 许可证 下许可。
除非您明确声明,否则您提交的任何有意包含在此程序中的贡献,根据 Apache-2.0 许可证定义,应按上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~3.5MB
~68K SLoC