4 个稳定版本

1.0.4 2021年9月11日
1.0.1 2021年9月10日

#27 in #虚拟

MIT 许可证

9KB

脏东西

用 Rust 编写的简单电传打字机测试虚拟

用法

$ dutty 
Standard output is a TERMINAL
Standard input is a TERMINAL
Standard error is a TERMINAL

在这里,脏东西 识别出它的 stdin、stdout 和 stderr 流都是从终端来的;因此它告诉我们这些流都是终端。

让我们尝试将其标准 I/O 重定向到电传打字机

  1. stdin
$ dutty < somefile
Standard output is a TERMINAL
Standard input is a TELETYPE
Standard error is a TERMINAL

在这里,我们将 脏东西 的标准输入重定向到一个文件(它是一个电传打字机),因此它告诉我们 stdin 是一个电传打字机。

这也适用于管道

$ head /dev/random | dutty
Standard output is a TERMINAL
Standard input is a TELETYPE
Standard error is a TERMINAL

您可能还会注意到,脏东西 将单词 TERMINALTELETYPE 分别用绿色和红色突出显示。即使它的 stdout 或 stderr 被重定向,它也会这样做,因为它使用的是 stubborn I/O(尝试精确地写入控制台,而不管其 stdio 的状态如何)。

  1. stdout 脏东西 对 stdout 有类似的行为。
$ dutty | cat
Standard output is a TELETYPE
Standard input is a TERMINAL
Standard error is a TERMINAL
  1. stderr 脏东西 在其标准错误被重定向时具有相同的行为。
$ dutty 2>| cat
Standard output is a TERMINAL
Standard input is a TERMINAL
Standard error is a TELETYPE
$ dutty |& cat
Standard output is a TELETYPE
Standard input is a TERMINAL
Standard error is a TELETYPE

依赖项

~2.5MB
~40K SLoC