ruby - 如何检测 Ruby 脚本是否正在通过 shell 管道运行?

标签 ruby shell pipe

我的问题与此类似:How to detect if my shell script is running through a pipe? .不同之处在于我正在处理的脚本是用 Ruby 编写的。

假设我运行:

./test.rb

我希望 stdout 上的文本带有颜色,但是

./test.rb | cat

我希望颜色代码被删除。

最佳答案

使用 $stdout.isatty 或更惯用的方式,$stdout.tty?。我创建了一个小的 test.rb 文件来演示,内容:

puts $stdout.isatty

结果:

$ ruby test.rb
true

$ ruby test.rb | cat
false

引用:https://ruby-doc.org/core/IO.html#method-i-isatty

关于ruby - 如何检测 Ruby 脚本是否正在通过 shell 管道运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43789845/

相关文章:

bash - 如何对当前目录和子目录中的文件使用 head 命令?

sql - 如何统计文件被修改为特定日期时间格式的时间

c++ - 通过 Linux 将字节文件通过管道传输到 C++ 程序并逐字节读取?

无法使用 fork 和 pipe 在 C 中执行控制台命令

ruby - 是否可以在这里使用标准断言而不是模拟期望?

ruby-on-rails - 用于生产的扭矩箱。任何人?

ruby-on-rails - 将 Rake 与 Rufus 一起使用

ruby-on-rails - 无法使用回形针上传照片

bash - 如何在 shell 脚本中停止一个进程并转到下一个进程?

c - C 的管道问题。是否有额外的进程正在执行?