Saya mengedit default/etc/update-motd.d/00-header
, menambahkan beberapa warna untuk membuatnya lebih mudah dibaca:
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)"
Saya dapat menjalankan baris kode dengan baik di terminal, tetapi ketika saya mengedit 00-header
dengan informasi ini, saya mendapatkan kode melarikan diri yang dicetak dalam plaintext:
Welcome to \e[1;36mUbuntu 13.10\e[0m \e[2m(GNU/Linux 3.11.0-23-generic i686)\e[0m
Bagaimana saya bisa menambahkan percikan warna ke pesan hari ini?
pico
saya mengganti baris kode yang ada dengan kode o baris pertama yang saya sertakan dalam contoh saya. Masalahnya adalah parser MOTD kemudian diperlakukan\e
dan karakter berikutnya sebagai teks biasa dan bukan sebagai karakter khusus.Jawaban:
Dengan asumsi Anda berada di Ubuntu - yang menggunakan tanda hubung untuk menjalankan skrip sistem:
File itu,,
/etc/update-motd.d/00-header
dijalankan oleh/bin/dash
, (bukan/bin/bash
,) yang cukup minimalis (dan cepat) -sepertinya tidak mendukung "\ e" di tempat ini - gunakan "\ 033" sebagai gantinya.
Berbeda kapan mengembangkan kode pelarian.
sumber
Pada Debian / Ubuntu
motd
dikonfigurasi di/etc/pam.d/sshd
:yang berarti bahwa setelah berhasil masuk sistem akan menjalankan sesuatu seperti:
di mana
/etc/motd
bagian statis (hanya dicetak, tidak bersumber).Debian 9 / Ubuntu 16.04 :
Untuk menghasilkan bagian dinamis
run-parts
digunakan untuk/etc/update-motd.d
direktori:Untuk kode yang sedikit lebih mudah dibaca, Anda dapat menggunakan
tput setaf {color number}
. Perhatikan bahwa untuk mempertahankan warna kita harus mengaturTERM
variabel.simpan file sebagai contoh
/etc/update-motd.d/10-uname
dan pastikan itu dapat dieksekusi:
Warna dasar diberi nomor:
Kode di atas menghasilkan:
Tergantung pada selera Anda, Anda dapat menghasilkan output yang lebih berwarna menggunakan
lolcat
atau pos darifiglet
. Output yang dihasilkan menggunakan sintaks bash standar:Debian 8 / Ubuntu 14.04
Bagian dinamis diperbarui menggunakan
/etc/init.d/motd start
yang dijalankan sebagai berikut:sumber