如何在MOTD中使用颜色?


17

我编辑了默认设置/etc/update-motd.d/00-header,添加了一些颜色以使其更易于阅读:

printf "Welcome to \e[1;34m%s\e[0m \e[2m(%s %s %s)\e[0m\n" "$DISTRIB_DESCRIPTION" "$(uname -o)" "$(uname -r)" "$(uname -m)"

我可以在终端中很好地运行该行代码,但是当我00-header使用此信息进行编辑时,我得到了以明文形式打印的转义代码:

Welcome to \e[1;36mUbuntu 13.10\e[0m \e[2m(GNU/Linux 3.11.0-23-generic i686)\e[0m

如何在当天的留言中添加一点色彩?


您是如何编辑文件的,尤其是不可打印的字符?
Volker Siegel 2014年

在本文中,pico我用示例中包含的第一行o代码替换了现有的代码行。问题是MOTD解析器然后将\e和后续字符视为纯文本,而不是特殊字符。
IQAndreas 2014年

我确实从链接文件的版权标题中看到您确实在Ubuntu上,所以我添加了相应的标签,因为它与回答有关(关于使用的shell,请参见我的回答)。
Volker Siegel

Answers:


11

假设您在Ubuntu上-使用破折号运行系统脚本:

该文件(/etc/update-motd.d/00-header)是由/bin/dash((不是/bin/bash))执行的,该文件非常简单(且快速)- 在此位置
似乎不支持“ \ e” -改用“ \ 033”

何时扩展转义码是不同的。


4

在Debian / Ubuntu上,motd其配置/etc/pam.d/sshd如下:

session    optional     pam_motd.so  motd=/run/motd.dynamic
session    optional     pam_motd.so noupdate

这意味着成功登录后,系统将运行以下内容:

cat /run/motd.dynamic
if [[ -f /etc/motd ]]; then cat /etc/motd; fi

/etc/motd静态部分在哪里(仅打印而未提供)。

Debian 9 / Ubuntu 16.04

用于生成动态部分run-parts/etc/update-motd.d目录:

/usr/bin/env -i PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin run-parts --lsbsysinit /etc/update-motd.d

要使代码更具可读性,可以使用tput setaf {color number}。注意,要保留颜色,我们必须设置TERM变量。

#!/bin/sh
export TERM=xterm-256color

read one five fifteen rest < /proc/loadavg
echo "$(tput setaf 2)
Kernel: `uname -v | awk -v OFS=' ' '{print $4, $5}'`
$(tput setaf 4)Load Averages......: ${one}, ${five}, ${fifteen} (1, 5, 15 min)
$(tput setaf 5)
 ______________
< Hello World! >
 --------------
        \\   ^__^
         \\  (oo)\\_______
            (__)\\       )\\\/\\
                ||----w |
                ||     ||

$(tput sgr0)"

将文件另存为 /etc/update-motd.d/10-uname

并确保它是可执行的:

chmod +x /etc/update-motd.d/10-uname

基本颜色编号:

  • 1 –红色
  • 2 –绿色
  • 3 –黄色
  • 4 –蓝色
  • 5 –洋红色
  • 6 –青色
  • 7 –白色

上面的代码生成: 重击色斑

根据您的口味,您可以使用lolcat或制作标题,从而产生更多色彩的输出figlet。生成的输出使用标准bash语法:

^[(B^[[m
^[[32m
Kernel: 4.9.65-3+deb9u2 (2018-01-04)
^[[34mLoad Averages......: 0.04, 0.05, 0.05 (1, 5, 15 min)
^[[35m
 ______________
< Hello World! >
 --------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

^[(B^[[m

Debian 8 / Ubuntu 14.04

使用/etc/init.d/motd start以下命令更新动态部件:

uname -snrvm > /var/run/motd.dynamic
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.