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정적 부분은 어디에 있습니까(인쇄만 가능하고 출처는 제공되지 않음).

데비안 9 / 우분투 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 – 흰색

위의 코드는 다음을 생성합니다. 배쉬 컬러의 modd

취향에 따라 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

데비안 8 / 우분투 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실제 문자가 손으로 입력되었음을 나타내는 표시여야 합니다.

관련 정보