IQA*_*eas 20 shell colors ubuntu motd
我编辑了 default/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)"
Run Code Online (Sandbox Code Playgroud)
我可以在终端中很好地运行这行代码,但是当我00-header使用此信息进行编辑时,我会以纯文本形式打印出转义码:
Welcome to \e[1;36mUbuntu 13.10\e[0m \e[2m(GNU/Linux 3.11.0-23-generic i686)\e[0m
Run Code Online (Sandbox Code Playgroud)
如何为当天的信息添加一点色彩?
Vol*_*gel 13
假设您使用的是 Ubuntu - 它使用 dash 来运行系统脚本:
该文件 ,/etc/update-motd.d/00-header由/bin/dash, (not /bin/bash,)执行,它非常简约(而且速度很快)——
它似乎不支持这个地方的“\e” ——改用“\033”。
何时展开转义码是不同的。
在 Debian/Ubuntumotd上配置为/etc/pam.d/sshd:
session optional pam_motd.so motd=/run/motd.dynamic
session optional pam_motd.so noupdate
Run Code Online (Sandbox Code Playgroud)
这意味着成功登录后,系统将运行如下内容:
cat /run/motd.dynamic
if [[ -f /etc/motd ]]; then cat /etc/motd; fi
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
对于稍微更易读的代码,您可以使用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)"
Run Code Online (Sandbox Code Playgroud)
将文件另存为例如 /etc/update-motd.d/10-uname
并确保它是可执行的:
chmod +x /etc/update-motd.d/10-uname
Run Code Online (Sandbox Code Playgroud)
基本颜色编号:
根据您的口味,您可以使用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
Run Code Online (Sandbox Code Playgroud)
Debian 8 / Ubuntu 14.04
使用/etc/init.d/motd start执行以下操作更新动态部分:
uname -snrvm > /var/run/motd.dynamic
Run Code Online (Sandbox Code Playgroud)