Linux'un avantajı, istediğiniz her şeyi özelleştirebilmenizdir. Bu, projektif sistemlerin prosedürel sistemlere göre avantajıdır. Her biri isteğe göre özelleştirilebilen ayrı bloklardan oluşan bir tür kurucudur.
Hazır çözümleri kopyalamakla kalmayıp neyin nasıl çalıştığını anlamaya çalışmak özellikle ilginçtir. Ve anlamsız bir görevi çözerken bile yeni bir şeyler öğrenirsiniz.
Örneğin, ls
komutunun çıktısındaki linux terminal renklerini ayarlamak istiyorsunuz.
ls
dokümantasyonundan, çıktı için renklerin ayarlanmasının, renk parametrelerini ya kendi veritabanından ayarlayan ya da ~/.dir
colors dosyasından alan dircolors yardımcı programı kullanılarak yapıldığını anlayabilirsiniz. Ayrıca renk kullanımının başlatılmasının kabuk ayarları dosyası olan ~/.bashrc
aracılığıyla yapıldığı ve parametrelerin LC_COLORS
değişkeni aracılığıyla tanımlandığı belirtilmişti.
Aşağıdaki betik .bashrc
içinde bulunmuştur:
Özü, sistemde dircolors yardımcı programının varlığını kontrol etmek, değişkene bir değer atamak ve başarılı olursa, ls
her çağrıldığında --color=auto
parametresini kullanmaktır.
Eğer dircolors yardımcı programını çalıştırırsanız, LC_COLOR
değişkeninin değerini çıktı olarak verir.
LC_COLORS
değişkeninin değerini anahtar belirterek yapılandırılmış biçimde çıktı olarak almak da mümkündür:
$ dircolors -p
Çıktı uzun olduğu için burada vermeyeceğim.
Eğer dircolors -p
> ~/.dircolors
çıktısını yönlendirirseniz, renk ayarlarının alınacağı yapılandırılmış bir dosya oluşturulacaktır. Bu dosyayı düzenleyerek ls
çıktısı için renk ayarlarını yapabilirsiniz.
Oluşturulan .dircolors
dosyasında bir ipucu vardır:
Sıralamayı noktalı virgülle ayarlamak ve linux konsolunda ihtiyacımız olan rengi listeye göre elde etmek. Linux terminal renkleri yazı tipi rengi için 30 ila 37 ve arka plan için 40 ila 47 arasındadır. Örneğin:
DIR 01;34 dizin isimlerinin kalın ve mavi olacağı anlamına gelir.
Ancak bu şekilde sadece sekiz renk elde edersiniz ve modern terminal emülatörleri en az 256 renk gösterebilir.
Rengi ayarlamanın başka yolları da vardır. Örneğin, EXEC 38;5;208;1 çalıştırılabilir dosyalar için turuncu kalın yazı tipi verir.
Linux renklerini elle gözden geçirmemek için, hazır bir renk tablosu vardır
Renk değerini 38;5;x - burada x tablodaki renktir - yerine koyarak gerekli sonucu elde ederiz. Bunun gibi bir şey elde edersiniz:
Nasıl çalışıyor? Mesele şu ki, terminal emülatöründe bilgi çıktısının rengini ayarlamak ANSI kaçış kodları yardımıyla yapılır. Bu, ekrana yazdırılmayan, ancak çıktıyı etkileyen belirli bir karakter dizisidir. Bu şekilde adlandırılır çünkü [ - "Esc" kodu ile başlar. Birçok terminal ve terminal emülatörü olduğundan, bu kontrol kodları standartlaştırılmıştır. 30'dan 37'ye kadar olan sıra ile renk kontrolü ECMA-48 standardıdır. Bununla ilgili bilgiler console_codes
bölümünde bulunabilir.
Linux renklerini esc kodları ile nasıl ayarlayacağınızı anladıktan sonra, komut istemini yeniden tasarlamak ve renklendirmek kolaydır. PS1 değişkeni, ~/.bashrc
dosyasında tanımlanmıştır ve çıktısından sorumludur
Linux Mint'te, başlatma betiği şu şekilde görünür:
Yani, ilk olarak betiğin root tarafından mı yoksa normal bir kullanıcı tarafından mı çalıştırıldığı belirlenir. Vakaların büyük çoğunluğunda ikinci seçenek olduğu için, ilk 'else'i takip eden satır düzenlenmelidir. Satırın biçimi bash dokümantasyonunda "Promting" bölümünde deşifre edilmiştir. Bu, esc dizisinin "[" ile başlayıp "]" ile bitmesi gerektiği anlamına gelir. Böylece:
u
- kullanıcı adının çıktısını verir;h
- ana bilgisayar adını verir;w
- çalışma dizini adını verir;Komut isteminde başka ne çıktılanabilir:
d
- tarih, "Wed Dec 28" biçiminde;A
- 24 saat biçiminde zaman;Şimdi daha ilginç bir şey ekleyelim:
PS1='${debian_chroot:+($debian_chroot)}[[01;32m]Matrix has you,u![[00m] [[01;34m]Blue pill[[00m] or [[31m]red?[[00m]--->$ '
Ve komut satırı şöyle görünecektir: