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