9.01.2019

Linux terminali özelleştirmek

Linux'ta vakit geçirdikçe Windows'un komut satırı pek bi sıradan gözüküyor insanın gözüne. Ama buna çare yok (ya da çare cmder!)


Yukarıda Fedora ile gelen standart terminal penceresi. Renklendirme yok, prompt standart. Biraz kendime göre özelleştirmeye çalıştım. Bunun sonuçlarında da şöyle bir sonuca ulaştım:


Biraz renklendirilmiş, saat ve geçmiş bilgisi eklenmiş. Bu sonuca nasıl vardığımı kısaca anlatayım.

Öncelikle prompt satırında "[" ve "]" arasında yazılmış 3 alan var. Birinci alan varsayılan haliyle

[metin@ozm-fed ~]

kısmı. Burada kullanıcı adı ve bilgisayar adını, sonrasında da bulunduğumuz klasör adını görüyoruz. Bunu kodlamak için

[\u@\h \w]

kullandım.

İkinci kısım ise saati gösteriyor. Bunun için de

[\A]

kullandım.

Üçüncü kısım ise komut geçmişindeki mevcut indeksi gösteriyor. Bunun içinse

[\h]

kullandım. Son prompt karakteri olarak \$ aşikar. Tüm bunları birleştirince şöyle bir dizi çıkıyor:

"[\u@\h \w] [\A] [\h] \$"

Ancak bu renklendirilmemiş hali. Renklendirme işi ise başka bir dünya. Renk kodları vermek için escape karakteri kullanmak gerek. Escape karakteri başlangıcı \[ ile, bitişi ise \] ile belirtiliyor. Renk kodları ise \e[ ile başlayan ve m ile bitecek şekilde belirtiliyor. Garip ama böyle.

Renk kodları şöyle:
  • 30: Siyah
  • 31: Kırmızı
  • 32: Yeşil
  • 33: Sarı
  • 34: Mavi
  • 35: Mor
  • 36: Camgöbeği
  • 37: Beyaz
Ayrıca bir de biçem kodları var:

  • 0: Normal metin
  • 1: Kalın veya ince, terminale göre değişir
  • 4: Altı çizili
Fon rengi kodları da şöyle:
  • 40: Siyah fon
  • 41: Kırmızı fon
  • 42: Yeşil fon
  • 43: Sarı fon
  • 44: Mavi fon
  • 45: Mor fon
  • 46: Camgöbeği fon
  • 47: Beyaz fon
Nihayet sarı bir kullanıcı adı yazmak için şu kodlama gerek:

\[\e[0;33m\]\h

Sarı ile vurgulanan alan sadece \h ile belirtilen kullanıcı adını düz metin (0) ve sarı renk (33) ile yazmak içindi. Eğer bir de arka fon rengi belirtmek istiyorsak 0'dan önce de onu yazmamız gerekecekti, yine noktalı virgille ayırarak. Aşağıda örneği var. Kullanıcı adını sarı ile yazdıktan sonra tekrar @ karakterini varsayılan renkte yazması için sıfırlamak gerek. Bunun için de

\[\e[0m\]

kullanılır. Bu şekilde tüm promptu oluşturmak için şöyle bir kodlama gerekti:

[\[\e[0;33m\]\u\[\e[0m\]@\[\e[0;31m\]\h\[\e[0m\] \w] [\[\e[0;34m\]\A\[\e[0m\]] [\[\e[0;32m\]h:\!\[\e[0m\]] \[\e[43;1;37m\]$\[\e[0m\]

Şu renk kodlamasıyla ayrılan bölüm prompt karakterini sarı fon üzerine beyaz olarak yazmak içindi.

Bu karakter dizisini PS1 adlı bir ortam değişkenine atarak etkin kılabiliriz. Bunu her yeni terminal penceresinde kullanabilmek için ise profil klasörümüzdeki .bashrc dosyasının içine

PS1="[\[\e[0;33m\]\u\[\e[0m\]@\[\e[0;31m\]\h\[\e[0m\] \w] [\[\e[0;34m\]\A\[\e[0m\]] [\[\e[0;32m\]h:\!\[\e[0m\]] \[\e[43;1;33m\]\$\[\e[0m\] "

gibi bir satır ekleyerek yapabiliriz.

ls komutunun renkli çıktı üretmesi için .bashrc dosyasbuttonsının içine bir alias eklenebilir:

export ls='ls --color=ALWAYS'

Burada, Manjaro için ls= den sonra gelen kısmın tek tırnak içinde olmasına, color'dan sonra iki nokta üstüste değil eşittir kullanılmasına ve ALWAYS'sin büyük harflerle yazılmasına dikkat etmek gerek. Fedora için ise always küçük harflerle yazılmalı.

Ya da ls komutunda gösterilen tarih ve saat biçimini değiştirmek için Manjaro için yine .bashrc'de aşağıdaki gibi bir ortam değişkeni tanımlanabilir:

export SYSTEM_TIME=long-iso

Fedora için ise ls komutu parametresi --time-style=long-iso kullanılabilir. Yukarıdakiyle birleştirildiğinde toplu alias şöyle olabilir:

alias ls='ls --color=always --time-style=long-iso'
---
[1] https://www.digitalocean.com/community/tutorials/how-to-customize-your-bash-prompt-on-a-linux-vps

Hiç yorum yok: