Cuma , 3 Temmuz 2020

Terminalde renkler ve animasyonlar

Bu flood’da terminalde renkli yazılar çıkarma, kursörü hareket ettirme, bir satırı silme, kelimelerin altını ve üzerini çizme şeklinde işlemleri yapmamızı elde eden ANSI Escape Sequences’ı tanıyacağız.

Terminalde renkli yazılar oluştururken, vim’de kursör ile karakter karakter, sözcük sözcük atlarken, komut satırından bir paket yüklerken ve aşağıdaki şeklinde Docker Hub’dan bir görüntü indirirken ANSI kaçış kodlarının kullanıldığını görürüz.

ANSI kaçış kodları ile video terminal donanımlarında belirli karakter sekanslarının belirli işlemleri yapması standart hale getirilmiştir. Günümüzde kullanmakta olduğumuz terminal emülatörleri de bu standarda uymaktadır.

Adından da anlaşılacağı suretiyle ANSI, terminal üstünde meydana getirilen işlemler için kaçış kodları sağlamaktadır. Bu kaçış kodları ESC karakteri ile başlamakta ve [ karakteri ile devam etmekte hemen sonra ise yapılmak istenen işleme ilişkin kod gelmektedir.

Terminale kırmızı renkte Hello World yazdırmak istersek bash ile echo -e “33[31mHello World” komutunu verebiliriz. Almış olduğu -e parametresi ile echo, kaçış kodlarını değerlendirmesi icap ettiğini anlamış olur.

Kırmızı renkle yazılan Hello World’ün altının çizili olmasını istersek 31 olan renk kodunun yanına ; ile 4 sembolünü koyabiliriz. Burada kırmızı renkteki Hello World’ün altının çizildiğine fakat prompt’un da bundan etkilendiğine dikkat edin.

ANSI kaçış kodları aksi bildirilinceye kadar ayarlanan modda bırakılırlar. Bundan önceki örnekte ayarlanan grafik ayarlarını varsayılan ayara döndürmek için 0 sembolü kullanılabilir. Aşağıdaki örnekte prompt’un altının çizilmediğine dikkat edin.

ANSI kaçış kodlarının tertipli bir listesine http://ascii-table.com/ansi-escape-sequences.php adresinden ulaşılabilir. Şimdi bu listedeki detayları kullanarak terminalde bir animasyon yapalım.

Animasyonlar için Python3 kullanılabilir. bash ile ESC[ kaçış sekansını göstermek için 033[ kullanılmıştı. Python3’te aynı sekans Unicode Escape kullanılarak u001b[ ile yapılabilir. 001b unicode karakteri ESC’ye denk gelmektedir.

Aşağıdaki animasyonda terminalde kolay bir sayaç yapılmıştır.

Yukarıdaki örnekte kursörü aynı satırda sola doğru getirmek için Esc[ValueD kaçış kodu kullanılmıştır. Kursörün devamlı en başa gelmesi için Value, 1000 olarak kullanılmıştır, aslen backspace tuşuna 1000 kere basılmış ve satır başına geçilmiştir.

Görüldüğü suretiyle, ANSI kaçış kodları kullanılarak bash’e benzer kolay bir kabuk, vim’e benzer kolay bir metin editörü vb yapılabilir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir