#tty是什么?关于STDIN意味着什么/做红宝石?

dai*_*no3 6 ruby io

阅读ruby文档在这里并没有太大帮助:

如果ios与终端设备(tty)关联,则返回true,否则返回false.

我希望得到一些额外的资源或解释,以帮助我更好地理解这一点.

对于上下文,我正在编写一个小命令行程序,它接受文件路径或管道内容到ruby可执行文件中并#tty?用于确定即将发生的事情.

谢谢!

SoA*_*Man 8

似乎http://www.jstorimer.com/blogs/workingwithcode/7766125-writing-ruby-scripts-that-respect-pipelines提供了最简洁的描述#tty?

Ruby 的 IO#isatty 方法(别名为 IO#tty?)会告诉您有问题的 IO 是否附加到终端。例如,在 $stdout 上调用它,当它被管道传输时将返回 false。

以下是一些您可能会觉得有用的相关信息:

背景含义通过pty 和 tty 是什么意思?

在 UNIX 中,/dev/tty* 是任何充当“电传打字机”的设备,即终端。(称为电传打字机,因为那是我们在那些黑暗日子里用于终端的东西。)

本着问题的精神,这里有一个/dev/ttyhttp://zetcode.com/lang/rubytutorial/io/写入的示例:

#!/usr/bin/ruby

fd = IO.sysopen "/dev/tty", "w"
ios = IO.new(fd, "w")
ios.puts "ZetCode"
ios.close
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,@SoAwesomeMan。正是我想要的 - 带有一些解释的附加资源。 (3认同)