将终端颜色延伸到行尾

Dav*_*ond 18 bash terminal

我有一个生成motd的bash脚本.问题取决于一些终端设置,我不确定颜色是否会延伸到行尾.Othertimes它没有:

例如

广场

VS

盘陀

IIRC只是正常的gnome-terminal,另一个是我的tmux术语.所以我的问题是如何将其扩展到80个字符(或者真正的终端宽度).当然我可以填充到80个字符,但这确实无法解决问题.

这是我的代码片段,它产生了motd:

TC_RESET="^[[0m"                                                                
TC_SKY="^[[0;37;44m"                                                            
TC_GRD="^[[0;30;42m"                                                            
TC_TEXT="^[[38;5;203m"   

echo -n "${TC_SKY}                                                                              

... lots of printing..." 
echo -e "\n                           Welcome to Mokon's Linux!                           \n"

echo -n "${TC_GRD}"                                                             
nodeinfo # Just prints the info seen below...                                                                       
echo ${TC_RESET} 
Run Code Online (Sandbox Code Playgroud)

如何以编程方式从bash更改终端设置或某些内容将颜色更改为行尾?

nhe*_*hed 15

也许使用Escape序列来清除EOL

出于某种原因(在我的MacOS终端上!)我只需要指定这个序列然后它适用于所有行但是为了完整性我列出了所有行

TC_RESET=$'\x1B[0m'
TC_SKY=$'\x1B[0;37;44m'
TC_GRD=$'\x1B[0;30;42m'
TC_TEXT=$'\x1B[38;5;203m'
CLREOL=$'\x1B[K'

echo -n "${TC_SKY}${CLREOL}"
echo -e "\n           ABC${CLREOL}\n"
echo -e "\n              DEFG${CLREOL}\n"

echo -n "${TC_GRD}"
echo -e "\n           ABC${CLREOL}\n"
echo -e "\n              DEFG${CLREOL}\n"
echo ${TC_RESET}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!并且感谢其他人也尝试了但这个解决方案的工作方式与我希望的方式相同.我做了一些改动.基本上我附加到临时文件,然后使用send来替换所有换行符和换行符.如果我没有在每一行上放置那个转义序列,我只会把它放在它的行上......我会把它添加到你的答案中...... (3认同)