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 2016 년

에서 pico나는 내 예에 포함 된 코드 O를 첫 번째 줄에 코드의 기존 라인을 교체했다. 문제는 MOTD 파서가 \e이후 문자를 특수 문자 대신 일반 텍스트로 처리한다는 것입니다.
IQAndreas

우분투에있는 링크 된 파일의 저작권 책임자에게서 실제로 볼 수 있으므로 응답과 관련이 있으므로 해당 태그를 추가합니다 (사용 된 쉘과 관련하여 내 대답 참조).
Volker Siegel 2016 년

답변:


11

Ubuntu에 있다고 가정하면 대시를 사용하여 시스템 스크립트를 실행합니다.

이 파일은 /etc/update-motd.d/00-header,에 의해 실행됩니다 /bin/dash. (not /bin/bash) 매우 단순하고 빠릅니다 .이 위치에서 "\ e"
지원하지 않는 것 같습니다 . 대신 "\ 033"을 사용하십시오.

이스케이프 코드를 확장하는 시점이 다릅니다.


3

데비안 / 우분투에서는 다음 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 – 화이트

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

취향에 따라 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.