簡體   English   中英

#tty是什么? 在STDIN上意味着/在紅寶石中做?

[英]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。

以下是一些有用的相關信息:

pty和tty是什么意思?

在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM