MOTDで色を使用する方法は?

MOTDで色を使用する方法は?

編集しましたデフォルト/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

今日のメッセージにカラフルな色を追加するには?

答え1

Ubuntuを使用すると仮定すると、ダッシュを使用してシステムスクリプトを実行します。

このファイルは/etc/update-motd.d/00-header次のように生成されます。/bin/dash、(いいえ/bin/bash、)これは非常にミニマリストで高速です。 -
サポートしていないようです。「\金利」ここで - 使用"\033"代わりに。

エスケープコードが拡張される場合には違いがあります。

答え2

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

答え3

<ESC>カラーコードの前にANSIエスケープ文字を挿入してください。 Vimを使用している場合は、押すかCtrl+K ESC編集Ctrl+v+[モードに入ります。

^[

次に、必要なカラーコードを書いてください。たとえば、赤い前景にしてみてください。[31m

^[[31mHello! Glad to see you again^[[0m

先頭は^[エスケープ文字が存在し、手書きの実際の文字であることを[31m示すマークでなければなりません。

関連情報