Làm cách nào để sử dụng màu sắc trong Bộ GTVT?


17

Tôi đã chỉnh sửa mặc định/etc/update-motd.d/00-header , thêm một số màu để dễ đọc hơn:

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)"

Tôi có thể chạy dòng mã đó tốt trong một thiết bị đầu cuối, nhưng khi tôi chỉnh sửa 00-headervới thông tin này, tôi nhận được mã thoát được in ra trong bản rõ:

Welcome to \e[1;36mUbuntu 13.10\e[0m \e[2m(GNU/Linux 3.11.0-23-generic i686)\e[0m

Làm thế nào tôi có thể thêm một màu sắc cho thông điệp trong ngày?


Làm thế nào bạn chỉnh sửa tập tin, đặc biệt là các ký tự không in được?
Volker Siegel

Trong picotôi đã thay thế dòng mã hiện tại bằng dòng o mã đầu tiên mà tôi đưa vào ví dụ của mình. Vấn đề là trình phân tích cú pháp MOTD sau đó coi các \eký tự và các ký tự tiếp theo là văn bản thuần thay vì các ký tự đặc biệt.
IQAndreas

Tôi thấy từ người đứng đầu bản quyền của tệp được liên kết trên Ubuntu, vì vậy tôi thêm thẻ tương ứng, vì nó phù hợp để trả lời (liên quan đến shell được sử dụng, xem câu trả lời của tôi).
Volker Siegel

Câu trả lời:


11

Giả sử bạn đang sử dụng Ubuntu - sử dụng dấu gạch ngang để chạy các tập lệnh hệ thống:

Tập tin đó /etc/update-motd.d/00-header, được thực thi bởi /bin/dash, (không /bin/bash,) khá tối giản (và nhanh) -
dường như không hỗ trợ "\ e" ở nơi này - thay vào đó hãy sử dụng "\ 033" .

Nó là khác nhau khi mở rộng mã thoát.


3

Trên Debian / Ubuntu, motdnó được cấu hình trong /etc/pam.d/sshd:

session    optional     pam_motd.so  motd=/run/motd.dynamic
session    optional     pam_motd.so noupdate

có nghĩa là khi đăng nhập thành công, hệ thống sẽ chạy một cái gì đó như:

cat /run/motd.dynamic
if [[ -f /etc/motd ]]; then cat /etc/motd; fi

đâu /etc/motdlà phần tĩnh (chỉ in, không có nguồn gốc).

Debian 9 / Ubuntu 16.04 :

Để tạo phần động run-partsđược sử dụng cho /etc/update-motd.dthư mục:

/usr/bin/env -i PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin run-parts --lsbsysinit /etc/update-motd.d

Đối với mã dễ đọc hơn một chút bạn có thể sử dụng tput setaf {color number}. Lưu ý rằng để bảo toàn màu sắc, chúng ta phải đặt TERMbiến.

#!/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)"

lưu tập tin như vd /etc/update-motd.d/10-uname

và đảm bảo rằng nó có thể thực thi được:

chmod +x /etc/update-motd.d/10-uname

Màu cơ bản được đánh số:

  • 1 - Đỏ
  • 2 - Màu xanh lá cây
  • 3 - Vàng
  • 4 - Màu xanh
  • 5 - Đỏ tươi
  • 6 - Cyan
  • 7 - Trắng

Đoạn mã trên tạo ra: bash màu motd

Tùy thuộc vào sở thích của bạn, bạn có thể tạo ra đầu ra nhiều màu sắc hơn bằng cách sử dụng lolcathoặc tiêu đề từ figlet. Đầu ra được tạo sử dụng cú pháp bash tiêu chuẩn:

^[(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

Phần động được cập nhật bằng cách /etc/init.d/motd startthực hiện như sau:

uname -snrvm > /var/run/motd.dynamic
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.