[英]What does #tty? on STDIN mean / do in ruby?
在这里阅读ruby文档并不是很有帮助:
如果ios与终端设备(tty)关联,则返回true,否则返回false。
我希望获得一些其他资源或解释,以帮助我更好地理解这一点。
对于上下文,我正在编写一个小的命令行程序,该程序接受文件路径或管道内容到ruby可执行文件中,并且正在使用#tty?
确定即将发生的事情。
谢谢!
好像http://www.jstorimer.com/blogs/workingwithcode/7766125-writing-ruby-scripts-that-respect-pipelines提供了关于#tty?
的最简洁的描述#tty?
确实:
Ruby的IO#isatty方法(别名为IO#tty?)将告诉您所涉及的IO是否已连接到终端。 例如,在管道传输时,在$ stdout上调用它会返回false。
以下是一些有用的相关信息:
在UNIX中,/ dev / tty *是任何充当“ teletype”(即终端)的设备。 (之所以称为电传打字机,是因为那是我们在那些陷入困境的日子里为终端所用的。)
本着问题的精神,下面是一个从http://zetcode.com/lang/rubytutorial/io/写入/dev/tty
的示例:
#!/usr/bin/ruby
fd = IO.sysopen "/dev/tty", "w"
ios = IO.new(fd, "w")
ios.puts "ZetCode"
ios.close
看一下grep
如何处理传统UNIX方法的这种情况:没有指定文件? 默认为$stdin
,不必担心TTY状态,也许有人想粘贴到终端中。 如果指定了文件名,请从中读取并忽略STDIN。
tty?
函数在那里,所以您可以知道是否应该发送诸如ANSI转义码之类的颜色来为输出着色。 如果有人想通过STDIN提供输入,通常这不是一个可靠的信号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.