ฉันจะใช้สีใน 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

ในpicoฉันแทนที่บรรทัดของรหัสที่มีอยู่ด้วยรหัสบรรทัดแรกที่ฉันรวมอยู่ในตัวอย่างของฉัน ปัญหาคือตัวแยกวิเคราะห์ MOTD แล้วปฏิบัติ\eต่อและตัวละครที่ตามมาเป็นข้อความธรรมดาแทนที่จะเป็นตัวอักษรพิเศษ
IQAndreas

ฉันเห็นจาก headeer ลิขสิทธิ์ของไฟล์ที่เชื่อมโยงที่คุณอยู่บน Ubuntu แน่นอนดังนั้นฉันจึงเพิ่มแท็กตามลำดับเนื่องจากเกี่ยวข้องกับการตอบ (เกี่ยวกับเชลล์ที่ใช้ดูคำตอบของฉัน)
Volker Siegel

คำตอบ:


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 - สีขาว

รหัสข้างต้นสร้าง: ทุบตี motd สี

ทั้งนี้ขึ้นอยู่กับรสนิยมของคุณคุณสามารถผลิตการส่งออกที่มีสีสันมากขึ้นโดยใช้หรือหัวจาก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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.