Echo 输出与预期的格式化输出不同

Echo output is different from expected formatted output

我正在为 echo 使用以下格式

它应该输出既粗体又带下划线的文本,但不是将其设为粗体,而是给出颜色的 'brighter' 变体,并将带下划线的代码 (4) 视为青色,从而产生 Light青色文字。

我在 windows 7 PC 上使用 Cygwin 的 Bash。

编辑:我发现 link 似乎与我的案例相关,但我不确定它是如何应用的,因为他们正在进行 windows 10 更新 bash 当我使用 Cygwin 的 enter link description here

我的个人资料中有这个:

## NORMAL
export NORMAL=$(tput sgr0)

## FOREGROUND
export FGBLACK=$(tput setaf 0)
export FGRED=$(tput setaf 1)
export FGGREEN=$(tput setaf 2)
export FGYELLOW=$(tput setaf 3)
export FGBLUE=$(tput setaf 4)
export FGMAGENTA=$(tput setaf 5)
export FGCYAN=$(tput setaf 6)
export FGWHITE=$(tput setaf 7)
export FGBRIGHT=$(tput bold)
export FGNORMAL=$(tput sgr0)
export FGBOLD=$(tput bold)

## BACKGROUND
export BGBLACK=$(tput setab 0)
export BGRED=$(tput setab 1)
export BGGREEN=$(tput setab 2)
export BGYELLOW=$(tput setab 3)
export BGBLUE=$(tput setab 4)
export BGMAGENTA=$(tput setab 5)
export BGCYAN=$(tput setab 6)
export BGWHITE=$(tput setab 7)

## SHAPE
export SHUNDERLINE=$(tput smul)
export SHBOLD=$(tput bold)
export SHSBOLD=$(tput smso)

所以我可以很容易地在命令行或我的脚本中使用它。例如:

#!/bin/bash

echo "This is ${FGRED}foreground red${NORMAL}"
echo "This is ${BGRED}background red${NORMAL}"
echo "This is ${FGYELLOW}${BGRED}background red and foreground yellow${NORMAL}"
echo "This is ${SHUNDERLINE}underlined${NORMAL}"
echo "This is ${FGCYAN}${SHUNDERLINE}cyan underlined${NORMAL}"
echo "This is ${SHBOLD}bold${NORMAL}"
echo "This is ${SHUNDERLINE}${SHBOLD}underlined bold${NORMAL}"
echo "This is ${FGBLUE}${SHBOLD}blue bold${NORMAL} and this ${FGBLUE} normal blue${NORMAL}"
echo "This is ${SHSBOLD}standout bold${NORMAL}"

结果如下:

希望对你有用!

看来你是 运行 bash 通过旧的 cygwin.bat,所以你正在使用 Windows 控制台作为终端,而不是通过默认的 Mintty更高级的终端。

默认情况下,Cygwin 安装程序在 windows 菜单中安装 "Cygwin Terminal" 条目

菜单项的内容像

C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -

路径类似

C:\cygwin64\bin

这些项目也可以在 cygwin 安装程序的最后一步重新创建 运行。 有两个框条目:

□ Create icon on Desktop
□ Add icon to Start Menu

如果启用它们,两者都将被重新创建