Semua alat

Dev

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.

Terakhir diperbarui:

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 $- berisi i, shell bersifat interaktif.
  • EOF penutup 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 seperti figlet -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.