第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否有可能檢測作家是否是tty?

是否有可能檢測作家是否是tty?

Go
牧羊人nacy 2022-09-26 15:45:12
Bash有一個“神奇的行為”,如果你輸入“l(fā)s”,通常你會得到彩色的輸出,但如果你將輸出重定向到一個文件,顏色代碼就會消失。如何使用Go實現(xiàn)此效果。例如,帶有以下聲明:fmt.Println("\033[1;34mHello World!\033[0m")我可以看到彩色文本,但是如果我通過管道將輸出傳輸?shù)轿募?,則會保留顏色,這不是我想要的。順便說一句,這個問題大多與Go無關(guān),我只是想在我的Go程序中實現(xiàn)效果。
查看完整描述

1 回答

?
當年話下

TA貢獻1890條經(jīng)驗 獲得超9個贊

Bash有一個“神奇的行為”,如果你輸入“l(fā)s”,通常你會得到彩色的輸出,但如果你將輸出重定向到一個文件,顏色代碼就會消失。


這不是 Bash 功能,而是 ls 功能。它調(diào)用 isatty() 來檢查標準文件描述符是否引用了終端。在 musl libc 中,isatty 是這樣實現(xiàn)的:


int isatty(int fd)

{

        struct winsize wsz;

        unsigned long r = syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz);

        if (r == 0) return 1;

        if (errno != EBADF) errno = ENOTTY;

        return 0;

}

您可以在 Go 中使用相同的方法:


package main


import (

        "fmt"

        "os"


        "golang.org/x/sys/unix"

)


func main() {

        _, err := unix.IoctlGetWinsize(int(os.Stdout.Fd()), unix.TIOCGWINSZ)

        if err != nil {

                fmt.Println("Hello World")

        } else {

                fmt.Println("\033[1;34mHello World!\033[0m")

        }

}


查看完整回答
反對 回復 2022-09-26
  • 1 回答
  • 0 關(guān)注
  • 82 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號