代码之家  ›  专栏  ›  技术社区  ›  norbjd

打印Makefile规则中的粗体或彩色文本

  •  -1
  • norbjd  · 技术社区  · 7 年前

    我正在尝试打印以下内容中的粗体文本 Makefile

    printf-bold-1:
        @printf "normal text - \e[1mbold text\e[0m"
    

    但是,转义序列按原样打印,因此在运行时 make printf-bold-1 ,我得到:

    普通文本-\e[1粗体文本\e[0m

    普通文本- 粗体文本

    这很奇怪,因为我可以从终端打印粗体文本:直接运行命令 printf "normal text - \e[1mbold text\e[0m"

    粗体文本

    ,我试着用 @echo echo 而不是 @printf ,或打印 \x1b 而不是 \e ,但没有成功。

    COLORTERM=gnome-terminal
    TERM=xterm-256color
    

    还请注意,在一些同事的笔记本电脑(Mac)上,粗体文本打印正确。

    在每种环境下,从打印机打印粗体或彩色文本的便携方式是什么 规则

    2 回复  |  直到 7 年前
        1
  •  9
  •   Toby Speight    7 年前

    你应该用平常的方法 tput 用于为实际终端生成正确转义序列的程序,而不是硬编码特定字符串(例如,在Emacs编译缓冲区中看起来很难看):

    printf-bold-1:
        @printf "normal text - `tput bold`bold text`tput sgr0`"
    

    bold := $(shell tput bold)
    sgr0 := $(shell tput sgr0)
    
    printf-bold-1:
        @printf 'normal text - $(bold)bold text$(sgr0)'
    
        2
  •  2
  •   norbjd    7 年前

    好的,我知道了。我应该用 \033 而不是 \e \x1b :

    printf-bold-1:
        @printf "normal text - \033[1mbold text\033[0m"
    

    或者,如评论中所建议的,使用简单引号而不是双引号:

    printf-bold-1:
        @printf 'normal text - \e[1mbold text\e[0m'
    

    make printf-bold-1

    推荐文章