28 Mart 2008 Cuma

GRIB FORMATI

GRIB (Gridded Binary), meteorolojide genellikle geçmiş ve mevcut hava tahmin verilerini saklamakta kullanılan özlü bir matematiksel veri formatıdır. WMO'nun Temel Sistemler Komisyonu (Commission for Basic System) tarafından GRIB FM 92 - IX adıyla standart haline geitirilmiştir. Halihazırda GRIB'in iki versiyonu vardır. Birinci version (Şu anda alt versiyonu 2'dir.) dünya çapında işlevsel ve operasyonel olarak NWP (Numerical Weather Prediction) (Sayısal Hava Tahmini) çıktısı olarak tüm meteoroloji merkezlerinde kullanılmaktadır. Yeni nesil Grib2 tanıtılmış fakat operasyonel yayınlar için birkaç durumun ve birkaç merkezin dışında kullanılmamaktadır. GRIB2 formatı Eumetsat'ta MSG(Meteosat Second Generation)'nin türetilmiş ürün dağıtımları için operasyonel olarak kullanılmaktadır.
GRIB, ADF(Aeuronautical Data Format)'ın yerini almıştır.

YAZILIM

Uygulamalar
GRIB dosyalarını kullanmak için birkaç uygulama yazılım paketi yazılmıştır. Bunlar komut satırı gereçlerinden grafik görüntüleme seçeneklerine kadar sıralanabilir.
* WGRIB - Grib dosyalarının manupulasyonu, envanter ve kod çözümünde kullanılan komut satırı temelli bir programdır.
* Picogrib - ECMWF GRIBEX rutinleriyle bir dereceye kadar uyumlu C - dili (Fortran çağrılabilir)'nde ücretsiz GRIB1 için kod çözme paketidir.
* NCEP Codes, GRIB1 formatında kod çözme ve kodlama için kullanılan (C ve Fortran kütüphanesi) özgür yazılımdır.
* NCEP Codes, GRIB2 formatında (Sadece bazı şablonlarda) kod çözme ve kodlama için kullanılan (C ve Fortran kütüphanesi) özgür yazılımdır.
* Python grib2 Module - GRIB2 dosyalarını okur.
* JGRIB - Java'da GRIB1 dosyalarını okumak için açık kaynak bir kütüphanedir.
* Meteosatlib - Meteosatlib, çeşitli formatlar arasında uydu resimlerini dönüştüren araçların atandığı ve C++ kütüphanesi olan açık kaynak kodlu bir yazılımdır. Meteosatlib, GRIB1 verisi okuyabilir ve yazabilir. Ayrıca GRIB1 kodlama/kod çözme kütüphanesini bağımsız olarak kullanabilir.
* NCAR Comman Language, GRIB1 verisini görüntüleme, okuma ve analizinde kullanılabilir. Ayrıca diğer gridded veri formatlarına dönüştürür.
* PyNIO, NetCDF model arayüzünü kullanan veri formatlarının çeşitlerine okuma ve/veya yazma erişimi sağlayan bir python programming language modülüdür.
* degrib (NDFD GRIB2 Decoder) - GRIB1 ve GRIB2 dosyaları için bir okuyucudur.
* WGRIB - GRIB2 dosyaları için bir okuyucudur.
* GRIP API - GRIB1 ve GRIB2 verisini kodlama ve kod çözmede kullanılan ECMWF'te geliştirilen bir API'dir. Kullanışlı bir araç olan komut satırı araçları da API'nin içindedir.
* Ugrib - GRIB1 dosyalarını okumak için tasarlanan grafik GRIB görüntüleyicisidir. grib.us web sitesinde, hava tahmini için GRIB verilerinin doğru ve etkin kullanımı konusunda eğitim sağlar.
* Xconv/Convsh - Xconv, tüm işletim sistemlerinde kullanılabilen gridded veri dönüşümü ve görüntülenmesi için bir grafiksel araçtır. Convsh'de bunun komut satırında kullanılan eşdeğeridir.
* GRIB Java Decoder - Java'da GRIB1 ve GRIB2 dosyalarını okumak için açık kaynak kodlu bir kütüphanedir, NetCDF Java Common Data Model Library'nin bir parçasıdır.

26 Mart 2008 Çarşamba

NetCDF(Network Common Data Form)

Bilimsel veri değişimi için kullanılan, kendi kendini tanımlayan, makina bağımsız ikilik veri format standardıdır. Proje anasayfası UCAR(University Corporation For Atmospheric Research) bünyesindeki Unidata programı sahipliğindedir. UCAR ve Unidata, yazılım, standart geliştirme, güncelleme v.b. gibi konularda NetCDF'in ana kaynağıdır. Format bir açık standarttır. Proje halihazırda 3. versionda aktif olarak desteklenmekte ve 4. version için de destek planlanmaktadır. 4. versionda HDF5 veri dosya formatı ile birleştirilmesi planlanmaktadır. HDF5 dosyalarına alternatif NetCDF arayüzleri sunulacaktır. Format aslen NASA CDF (Common Data Format)'in kavramsal modeli temellidir. Fakat CDF'ten ayrıldığından beri onunla uyumlu değildir.
Format Tanımı :
Veri formatı "kendi kendini tanımlayabilir " dir. Bunun anlamı bir header/başlık vardır. Bu başlık veri dizilerine mahsus dosyanın geri kalanının düzenini tanımlar. Buna ek olarak isim/değer özellikleri (attributes)(bir nesnenin veya başka türlü bir elemanın etkeni) biçiminde metadata dosyalar isteğe bağlı olarak eklenebilirler. Format platformu bağımsızdır, yazılım kütüphanelerinde adreslenmiş olan endianness (İşlemciler, byte'ları saklarken önemli byte'ın solda veya sağda saklamalarına göre sınınıflandırırlar. Buna endianness denir. Önemli byte'ların solda olduğu sıralamaya big - endian , sağda olduğu sıralamaya little - endian denir. i386 ve klonları litte - endian, Sun sparc, Motorola 68K ve PowerPC big - endian kullanır.) dağıtımlara da uygundur. Veri dizileri, düzenli biçimlenmiş, basit bir şekilde ve kusurlu olmayan dikdörtgen biçimindedir. Ayrıca alt küme oluşumuna izin verir.
NetCDF API'nin yeni 4.0 versionu geliştirilmektedir. Bu versiyon HDF5 veri formatının üzerinde genişletilmiş ve tamamlanmış olacaktır. NetCDF kullanıcıları, daha büyük dosyalar ve çoklu sınırsız boyutlar gibi NetCDF formatı ile kullanışlı olmayan özellikleri HDF dosyaları yaratarak kullanıyor olacaklardır. Geriye dönük uyumluluk eski NetCDF versionlarında desteklenmeye devam edecektir. Birleştirilmiş kütüphaneler ile NetCDF ve HDF5'in istenen ortak karakteristikleri korunacaktır. Onların farklı güçlerinin avantajlarından faydalanılacaktır : Örneğin, NetCDF basitliği ve yaygın kullanımı ve HDF'in performansı ve genelliği (Kullanım alanının çokluğu).

YAZILIM
Erişim Kütüphaneleri :
Yazılım kütüphaneleri, NetCDF dosyalarına okuma- yazma erişimi, metadata ve gerekli dizilerde kodlama kodçözme sağlayan UCAR tarafından tedarik edilmiştir.
Esas kütüphane C'de yazılmıştır ve C. C++ ve fortran uygulamaları için bir API sağlar. Bağımsız bir uyarlama/implementation olan %100 Java ile yazılmış Unidatatarafindan geliştirilen ve korunan ek işlevsellikler eklenen ve esas veri modeli ile genişletilmiştir. C kütüphanelerindeki NetCDF temelli arayüzlere Octave, IDL, Matlab, Ruby, Python, Perl ve R dilleri de dahil edilmiş ve kullanıma hazırdır. API çağrılarının özellikleri, farklı dillerde syntax'ın zorunlu farklılıkları dışında çok küçük karşıtlıklar gösterir. Version 2 için API çağrıları version 3'ten daha farklıdır. Fakat geriye uyumluluk için version 3 tarafından hala desteklenmektedir. Dil desteği kullanan uygulama programcıları dosya yapısı hakkında kaygılanmakla beraber bu format kullanışlı bir açık formattır.

Uygulamalar :

NetCDF dosyalarını kullananların yaptığı ve yazdığı, geniş bir alana yayılan uygulama yazılımlarıdır. Bunlar komut satırı gereçlerinden grafik görüntüleme paketlerine farklılıklar gösterir.
* NetCDF dosyaları için, Unix komut satırı gereçlerinden çoğunlukla kullanılan bir bölümü olan NetCDF Operators(NCO) suiti, Bu suit concatenating (İki karakter stringi birbirine bağlamak/birleştirmek), slicing (Nesne yönelimli programlamada çoğu kez bir altsınıf, üst sınıftan daha çok bilgi tutar. Böylece eğer üst sınıf tipi bir değişkene alt sınıfın bir örneğini tahsis edersek, depolanacak fazla bilgiye yeterli alan kalmaz ve bu sliced off olarak adlandırılır. Nesnelere referans veya işaretleyiciler kullanırken bunun olmamasına dikkat edilmelidir. ), ve average(ortalama) temel yazımlarını içeren netCDF dosyalarının analizi ve manupulasyonu için bir komut alanı sağlar.
* NcBrowse, NetCDF dosya teamüllerinin geniş bir alanı için Java grafikleri, animasyonlar ve 3 boyutlu görüntüleme içeren genel amaçlı bir NetCDF dosya görüntüleyici.
* ncview, NetCDF dosya formatı için görsel bir tarayıcıdır. Genellikle ncview kullanmak kolay ve hızlıdır. Verinin basit görüntüsünü görebilirsin, boyutlar muhtelif uzunlukta görülür, gerçek veri değerlerine bakılabilir, renk haritaları değiştirilebilir, data ters cevrilebilir gibi.
* Panoply, Nasa Goddard Instıtute for Space Studies'de geliştirilen geo-gridded verinin görüntülenmesine odaklanmış bir NetCDF görüntüleyicisidir. Java'da yazılmıştır ve bu yüzden platform bağımsızdır. Her ne kadar ncBrowse ve ncview'le beraber özellikleri üst üste gelsede, Panoply farklı ölçek renk tablolarıyla çalışma yeteneği ve harita izdüşümlerinin geniş türleri ile çalışması nedeniyle ncBrowse ve ncview'dan ayrılır.
* The NCAR Command Language, NetCDF dosyalarında (diğer formatlarla birlikte) veri görüntüleme analizinde kullanılır.
* PyNIO, bir python programlama dili modülüdür. NetCDF içeren veri formatlarına bir tür okuma/yazma erişim izni verir.
* Ferret, okyanusbilimci ve meteorolojistler'e gerekli karmaşık gridded veri kümeleri ve büyük analizler için tasarlanmış bir etkileşimli/interactive bilgisayar görüntüleme ve analiz ortamıdır. Ferret, matematica (bilimsel ve matematiksel alanlarda kullanılan özel bir yazılım) gibi bir çözümleme yaklaşımıdır; yeni değişkenler, veri seti değişkenlerini kapsayan matematiksel açıklamalar gibi etkileşimli biçimde tanımlanabilirler. Hesaplamalar, isteğe bağlı olarak biçim verilmiş belgeler üzerinde uygulanabilir. Grafiklerin tüm dökümanları tek bir komutla üretilir.

Ortam Kullanım :
Genellikle iklimbilim uygulamaları (hava tahmini, iklim değişikliği) ve GIS (Geographic Information System) uygulamalarında kullanılır. Pek çok GIS uygulaması için giriş/çıkış formatı ve genel bilimsel veri değişimi için NetCDF kullanılır. NetCDF internet sitesinden aktarmak gerekirse "NetCDF dizi-yönelimli veri erişimi ve arayüzün gerçekleşimini(implementation) sağlayan kütüphane için bir arayüzdür. NetCDF kütüphanesi hem de bilimsel veri sunumu için makina bağımsız bir formatı tanımlar. "

Paralel NetCDF :
Paralel computing için NetCDF'in bir uzantısı olan Parallel - NetCDF, Argonne Laboratuarlarında ve Northwestern Üniversitesinde geliştirilmiştir. Bu, MPI - IO üzerinde yapılmış, MPI iletişimine I/O uzantısı ve yüksek seviye NetCDF veri yapılarını kullanır. PnetCDF kütüphaneleri çoklu işlemciler arasında dosya okuma - yazma uygulamalarının verimli dağıtımını en iyi şekilde yapabilirler.

NetCDF - Java Ortak Veri Modeli :
NetCDF - Java kütüphanesi halihazırda aşağıdaki dosya formatlarını ve uzaktan erişim protokollerini okur:
BUFR (Geliştirilmeye devam ediliyor.)
CINRAD level II (Çin Radar formatı)
DMSP (Defense Meteorological Satellite Program)
DORADE (Radar Dosya Formatı)
GOES (GOES Ingest and NOAAPORT Interface ) image format
GEMPAK gridded data
GRIB version 1 ve version 2 (tablolar üzerind eçalışma devam ediyor.)
GTOPO 30-sec elevation dataset (USGS)
Hierarchical Data Format (HDF4, HDF-EOS, HDF5, HDF5-EOS)
NetCDF (classic and large format)
NetCDF-4 (built on HDF5)
NEXRAD Radar level 2 and level 3
OpenDAP client/server protocol

Geliştirmede bir sıra vardır. Bunların her birinin NetCDF API'den açıkça erişiminden itibaren NetCDF - Java kütüphanesi bilimsel veri setleri için bir "ortak veri modeli" uygular.
Ortak veri modeli, herbiri diğerinin üzerinde yapılanan ve ardarda eklenen oldukça zengin anlamlar içeren 3 katmandan oluşur.
1- Veri erişim katmanı, sözdizim katmanı da denir. Veri okumayı ele alır.
2- Koordinat sistemi katmanı, veri dizilerinin koordinatlarını belirler. Koordinatlar, bilimsel veriler için tamamen genel bir içeriktir; georeferencing (fiziksel uzayda varoluş) koordinat sisteminin uzmanlığı ve yer bilimi topluluğundaki önemi özellikle açıklanır.
3- Bilimsel veri tipi katmanı, gridler, resimler, nokta verileri ve verinin herbiri için özel yöntemlerin eklendiği verinin bilinen tipini belirler.
Veri erişim katmanının veri modeli (Özet modeli tanımlanan verinin erişimi ve gösterimidir.), esasen NetCDF - 4 veri modeli ile aynı ve NetCDF - 3 veri modelinin genelleştirilmiş halidir.
Koordinat sistem katmanı, CF Metada Conventions (İklim ve tahmin metadata kuralları) kavramlarını genişletir ve tamamlar.
Bilimsel veri tipi katmanı, uzay koordinatında Open Geospatial Consortium (Bir Uluslararası gönüllü uzlaşı standartları organizasyonudur.) veri manipulasyonuna izin verir.
Koordinat sisteminin ve veri tiplerinin tanımlanması devam etmekte fakat kullanıcılar özel işlemler için kendi sınıflarında çalışan plug-in'leri (Bir programa eklenebilen ve yüklendiği programa ek bir kabiliyet kazandıran kısa ve küçük yazılımların genel adı) kullanabilirler.

Hierarchical Data Format

Genellikle HDF, HDF4 veya HDF5 olarak kısaltılır. Bilgisayarlar arasında sayısal veri ve grafiklerin aktarımı için bir kütüphane ve çoklu-nesne dosya formatıdır. NCSA (National Center for Supercomputing Applications) tarafından yaratılmıştır. Fakat halihazırda HDF Group tarafından devam ettirilmektedir. Serbestçe kullanılabilir HDF dağıtımı, kütüphane, komut satırı gereçleri, deneme suite kaynakları, Java arayüzü ve Java temelli HDF Viewer(HDFView) den oluşur. HDF, tablolar, raster image (satırlı imge/matris imge), çok boyutlu diziler gibi bir kaç farklı veri modelini destekler. Her bir tanımlama belirli bir kümelenmiş veri tipini ve okuma - yazma için bir API sağlar. Ayrıca veri ve metadata düzenler. Yeni veri modelleri HDF geliştiricileri veya kullanıcıları tarafından eklenebilir. HDF, kendini tanımlayan herhangi bir dış bilgi olmadan bir dosyanın içeriği ve yapısını yorumlamaya müsaade eden bir uygulamadır. Bir HDF dosyası ilişkili objelerin bir karmasını tutar. Bunlar erişilebilir tek bir nesne veya bir grup olabilir. Kullanıcılar kendi grup yapılarını yaratabilirler. Bunlara "vgroup" denir. HDFView, HDF dosyaları için bir düzenleyici ve tarayıcıdır.
HDF5 :
HDF5 formatı, HDF4 kütüphanesinin sınırlarının bazı şeylere ve durumlara hitap edecek şekilde tasarlanmış halidir. Modern sistemler ile uygulamaların şimdiki ve beklenen isteklerine hitap eder. NetCDF'in gelecek versiyonu olan version 4, HDF5 temellidir. Çünkü index tablo nesnelerinde B-trees yapısı kullanılır. Bu, ağ görüntüleme verisi veya borsa işlemleri gibi Time series verileri için iyi çalışır. Bulk verilerin dizilere (tablo nesneleri) doğru girişi sağlanır. Bu bir SQL veritabanının satırlarından çok daha hızlı erişilebilirdir. Fakat hala dizi olmayan veriler için B-tree erişimi sahibi isen ve kendi veri SQL'ine göre bir Star Schema tasarlarsan, HDF5 gibi bir basit, hızlı alternatif depolama düzeneğini incelemek istersin.

21 Mart 2008 Cuma

VI Editörü - 2

Metinde Bulup Değiştirme (Find&Replace) :
Metin içerisinde sözcükleri bir başka sözcük veya sözcüklerle değiştirmek istersek; bunun için şu komutu kullanıyoruz.
:s/eski/yeni
Bu komut ilk rastladığı eski'yi yeni ile değiştirir.

Bir satırdaki tüm eski kelimeleri yeni olarak değiştirmek istersek;
:s/eski/yeni/g

Aşağıdaki örneklerde bu komutun değişik alternatifleri yer almaktadır.
:1,100s/eski/yeni/g - Dosyanın 1. ve 100. satırları arasında rastlanan tüm eski'leri yeni olarak değiştirir.

:1,$s/eski/yeni/g - Dosyanın 1. ve sonuncu satırları arasında rastlanan tüm eski'ler yeni olarak değişir.

:%s/eski/yeni/g - Tüm dosyadaki eski'ler yeni olur.

:%s/ersin/esn/gc - Tüm dosyadaki ersin'ler esn olarak değiştirilir. Her bir değişiklik için kullanıcı onayı istenir. (c:confirmation)

:%s/Fortran/\U&/g - Dosyadaki tüm Fortran'lar FORTRAN ile değiştirilir.

:g/^$/d - Tüm boş satırları bulur ve siler. (^işareti satır başı, $ ise satır sonu anlamına gelir.)

:g/^ *$/d - İçinde boşluk karakteri de olan tüm boş satırları siler.

Satır Numaraları:
Vi editörü, normalde ekranda satır numaralarını göstermez. Satır numaralarını ekranda görebilmek için;
:set number
komutunu kullanırız.
Yeniden satır numarasını kaldırmak için
:set invnumber
komutunu kullanabiliriz.

Tuş Kısaltmaları :
Bir metin yazarken bazı kelime ya da kalıpları çok sık tekrar etmek gerekebilir. Örneğin, metinde pek çok yerde "Türk Hava Yolları" geçiyorsa;
:ab thy Türk Hava Yolları
komutu ile kısaltma (abbreviation) tanımı yapabiliriz. Artık klavyede her thy yazıp enter'a bastığımızda Türk Hava Yolları yazılacaktır. Bu kısaltmayı iptal etmek için ;
:unab thy
dememiz yeterlidir. Ayrıca vi'dan çıkınca da kısaltma ortadan kalkar.
Eğer vi komutları ile ilgili bir kısaltma tanımlamak istiyorsanız bunu map komutu ile yapmamız gerekir;
map ^Y dd
komutu ile Ctrl-Y tuşunun, bulunulan satırın silinmesini sadd komutu ile eş zamanlı olarak kullanılmasını sağlarız. Tanımlamaları iptal etmek için de:
unmap ^Y
komutunu vermemiz yeterlidir.
Eğer bu tip kısaltmaların kalıcı hale gelmesini istiyorsanız home dizinindeki .exrc dosyasına bu komutları eklemelisiniz.

Dosya İşlemleri :
Vi ile üzerinde çalıştığımız dosyalarla ilgili yapılacak işlemlerde aşağıdaki komutları kullanabilirsiniz:

ZZ - Dosyayı son hali ile kaydet ve vi'dan çık. (:wq ile eşdeğerdir.)
:q - Dosyada değişiklik yapılmayacak, vi’dan çık (quit)
:q! - Yapılan değişikliklerden vaz geçildi, dosyayı değiştirmeden vi’dan çık (quit)
:w - Dosyayı diske kaydet (vi’da kal) (write)
:wq - Dosyayı diske kaydet ve vi’dan çık (write - quit)
:x - vi’dan çık, değişmişse dosyayı diske kaydet (exit)
:wDosya2 - Üzerinde çalışılmakta olan dosyayı, dosya2 adıyla diske kaydet. (write)
:1,100wbolum1 - Üzerinde çalışılmakta olan dosyanın ilk 100 satırını bolum1 isimli bir dosyaya
kaydet.
:rdosya3 - dosya3 adlı dosyayı oku ve imlecin bulunduğu noktadan başlayarak ve araya ekle. (read)

Vi İçinden UNIX Komutu Verme :
Vi içinde çalışırken başka bir dosyanın adına, içeriğine bakmamız gerektiğinde veya vi içinden kimi UNIX komutlarını çalıştırmamız gerektiğinde bunu aşağıdaki örneklerde olduğu gibi yapıyoruz.
!ls
Burada dosyanın bulunduğu dizinde ls komutu çalışır.

!mail
mail komutu çalışır ve maillerinize gidersiniz.

:r !prog
prog adlı program çalışacak ve çıktısı vi ile çalışmakta olduğunuz dosyada, imlecin bulunduğu noktaya gelecektir.

20 Mart 2008 Perşembe

UNIX İşletim Sistemi - 2

UNIX'te Erişim Yetkileri :
Unix'te güvenlik sisteminin temelinde kullanıcıların sisteme tanıtımı sırasında yapılan düzenlemeler vardır. Sistemin yönetiminden sorumlu olan kişi, kullanıcıları kullanım konularına göre sınıflandırır. Bu sınıflara kullanıcı grupları (user group) denir ve her kullanıcı grubunun bir numarası olur.
ls -l komutu ile bir dizinde yer alan dosyaların ve dizinlerin listesini aldığımızda,
-rwxr-xr-x 1 root 239783 Feb 09 13:34 kadb
gibi satırlar görmekteyiz. Bu satırlardaki erişim yetkileri ile ilgili olan rwxr-xr-x gibi kod dizileri vardır. Bu 9 karakterden oluşan dizi aslında üçer karakterlik üç parçadan oluşmaktadır. (Burada rwx r-x ve r-x)
İlk üç karakter dosyanın sahibinin yetkilerini, ikinci üçlü dosyanın sahibiyle aynı kullanıcı grubunda yer alan kullanıcıların yetkilerini, son üçlü ise diğer kullanıcıların bu dosya üzerindeki yetkilerini tanımlamaktadır.
Burada;
r : Okuma yetkisi (read access)
w: Yazma Yetkisi (write access)
x : Dosya bir program dosyası ise programı çalıştırma yetkisini gösterir. (execute access)
Toplu halde göstermek gerekirse;
drwxrwxrwx
d - dosya tipi
rwx - Sahibinin bu dosya/dizin üzerindeki yetkileri
rwx - Sahibi ile aynı grupta olanların yetkileri
rwx - Diğer kullanıcıların yetkileri

Dosya ve dizinlerin erişim yetkilerini değiştirmek için chmod komutu kullanılır.
Burada;
u : dosyanın sahibi (user)
g : dosyanın sahibiyle aynı grupta olanlnar (group)
o : diğer kullanıcılar (others)
a : herkes (all)
+ : yetki ekleme
= : yetki eşitleme
- : yetki çıkarma
r : okuma yetkisi (read)
w : yazma yetkisi (write)
x : çalıştırma yetkisi (execute)
s : suid biti
t : sticky biti

Not : SUID - Bir program dosyasının SUID bitini set etmek (yani chmod +s prog gibi bir komut vermek), bu prog programını çalıştıran kullanıcıların, program çalıştığı sürece ve sadece bu program ile ilgili dosyalar açısından, program dosyasının sahibinin yetkilerine sahip olmalarını sağlar. Suid biti set edilmiş programlar emniyet açığına sebebiyet verebilir.
STICKY - Sticky set edilmiş programlar bir kez bellleğe yüklendikten sonra program çalışması bittiğinde bile bellekten atılmazlar. Artık sticky bit kavramı kullanılmamaktadır.

Örnekler :

chmod a+x adres : adres isimli program dosyasına herkes için çalıştırma yetkisi verir.

chmod o-w mhsb.z : mhsb.z dosyasından, diğer kullanıcıların yazma yetkisini kaldırır.

chmod go=rx adres : adres dosyasının grup ve diğerleri için erişim yetkisini r-x kalıbına eşitler.

chmod komutunun bir diğer formu da yetkilerin sayısal değer olarak gösterildiği formdur:
4 2 1 4 2 1 4 2 1
r w x r w x r w x
Owner Group Others
Örnek :
4 2 1 4 - 1 4 - 1
r w x r - x r - x
7 5 5

chmod 755 adres : adres dosyasının erişim yetkileri rwxr-xr-x olur.

chown komutu dosyaların/dizinlerin sahibini değiştirmekte kullanılır. Bu komutu sadece root kullanıcılar kullanabilir.
Erişim yetkileriyle ilgili olarak, zaman zaman dosya ve dizinlerin sahiplerinin değiştirilmesi gerekebilmektedir. Örneğin, root kullanıcı bir nedenle, bir kullanıcı dizininde bir dosya ya da dizin yaratırsa ve bu yeni yaratılan dosya/dizinin o kullanıcı tarafından tam yetkiyle kullanılmasını isterse, bunu sağlamanın en kolay yolu, bu yeni yaratılan dosya/dizinin sahibini o kullanıcı yapmaktır.
chown
Burada kullanıcı adı olarak sahibi olması istenen kullanıcının adını yazıyoruz. dosyaadı olarak ise eğer dosya bulunulan dizinde ise dosyanın adı eğer bulunulan dizinde değil ise dosyanın yolu(path) ile birlikte adını veriyoruz.
Örnek :
chown ersin /home/tumas/grib.txt

18 Mart 2008 Salı

VI Editörü - 1

Vi editöründe dosya açma/yaratma için vi dosya_adi komutu kullanılır. Eğer dizinde dosya_adi diye bir dosya yoksa vi editörü açılır. Bu dosyanın adı dosya_adi olur. İmleç sol üst köşede iken i tüuşuna bir kez basılır(küçük i) ise komut pozisyonundan ekleme pozisyonuna geçilir. ekleme durumundan komut durumuna geçmek için Esc tuşuna basmamız gerekir. Komut durumunda :wq yazarak dosyayı kaydedip çıkabiliriz. Kaydetmeden çıkmak için :q! yazmanız yeterlidir.
İmleç Dolaştırma Komutları :
Bu komutların verilmesi için editor komut konumunda bulunmalıdır. İmleci dolaştırma komutları şunlardır:

h - sola bir karakter
j - aşağı bir satır
k - yukarı bir satır
l - sağa bir karakter

İmleç hareket komutlarının başına bir sayı eklenerek bu sayı kadar sağa, sola, aşağı ve yukarı hareket sağlanabilir. Ayrıca birerli adımlar dışında hareket sağlayan ve çok kullanılan komutlardan şunlardır :

0(sıfır) - İmlecin bulunduğu satırın başına
$ - İmlecin bulunduğu satırın sonuna
w - Bir sonraki sözcüğün başına
b - Bir önceki sözcüğün başına

Ekleme Komutları :
vi editöründe ekleme konumuna geçmenin yöntemlerinden biri (i) komutudur. i komutu ile üzerinde bulunduğunuz karakterin hemen solundan başlayarak esc tuşuna basıncaya kadar basılan her karakteri metne ekler. Varsa, eski metin sağa doğru itelenir.
a komutu ile karakterin hemen sağından başlanarak esc tuşuna basıncaya kadar, basılan her karakter metne eklenir. Eski metin sağa doğru itelenir.
A komutu ile imlecin bulunduğu satırın sonundan başlayarak esc tuşuna basıncaya kadar basılan her karakteri metne ekler. Varsa eski metin aşağı doğru itelenir.
Yazı Silme :
Daha önce yazılmış metin parçalarını silmek için kullanılan komutlardır.

x - İmlecin üzerinde bulunduğu tek karakteri siler.
3x - İmlecin üzerinde bulunduğu karakter dahil sağa doğru 3 karakter siler.
dw - İmlecin bulunduğu yerden kelime sonuna kadar siler. Eğer imleç sözcüğün başında ise sözcüğü siler.
2dw - İmlecin bulunduğu yerden başlayarak iki sözcük siler.
dd - İmlecin bulunduğu satırı siler.
2dd - İmlecin bulunduğu satır dahil aşağı doğru iki satır siler.
D veya d$ - İmlecin bulunduğu yerden satır sonuna kadar siler.

Yanlışlıkla bir silme işlemi yaparsak, u komutu ile son silme işlemini geri alabiliriz. Eğer son sildiğimiz metin parçasını geri getirmek istersek bu işlemi p komutu ile yapabiliriz.
Metin Bloklarının Yerini Değiştirme:
vi editörü ile metin bloklarının yerini değiştirmek için kes - yapıştır yaparız. Önce metin bloğu uygun bir komutla(örneğin dd) kesilir; daha sonra p komutuyla (put) yeni yerine yapıştırılır.
Metin Bloklarını Kopyalama :
Bunun için kullanılacak yöntem kopyala - yapıştır'dır. Kopyalayacağımız metin bloğunu önce bulunduğu yerde y veya yy komutu ile geçici belleğe aktarmalı, daha sonra kopyalanacağı yere p(put) komutu ile yapıştırmalıyız.
Son Komutu Tekrarlama:
Herhangi bir sebeple son değişiklik komutunuzu başka yerlerde de tekrarlamanız gerekirse, (.) (nokta) komutu ile bunu yapabilirsiniz.
Metin Eklemenin/Değiştirmenin Yolları :
I (Insert) : (Büyük i) İmlecin bulunduğu satırın başına eklemeye başla. (Esc’e kadar)
o (Open Line) : (Küçük O) İmlecin bulunduğu satırın altına bir boş satır aç ve oraya eklemeye başla.
O (Open above) : (Büyük O) İmlecin bulunduğu satırın üstüne bir boş satır aç ve eklemeye başla.
s (Substitute Char) : İmlecin bulunduğu yerdeki karakteri sil ve yerine yeni metni eklemeye başla . (Esc’e kadar)
S (Substitute Line) : İmlecin bulunduğu satırı sil ve yerine yeni metni eklemeye başla.
r (Replace Char) : İmlecin bulunduğu karakteri bir sonra basılacak karakterle değiştir.
R (Replace Text) : İmlecin bulunduğu noktadan itibaren, yeni metni eski metnin üzerine yerleştir. (Esc’e kadar)
J (Join) : (Büyük j) İmlecin bulunduğu satırla arkasındaki satırı birleştir.
cw (Change Word) : İmlecin buluduğu sözcüğü, yeni girilecek sözcükle değiştir.
Metnin İçinde Dolaşma :
Büyük boyutlu metinler içinde dolaşmak için komutlar gerekebilir. Bu komutları şöyle sıralayabiliriz :
CTRL F (Forward) Bir ekran ileriye
CTRL B (Backward) Bir ekran geriye
CTRL D (Down) Yarım Ekran ileriye
CTRL U (Up) Yarım Ekran geriye
CTRL R (Redraw) Ekranı yeniden düzenle (Çalışırken bir başka kullanıcıdan mesaj gelirse,
ekranınız bozulacaktır. Bu komut, ekranı silip yeniden oluşturarak düzenlenmiş olur.)
CTRL Y Ekranı bir satır aşağı kaydır, imleç yerinde kalsın.
CTRL E Ekranı bir satır yukarı kaydır, imleç yerinde kalsın.
z ENTER (Küçük z) İmlecin bulunduğu satır ekranın en üstüne gelecek şekilde ekranı
düzenle
z. (Küçük z ve nokta) İmlecin bulunduğu satır ekranın ortasına gelecek şekilde ekranı düzenle
z- (Küçük z ve eksi ) İmlecin bulunduğu satır ekranın en altına gelecek şekilde ekranı düzenle
H (Home) Ekranın en üst satırına git.
M (Mid Screen) Ekranın orta satırına git
L (Lower Screen) Ekranın en alt satırına git
ENTER Bir sonraki satırın ilk karakterine git.
Metnin İçinde Arayarak Dolaşma :
Metin içinde kelime bazlı arama yapmak isterseniz
/örnek ENTER
diyerek metin içinde arama yapabiliriz. Burada imleç örnek kelimesini ilk gördüğü yerde duracaktır. Arama imlecin bulunduğu yerden ileriye doğru yapılabilir. Eğer geriye doğru arama yapmak istersek / yerine ? karakterini kullanmamız gerekir.
Metin içerisinde birden çok örnek kelimesi varsa ve biz diğer örnek kelimelerine gitmek istiyorsak n(next) harfine basmalıyız.

UNIX İşletim Sistemi - 1

UNIX İşletim sisteminin en karakteristik özelliklerini kısaca şöyle sıralayabiliriz :

* UNIX ‘çok kullanıcılı’ bir işletim sistemidir. Kullanıldığı bilgisayarın bir
anda birden fazla kişi tarafından kullanılmasını; daha doğrusu
paylaşılmasını sağlayabilmektedir.
* UNIX ‘çok iş düzeni’ni sağlayan bir işletim sistemidir. Kullanıcıların,
herbirinin, aynı anda birden fazla iş yapmalarına olanak sağlar.
* UNIX, donanımdan bağımsızdır. Hangi bilgisayar üzerinde kullanılırsa
kullanılsın, kullanıcılarına göründüğü şekli aynıdır. Öğrenenler kalıcıdır.
* UNIX iyi tasarımlanmıştır. Teknolojideki gelişmelere kolaylıkla uyum
sağladığı ve sağlayacağı kanıtlanmıştır.
* UNIX, bir işletim sistemi standardı olarak kabul edilmiştir. Bu sayede
farklı marka ve model bilgisayarlar birbirleriyle uyumlu kılınabilmektedir.

UNIX işletim sistemine girişi login ve password yazarak yapıyoruz. Terminalden çıkarken ise mutlaka logout veya exit diyerek bağlantıyı kapatmamız gerekir.
Kullanıcı ile Unix işletim sistemi arasındaki tüm haberleşme kabuk (shell) programı aracılığıyla yürütülmektedir. Klavyeden yazacağınız her komut, kullanmakta olduğunuz kabuk programı tarafından yorumlanmaya çalışılacaktır. /bin/csh veya sadece csh komutu vererek C shell kabuğuna geçmeyi deneyiniz. Eğer bir hata mesajı alırsanız ve % karakteri ortaya çıkarsa bu işlemi başarmış demektir. eski kabuğa dönmek için Ctrl+D tuşlarına basmak veya exit yazmanız gerekir.
Unix işletim sistemi altında çalışan bilgisayarlarda çoklu kullanıcılık esası vardır. Bilgisayarı kullananları görmek için who komutunu kullanırız. Burada bilgisayarı kullanan kullanıcıları ve terminallerini görebiliriz. Bu kullanıcıların kendi isimleri dışında bir de root kullanıcı adıyla bağlana kullanıcı vardır. Bu sistem yöneticisidir ve sistemde herşeyi yapmaya yetkilidir. Eğer sisteme hangi kullanıcı adı ile giriş yaptığımızı öğrenmek istersek whoami komutunu komut satırına yazmalıyız.
Unix işletim sisteminde kullanıcılar arasında mail alışverişi yapılabilir. Mailin olup olmadığını anlamak için mail komutu yazılır.

Unix işletim sisteminde şifrenizi değiştirmek istiyorsanız passwd komutunu kullanmalısınız.
Unix işletim sistemindeki komutların işlevlerini öğrenmek için yardım dosyası gibi kullanabileceğiniz man komutu vardır. man yazarak yazdığınız komutun ne işe yaradığını öğrenebilirsiniz.
Unix Dosya Yapısı :
Unix işletim sisteminde tüm veriler, programlar, dosyalarda(file); dosyalarsa dizinlerde(directory)(klasör) gruplanmış olarak saklanır. İşletim sistemi dosya isimleri konusunda oldukça esnektir. Ms - Dos'daki gibi uzantı kavramı yoktur. Nokta (.)'nın herhangi bir anlamı yoktur. İsim içinde herhangi bir yerde kullanılabilir. dosya isimlerinde büyük küçük harf ayrımı vardır.
Unix işletim sisteminde her kullanıcının kenndisine ait bir kullanıcı dizini vardır. (home directory) Bu dizin, kullanıcının sisteme tanıtımı sırasında sistem yöneticisi tarafından yaratılır.
pwd komutunu yazarak o an çalıştığımız dizini görebiliriz.
Bulunduğunuz dizinde yer alan dosyaların listesini görmek için ls komutunu kullanmalısınız. ls komutu ms-dos'taki dir komutu gibidir. ls yazdığınız zaman çok açıklayıcı olmayabilir. Daha açıklayıcı bir liste için ls -F komutunu kullanmalısınız. Bu listede dizinler "/" karakteriyle kendini belli eder. Program veya komut dosyaları "*" ile belirlidir.
ls -l komutu ile dosya ve dizinler ayrıntılı olarak sıralanır. Bu komut ile ortaya çıkan listeyi anlamak oldukça önemlidir. Bu komutu yazıp çıkan listeden bir örnek vermek gerekirse:
-rwxr-xr-x 1 root 239783 Feb 09 13:34 kadb
-rwxr-xr-x : Bu satırın bir dosyayla ilgili olduğunu (-)'den anlıyoruz. Bu dosyanın sahibinin dosyada okuma(r), yazma(w), çalıştırma(x) yetkilerinin olduğunu, diğer kullanıcıların sadece okuma ve çalıştırma yetkilernin bulunduuğnu, dolayısıyla bu dosyanın bir program dosyası olduğunu anlıyoruz.
root : Bu dosyanın sahibinin root isimli kullanıcı olduğunu;
239783: Bu dosyanın uzunluğunun 239,783 byte olduğunu;
Feb 09 13:34 : Dosyanın en son 9 şubat saat 13:34'te değişikliğe uğradığını;
kadb : Dosyanın adının kadb olduğunu göstermektedir.
Dizinler içinse bu ls satırı biraz farklıdır:
drwxr-xr-x 20 root 512 Nov 23 16:08 usr
En baştaki d harfi, listenin bu satırının bir dizine ait olduğunu göstermektedir.
cat komutu : cat komutunun pek çok kullanım şekli vardır. cat şeklinde yazarsak, dosya adı adlı dosyanın içindeki bilgileri ekrana getirir. Yeni dosya yaratmak için cat > yeni_dosya formunu kullanırız. Kursor bir alta gelir. Yazdıklarımız yeni dosya adlı dosyanın içerisine yüklenir. dosyaya yazacaklarımız bitince imleç satır başında iken Ctrl+D'ye basılarak komut yazma satırına geri döneriz. Dosya adı verirken dizin belirtmediğimiz için yeni_dosya adlı dosya direkt olarak çalıştığımız dizinde oluşur. cat yeni_dosya yazarsak ekrana yeni dosya içine yazdığımız bilgiler gelir. cat komutunu değişik şekillerde de kullanabiliriz. cat >> yeni_dosya yazacağımız satırlar yeni_dosya dosyasına eklenecektir. cat yeni_dosya yazdığımız zaman dosyanıon içine eklediğimiz satırlar görülecektir.
cp komutu ile kopyalama yapabiliriz. Bu komutun kullanımının pek çok değişik şekli vardır.
cp dosya_adi_1 dosya_adi_2
dosya_adi_1 isimli dosyayı dosya_adi_2 isimli dosyaya kopyalayacaktır. Eğer dosya_adi_2 isimli dosya yoksa, yaratacaktır. Eğer bu isimde bir dosya varsa, üzerine kopyalama yapılacak ve eski içeriği bozulacaktır.
cp dosya_adi dizin_adi
dosya_adi adli dosyayi dizin_adi isimli dizinin altına kopyalar. Eğer dizin veya dosya yoksa ve o dosya veya dizin içerisine kopyalamayı düşünüyorsak, önce o dosya veya dizini oluşturur, arkasından kopyalar. Dizin kopyalamak için de cp komutu kullanılır ancak özel bir parametresi vardır:
cp -r dizin1 dizin2
bu form ile dizinler alt dizinleriyle birlikte kopyalanır.
Dizin yaratma: Dizin yaratmak için mkdir komutu kullanılır.
mkdir dizin_adi
Dosya silme : Dosyaları silmek için rm komutu kullanılır.
rm dosya_adi
Eğer dosyaları silmeden önce onaylamak istiyorsak -i parametresini kullanmalıyız.
rm -i /dizin1/dosya1 /baska_dizin/dosya2
Dizin silme : dizin silme işlemi için kullanılacak komut rm -r dizin şeklindedir.
Dosya/dizin adı değiştirme : Bu iş için kullanılacak komut mv(move) komutudur.
mv eski_dosya_adi yeni_dosya_adi
mv eski_dizin_adi yeni_dizin_adi
Dosya/Diziğn yeri değiştirme : Bunun için kullanılacak komut yine mv'dır.
mv eskiyeri/dosya yeniyeri/dosya
Dizin yeri değiştirmek için -R parametresi kullanılır.
mv -R eskiyeri/dizin yeniyeri/dizin
Çalışma dizini değiştirme : Bunun için cd komutu kullanılır.
cd yeni_calisma_dizini