Bagaimana saya bisa mencetak $myvar
empuk sehingga berada di tengah terminal, dan di kedua sisinya adalah =
ke tepi layar?
Jawaban yang Diterima:
Saya menemukan dua informasi di sini di jaringan stackexchange yang membantu saya sampai pada jawaban yang berfungsi ini:
- https://stackoverflow.com/q/263890/5419599
- https://stackoverflow.com/q/4409399/5419599
Namun kode dalam jawaban ini adalah milik saya.
Lihat riwayat edit jika Anda ingin lebih banyak verbositas; Saya telah mengedit semua cruft dan “langkah-langkah di sepanjang jalan”.
Saya pikir cara terbaik adalah:
center() {
termwidth="$(tput cols)"
padding="$(printf '%0.1s' ={1..500})"
printf '%*.*s %s %*.*sn' 0 "$(((termwidth-2-${#1})/2))" "$padding" "$1" 0 "$(((termwidth-1-${#1})/2))" "$padding"
}
center "Something I want to print"
Keluaran pada terminal dengan lebar 80 kolom:
========================== Something I want to print ===========================
Perhatikan bahwa padding tidak harus berupa karakter tunggal; sebenarnya padding
variabel tidak, panjangnya 500 karakter dalam kode di atas. Anda dapat menggunakan beberapa bentuk padding lain dengan hanya mengubah padding
baris:
padding="$(printf '%0.2s' ^v{1..500})"
Hasil dalam:
^v^v^v^v^v^v^v^v^v^v^v^v^v Something I want to print ^v^v^v^v^v^v^v^v^v^v^v^v^v^
Penggunaan praktis lainnya adalah:
clear && center "This is my header"