मैं 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

मैं दिन के संदेश में रंग का एक स्पलैश कैसे जोड़ सकता हूं?


आपने फ़ाइल को कैसे संपादित किया, विशेष रूप से गैर-मुद्रण योग्य वर्णों को?
वोल्कर सिएगल

में picoमैं पहली पंक्ति कोड ओ है कि मैं अपने उदाहरण में शामिल के साथ कोड के मौजूदा लाइन बदल दिया। समस्या तो MOTD पार्सर की है \eऔर उसके बाद के पात्रों को विशेष पात्रों के बजाय सादे-पाठ के रूप में माना जाता है।
IQAndreas

मैं लिंक किए गए फ़ाइल के कॉपीराइट हेडर से देखता हूं जो आप उबंटू में हैं, इसलिए मैं संबंधित टैग जोड़ता हूं, क्योंकि यह उत्तर देने के लिए प्रासंगिक है (शेल के उपयोग के बारे में, मेरा उत्तर देखें)।
वोल्कर सेगल

जवाबों:


11

यह मानते हुए कि आप उबंटू पर हैं - जो सिस्टम स्क्रिप्ट चलाने के लिए डैश का उपयोग करता है:

वह फ़ाइल, /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स्थिर हिस्सा है (केवल मुद्रित है, खट्टा नहीं है)।

डेबियन 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 - सफेद

उपरोक्त कोड: bash रंग का motd

अपने स्वाद के आधार पर आप अधिक रंगीन आउटपुट का उपयोग करके lolcatया शीर्षकों से उत्पादन कर सकते हैं figlet। उत्पन्न आउटपुट मानक बैश सिंटैक्स का उपयोग करता है:

^[(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 / Ubuntu 14.04

/etc/init.d/motd startनिम्नलिखित को निष्पादित करने वाले गतिशील भाग को अपडेट किया गया है:

uname -snrvm > /var/run/motd.dynamic
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.