MOTD'de renkleri nasıl kullanırım?


17

Okumayı kolaylaştırmak için biraz renk ekleyerek varsayılanı/etc/update-motd.d/00-header düzenledim :

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

Bu kod satırını bir terminalde iyi çalıştırabilirim, ancak 00-headerbu bilgilerle düzenlediğimde , kaçış kodlarını düz metin olarak yazdırıyorum:

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

Günün mesajına nasıl renk sıçraması ekleyebilirim?


Dosyayı, özellikle yazdırılamayan karakterleri nasıl düzenlediniz?
Volker Siegel

Gelen picobenim örnekte yer alan bu kodu o ilk satırı ile kod mevcut çizgisini değiştirdi. Sorun, MOTD ayrıştırıcısının ardından \egelen karakterleri özel karakterler yerine düz metin olarak ele almasıdır .
IQAndreas

Gerçekten Ubuntu üzerinde bağlı dosyanın telif hakkı headeer görüyorum, bu yüzden ilgili etiketi, cevaplamak için ilgili olarak (kullanılan kabuk ile ilgili, benim cevap bakın) ekleyin.
Volker Siegel

Yanıtlar:


11

Sistem komut dosyalarını çalıştırmak için tire kullanan Ubuntu'da olduğunuzu varsayarsak:

Bu dosya, oldukça minimalist (ve hızlı) olan , (değil ) /etc/update-motd.d/00-headertarafından yürütülür - bu yerde "\ e" yi desteklemiyor gibi görünüyor - bunun yerine "\ 033" kullanın./bin/dash/bin/bash

Kaçış kodlarının ne zaman genişletileceği farklıdır.


4

Debian / Ubuntu'da şu motdşekilde yapılandırılır /etc/pam.d/sshd:

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

Bu da başarılı bir giriş yaptıktan sonra sistemin aşağıdaki gibi çalışacağı anlamına gelir:

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

/etc/motdstatik kısım nerede (sadece basılı, kaynaklı değil).

Debian 9 / Ubuntu 16.04 :

Dinamik parça oluşturmak run-partsiçin /etc/update-motd.ddizin için kullanılır :

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

Biraz daha okunabilir kod için kullanabilirsiniz tput setaf {color number}. Renkleri korumak için TERMdeğişken ayarlamamız gerektiğini unutmayı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)"

dosyayı örn. kaydet /etc/update-motd.d/10-uname

ve çalıştırılabilir olduğundan emin olun:

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

Temel renkler numaralandırılmıştır:

  • 1 - Kırmızı
  • 2 - Yeşil
  • 3 - Sarı
  • 4 - Mavi
  • 5 - Eflatun
  • 6 - Camgöbeği
  • 7 - Beyaz

Yukarıdaki kod oluşturur: bash renkli motd

Zevkinize bağlı olarak, kullanarak lolcatveya başlıkları kullanarak daha renkli çıktılar üretebilirsiniz figlet. Oluşturulan çıktı standart bash sözdizimini kullanır:

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

Dinamik bölüm, /etc/init.d/motd startaşağıdakileri yürüten kullanılarak güncellenir :

uname -snrvm > /var/run/motd.dynamic
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.