【问题标题】:Echo output is different from expected formatted output回声输出与预期的格式化输出不同
【发布时间】:2019-05-01 13:15:51
【问题描述】:

我使用以下格式进行回声

它应该输出粗体和下划线的文本,但不是将其设为粗体,而是给出“更亮”的颜色变体,并将带下划线的代码 (4) 视为青色,从而产生浅青色文本。

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

编辑:我找到了一个与我的案例相关的链接,但我不确定它是如何应用的,因为我使用 Cygwin 的 enter link description here 时他们正在处理 Windows 10 更新 bash

【问题讨论】:

  • \033 替换你的¥e 序列对我有用
  • @Aserre 我也试过 \033 和 \E,日元符号相当于我正在使用的系统区域设置的反斜杠,它还没有证明是一个问题,所以我没有相信这是问题所在,但如果由于更改系统区域设置而出现已知问题,请告知。
  • 你用的是什么终端? Mintty 产生预期的“粗体和下划线”,而在 CMD 上产生青色。
  • @matzeri 是的,就是这样,我在我的电脑中(在 cygwin 目录/文件夹中)找到了 Mintty,它在输入相同的命令时产生了我需要的输出,我或多或少明白shell 和终端是不同的东西,但这是否意味着 bash 默认使用 CMD?我可以以某种方式改变它吗?顺便说一句,我并没有真正指定终端(?)我只是按原样打开 bash 可执行文件

标签: bash cygwin echo


【解决方案1】:

您似乎是通过旧的 cygwin.bat 运行 bash,因此您使用的是 Windows 控制台作为终端,而不是通过作为更高级终端的默认 Mintty。

默认情况下,Cygwin 安装程序在 windows 菜单中安装“Cygwin 终端”条目

菜单项的内容是这样的

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

路径类似

C:\cygwin64\bin

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

□ 在桌面上创建图标
□ 开始菜单添加图标

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

【讨论】:

    【解决方案2】:

    我的个人资料中有这个:

    ## 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}"
    

    这会导致这样的输出:

    希望对你有用!

    【讨论】:

      猜你喜欢
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 2022-07-06
      • 2019-12-12
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      • 2021-01-14
      相关资源
      最近更新 更多