Banner ASCII di Terminal: bash, zsh, fish, PowerShell, dan Login SSH
Gunakan heredoc bertanda kutip atau file agar backslash tetap utuh, dan tampilkan hanya di shell interaktif agar scp tetap berfungsi.
Banner berisi nama Anda atau nama mesin setiap kali terminal dibuka adalah sentuhan manis, dan langsung menunjukkan Anda sedang di komputer mana. Panduan ini menunjukkan cara memasang banner buatan lab.ascii ke file startup shell Anda.
Contoh-contohnya memakai “DEV” dengan font Small. Font ini berisi backslash (\), jadi Anda akan langsung tahu jika ada yang rusak.
___ _____ __
| \| __\ \ / /
| |) | _| \ V /
|___/|___| \_/
Dua hal yang perlu diketahui dulu
Jaga backslash
Jika Anda menampilkan banner dengan echo "...", shell memperlakukan \ dan $ sebagai karakter khusus, sehingga sebagian seni bisa hilang atau berubah. Gunakan salah satu cara ini:
- Heredoc bertanda kutip: beri tanda kutip pada penanda akhir, seperti
cat <<'EOF', dan shell menampilkan semuanya persis seperti tertulis. - File: simpan hasil dengan tombol TXT dan tampilkan dengan
cat. Dengan begitu tidak ada karakter yang perlu di-escape.
Tampilkan hanya di shell interaktif
scp, rsync, dan sftp memulai shell di mesin jarak jauh, dan shell itu bisa membaca file startup Anda. Jika banner tercetak saat itu, transfer file bisa gagal. Tampilkan banner hanya di shell interaktif, yaitu yang dibuka oleh orang.
bash: ~/.bashrc
Tambahkan ini di akhir ~/.bashrc:
if [[ $- == *i* ]]; then
cat <<'EOF'
___ _____ __
| \| __\ \ / /
| |) | _| \ V /
|___/|___| \_/
EOF
fi
- Jika
$-berisii, shell bersifat interaktif. EOFpenutup harus berada di awal baris. Jika ada spasi di depannya, bash tidak mengenalinya.
Jika Anda menyimpan file TXT sebagai ~/.banner.txt, satu baris sudah cukup:
[[ $- == *i* && -r ~/.banner.txt ]] && cat ~/.banner.txt
Shell bawaan macOS adalah zsh, jadi di Mac gunakan bagian zsh di bawah.
zsh: ~/.zshrc
zsh hanya membaca ~/.zshrc di shell interaktif, jadi tidak perlu pemeriksaan tambahan. Heredoc yang sama berfungsi:
cat <<'EOF'
___ _____ __
| \| __\ \ / /
| |) | _| \ V /
|___/|___| \_/
EOF
Jika Anda memakai Powerlevel10k dengan instant prompt, mungkin muncul peringatan tentang keluaran konsol saat startup. Pindahkan kode banner ke atas blok instant prompt di bagian atas ~/.zshrc.
fish: fish_greeting
fish menjalankan fungsi fish_greeting saat mulai untuk menampilkan sapaannya. Definisikan milik Anda sendiri dan banner akan menggantikan pesan bawaan. Taruh ini di ~/.config/fish/config.fish:
function fish_greeting
cat ~/.banner.txt
end
Di fish, string dengan kutip tunggal mengubah \\ menjadi satu \, jadi menampilkan file lebih aman daripada menempel banner ke dalam string.
Menambahkan warna
Tampilkan kode warna ANSI sebelum banner dan kode reset sesudahnya. Di bash atau zsh:
printf '\033[36m' # cyan
cat ~/.banner.txt
printf '\033[0m' # back to normal
| Kode | Warna |
|---|---|
\033[31m |
Merah |
\033[32m |
Hijau |
\033[33m |
Kuning |
\033[35m |
Magenta |
\033[36m |
Sian |
\033[1m |
Tebal |
Jika lupa \033[0m di akhir, semua yang Anda ketik sesudahnya tetap berwarna.
PowerShell: $PROFILE
PowerShell menjalankan file $PROFILE saat mulai. Jika file belum ada, buat dan buka di Notepad:
if (!(Test-Path $PROFILE)) { New-Item -Path $PROFILE -ItemType File -Force }
notepad $PROFILE
Tambahkan ini lalu simpan:
$banner = @'
___ _____ __
| \| __\ \ / /
| |) | _| \ V /
|___/|___| \_/
'@
Write-Host $banner -ForegroundColor Cyan
- Tidak ada yang diubah di antara
@'dan'@.'@penutup harus berada di awal baris. - Jika jendela baru menyebut “running scripts is disabled on this system”, ubah execution policy untuk pengguna Anda:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned. - Banner dengan karakter blok seperti
█ ═atau teks non-Latin bisa rusak di Windows PowerShell 5.1. Simpan profil sebagai UTF-8 with BOM di Notepad, atau gunakan PowerShell 7.
Layar login SSH: /etc/motd
Di server Linux, teks di /etc/motd ditampilkan setiap login SSH, kepada semua yang terhubung.
sudo nano /etc/motd
Tempel banner, simpan, dan banner muncul mulai login berikutnya. Menaruh nama server di banner membuat produksi dan staging sulit tertukar. Anda tidak tahu terminal apa yang dipakai tiap orang, jadi pilih font ASCII seperti Standard, Slant, atau Small daripada karakter blok. Ubuntu juga menampilkan pesan yang dibuat skrip di /etc/update-motd.d/.
Di alat CLI buatan Anda
Aturan yang sama berlaku untuk alat yang Anda tulis dengan Python atau Node.js: jangan tampilkan banner saat keluaran dialirkan ke file atau program lain.
import sys
BANNER = r"""
___ _____ __
| \| __\ \ / /
| |) | _| \ V /
|___/|___| \_/
"""
if sys.stdout.isatty():
print(BANNER)
const banner = String.raw`
___ _____ __
| \| __\ \ / /
| |) | _| \ V /
|___/|___| \_/
`;
if (process.stdout.isTTY) console.log(banner);
Panduan banner README membahas escape string lebih rinci.
Font mana yang paling cocok?
Terminal biasanya selebar 80 kolom, dan banyak orang membagi jendelanya jadi dua, jadi banner 60 kolom atau kurang muat hampir di mana saja. Untuk nama panjang, pilih font sempit seperti Small atau Small Slant. Bandingkan lebarnya di Cara memilih font FIGlet.
Jika Anda memasang program
figlet, Anda bisa menggambar banner saat startup dengan perintah sepertifiglet -f slant "$(hostname)". Namun program itu harus terpasang di setiap mesin, dan font yang tidak disertakan perlu diunduh terpisah. Menempel banner jadi sama sekali tidak perlu instalasi.