跳转到正文
Lishude's Web Note
返回

确定 stdout/stderr 是否已经被重定向

有个场景是当日志输出到屏幕时增加颜色,当输出到普通文件或者重定向就去掉颜色,因为颜色是通过 ANSII Code 控制的,看起来像是乱码一样。

在 Unix 中,万物皆文件,那么就可以通过读取文件属性确认。

例如在 go 代码中:

package main

import (
	"fmt"
	"os"
)

func main() {
	stat, _ := os.Stdout.Stat()
	if stat.Mode()&os.ModeCharDevice == os.ModeCharDevice {
		fmt.Fprintln(os.Stdout, "terminal")
	} else {
		fmt.Fprintln(os.Stdout, "pipe")
	}
}
$ go run main.go         
terminal
$ go run main.go | tee   
pipe

原文:GitHub Issue #259



上一篇
在单页应用中 index.html 该使用什么 cache-control ?
下一篇
K8S StatefulSet 中更新 volumeClaimTemplates 的存储大小