Leopard / Snow Leopard UTF8 - Türkçe sorunu bitmiiiiyoooorrr!!!
Çok basit iki Unix komutundan bahsetmek istiyorum, cat
ve sort
. Unix’in en
büyük olayı, pipe’larla yani |
işaretiyle, yapılan işlemin sonucunu, bir
sonraki komuta geçirebilme özelliğidir.
Şimdi çok basit bir sıralama işlemi yapacağız, aslında Mac OS’da yapamayıp, Ubuntu’da yapacağız ne yazıkki…
Hemen bir Terminal açın ve sorter.txt
adında bir boş dosya oluşturun, oluşan
dosyayı nano
’da açıp (ya da TextMate / TextEdit vs…) aşağıdaki metni
yapıştırın:
ümit
cemal
uğur
ali
vigo
çek
ıtri
bronx
ömer
şekip
şimdi yukarıdaki işlemleri yapalım;
cd $HOME
touch sorter.txt
nano sorter.txt
Daha sonra yukarıdaki metni copy-paste (kopyala / yapıştır) ile nano
’ya
yerleştirin ve kaydedip çıkın (⌃ (kntrl) + O ve
⌃ (kntrl) + X). Şimdi cat
komutu ile
dosyanın içeriğini ekrana basın.
cat sorter.txt
Gördüğün gibi cat
ile dosyanın içeriği ekrana basıldı. Şimdi pipe
mantıkını kullanarak, satır satır ekrana yazdırdığımız bu metni, a’dan z’ye
alfabetik olarak sıralayalım yani sort edelim!
cat sorter.txt | sort
Gördüğünüz gibi garip bir şekilde sıralandı:
- ali
- bronx
- cemal
- uğur
- vigo
- çek
- ömer
- ümit
- şekip
- ıtri
Eğer dikkat ettiyseniz, TÜRKÇE ile ilgili kelimeler, normal sıralamadan
sonra yapılmış, yani İNGİLİZCE’ye göre a-b-c-d-e-f-g-h-i… şeklinde
ali-bronx-cemal-uğur-vigo doğru sırada, fakat bronx’dan sonra gelmesi
gereken çek sonda… Neden acaba? hemen locale
’imize bakalım:
locale
BOOOOM! Benim locale’im komple TÜRKÇE’ye ayarlı. sort
komutun
man page
’in bakınca der ki : (terminal’de her hangi bir komutun nasıl
çalıştığını öğrenmek için man kullanabilirsiniz.)
WARNING The locale specified by the environment affects sort order. Set LC_ALL=C to get the traditional sort order that uses native byte values.
Yani sıralama işlemi, o an Terminal’de bulunan kullanıcının locale ayarıyla etkileşimlidir, yani eğer Türkçe işlem yapmak istersen locale’ini Türkçe’ye, Almanca işlem yapacaksan Almanca’ya göre ayarla…
Türkçe için külliyen YALAN! Bunu hem LEOPARD hem de SNOW LEOPARD’da da denedim… Acaba dedim sorun benim ayarlarda filanmı? hemen lokalimdeki Ubuntu’da yaptım aynı testi…
Önce locale’i kontrol ettim.
Sıralama doğru!
Sonra komutu çalıştırdım. Aslanlar gibi çalıştı sıkıntısız. Ne yapmalı, derdimizi kime anlatmalı bilmiyorum? Aradaki tek fark, Mac OS’daki sort 2005 yılına ait, Ubuntu’daki ise 2008 yılına.
Belki ilk bakışta “ya bu benim ne işime yararki ?” diye düşünebilirsiniz. Bu ve buna bağlı olarak pek çok şey de aynı sıkıntı olabilir. Keza çok benzer bir sorunu tarih ile ilgili bir işlem yaparken yaşamıştım.
Umarım ben bir yerlerde hata yapmışımdır ve benim eksik bilgimden kaynaklı bir sorun söz konusudur fakat çok araştırdım, sanki sorun bende değil gibi…
Keza export LC_ALL=tr_TR.ISO8859-9
bile denedim. Belki bundandır diye. Ne
yazık ki çözemedim. Eğer yazımı okuyan ve çözümü bilen biri varsa lütfen yorum
bıraksın ya da bana mesaj atsın!
Özellikle TextMate kullanıcıları (filtreleme) ya da Snow Leopard kullanıcıları (servis) bu ve buna benzer shell komutlarını kullanarak hayatlarını kolay hale getirebilirler.
Ne yazıkki bu en temel Unix komutu SORT güzel türkçemizi sıralayamıyor!