我的问题类似于这个问题:如何检测我的shell脚本是否通过管道运行?.不同之处在于我正在处理的脚本是用Ruby编写的.
比方说我跑:
./test.rb
Run Code Online (Sandbox Code Playgroud)
我希望stdout上的文字有颜色,但是
./test.rb | cat
Run Code Online (Sandbox Code Playgroud)
我希望剥离颜色代码.
$stdout.isatty
习惯使用或更多$stdout.tty?
.我创建了一个小的test.rb文件来演示,内容:
puts $stdout.isatty
Run Code Online (Sandbox Code Playgroud)
结果:
$ ruby test.rb
true
$ ruby test.rb | cat
false
Run Code Online (Sandbox Code Playgroud)
参考:https://ruby-doc.org/core/IO.html#method-i-isatty
小智 5
使用IO#stat.pipe?
。
仅在 TTY 设备上IO#tty?
返回 true 。对于 UNIX 风格的管道返回 false(请参阅“man 2 pipeline”)。
$ echo "something" | ruby -e 'puts $stdin.stat.pipe?'
true
$ echo "something" | ruby -e 'puts $stdin.tty?'
false
$ ruby -e 'puts $stdin.tty?'
true
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
342 次 |
最近记录: |