Edition 2.2, August 2001
Mark Burgess
Centre of Science and Technology
Faculty of Engineering, Oslo College
Ceviri: inox
UNIX İLE YAPMAMANIZ GEREKENLER
Yapılmaması Gerekenler
1.Dosyalarınıza "core" ismini vermeyin. Bir cok shell scripti core adlı dosyaları siler.Cunku bir program coktuğunde UNIX kernel imajını core adlı boyutu cok buyuk bir dosyaya aktarır. Eğer bir dosyanın adını "core" yaparsınız, dosyanız silinebilir.
2.Dosyalara “test” ismini de vermeyin zira zaten UNIX'in test adlı bir komutu vardır. Bu, karışıklığa neden olacaktır.
3.ASLA UNIX calıştıran bir makinenin guc duğmesine basmayın. DOS'a benzemez bu. Arka planda programlar calışır ve bunlardan birisi bir yerlere dosya yazıyor olabilir. Gucu kestiğinizde dosya ortadan kalkabilir ve sisteminiz acılmayabilir. Ya da makinenize bağlı bir kullanıcı vardır onemli bir işlem yapıyor olabilir. Onun calışmasını tehdit edersiniz boyle bir durumda.
4.rm komutunu kullanırken vahşi karakterler(wild cards) kullanmayın ya da kullanırken cok ciddi duşunun zira beklemediğiniz bir gelişmeyle bir cok dosyayı ucurabilirsiniz.
İsimsiz 1
UNIX'e Başlamadan Once Bilinmesi Gerekenler
UNIX'in neredeyse tamamı C diliyle yazılmıştır. Sisteme ile etkişim de bu C fonksiyonları aracılığıyla gercekleşir. Ama sistem fonksiyonlarını kullanmak icin illa ki C programları yazmanız gerekmez. “cd”,”dir”,”ls” gibi komutları kullanabilir ya da Shell scripti, Perl, Python vb.. gibi diller aracılığıyla bu fonksiyonları cağırabilirsiniz. Bunların hepsi C fonksiyonlarını cağıran gorunumlerdir (interface).
UNIX'de bir kac istisna dışında TUM KOMUTLAR ASLINDA BİRER DOSYADIR. Bu komutlar “bin”(binary) adlı bir dizinde saklanır. Aslında bu guzel bir ozelliktir, yeni bir komut eklemek veya cıkarmayı kolaylaştırır. İşletim sistemi calıştırılabilir dosyaların bulunduğu dizini PATH adlı bir ortam değişkeninden elde eder.
Kernel ve Shell
Kullanıcılar direkt olarak kernel'ı icra edemezler. Yani işletim sistemine bir iş yaptırmak icin direkt olarak kernel ile iletişime gecemezler. Bunu sağlayan “shell”'dir. Shell bir komut yorumlayıcısı ya da bir kullanıcı arabirimidir. İki turk shell versiyonu vardır. sh, yani Bourne Shell ve csh yani C-Shell. sh UNIX'in orijinal shell'idir ve sistem scriptleri yazmak icin kullanılır. csh ise Berkley calışanları tarafından geliştirilmiştir. Script yazımı C diline benzemektedir. İnteraktif işlemler gercekleştirmek icin daha uygundur. Aynı zamanda tcsh adlı ucretsiz acık kaynaklı surumu de bulunmaktadır. En cok kullanılan surumdur. Bourne Shell'in de iki tane eklentili surumu vardır. Korn Shell ve Bourne-again shell. Shell'ler, komut tamamlama, wild card-expansions kullanımı, komutlar gecmişi, takmak adlar(aliases) gibi ozellikler sunarak daha konforlu bir arabirim sunmaktadırlar.
C'nin Rolu
chmod, mkdir ve cd gibi komutların hepsi C fonksiyonlarıdır. Bu komutların dosyaları aslında bu fonksiyonları cağıran basit programlardır. C derleyicisi Solaris 2'ye kadar UNIX'in bir parcasıydı. Yani UNIX'i programlamanın en doğal yolu C idi. C programcıları icin bazı yardımcı yazılımlar uretildi.
dbx: Sembolik bir hata ayıklayıcıdır(debugger) gdb, xxgdb, ddd
make: Buyuk programları derlemeye yardımcı olan bir aractır.
lex: Text icerisindeki kelimeleri bulabilmek amacıyla C kodları uretir.
yacc: Bir parser'dır. Text formatındaki kelime gruplarının sintaksını denetlemek icin C kodları uretir.
rpcgen: Bir protocol derleyicisidir. RPC uygulamaları icin daha yuksek seviyeli dillerden C kodu uretir.
stdin, stdout, stderr
UNIX'in her zaman ve her programa acık uc tur mantıksal dosyası ya da stream'i vardır.
1.stdin: Standart giriş. Dosya tanımlayıcısı 0
2.stdout: Standart cıkış. Dosya tanımlayıcıs 1
3.stderr: Standart hata. Dosya tanımlayıcıs 2
Bu isimler aslında C dilinin bir parcasındandır. FILE turunden bir pointer ile tanımlanmışlardır.
#include
/* FILE *stdin, *stdout, *stderr; *
fprintf(stderr,"This is an error message!n");
İsimler sadece mantıksaldır ve herhangi bie cihaza referans vermezler. Ya da bilgi girişi ve cıkıların yapıldığı bir bolge değildir. Onların rolu, dosya sistemi uzerindeki “.” ve “..” dizinlerine benzer. Programlar bu dosyalar, bilginin nereden geldiği ve nereye gideceği konusunda endişelenmeden rahatca yazabilirler. Kullanıcılar kişisel olarak bu alanları standart I/O yeniden yonlendirmesiyle yeniden tanımlayabilirler.
Super Kullanıcı(Root) ve nobody
Sisteme root olarak giriş yapanların dosya sistemi uzerinde sınırsız yetkileri vardır. root hakları sadece sistem yoneticilerine ve guvenilir kullanıcılara verilmektedir. Bu super kullanıcılar aynı zamanda şifreye ihtiyac duymadan başka kullanıcılara da donuşebilirler. Onceden belirlenmiş bazı komutları normal kullanıcılar calıştıramazlar. Ornek olarak dosyanın iyeliğini veya erişim haklarını sadece root değiştirebilir. Network ortamındaki durum biraz farklıdır. Şoyle ki, bu makinede root olan ben, başka bir bilgisayara bağlandığımda root haklarım o makinede gecerli değildir. Orada “nobody” olurum ve paylaşıma acılan dosyalar dışındaki dosyalara erişmem. Her root kendi makinesinden sorumludur.
Dosya Hiyerarşisi
UNIX'in hiyerarşik bir dosya sistemi vardır. Tum dizinler ve alt dizinler root “/” klasoru altında toplanarak bir ağac oluştururlar. Bu yerleşimin genel bir bicimi olsa da diğer UNIX versiyonlarında farklılık gosterebilir. Bu farklılık sadece klasorlerin yerleşim detayları ile ilgilidir.
/bin
Calıştırılabilir(ikilik) dosyaların bulunduğu dizindir. Coğu sistemde bu dosyalar usr icerisinde ayrı bir dizinde tutulur,”/usr/bin”. SunOS'da “/bin” “/usr/bin” işaret eden bir linktir.
/etc
Ceşitli dosyaların ve konfigurasyon dosylarının tutulduğu dizindir. UNIX tarihi boyunca bu dizin icerisi karman corman olmuştur. Bunu onlemek icin burada alt dizinler acılmıştır. “/etc/mail”, “/etc/services” gibi.
/usr
Uygulamaların ve işletim sistemi tarafından kullanılan tum temel kutuphanelerin bulunduğu dizindir.
/usr/bin
İşletim sistemi tarafından sunulan daha fazla calıştırılabilir dosyaları tutar.
/usr/local
Kullanıcıların kendi yazılımlarını eklediği yerdir
/sbin
Calıştırılabilen sistem dosyalarının tutulduğu ozel bir alandır. Bu alan, normal kullanıcıların ve super kullanıcıların kullandığı komutları ayırmak icin oluşturulmuştur. Buradaki dosyalar statik ve paylaşılamazlar.
/sys
Sistem kernelını inşa edecek konfigurasyon datasını tutar
`/export'
/export
Sadece network sunucuları kullanır. Kendi diski olmayan istemci makineler icin boş bir disk barındırır. Sanal bir disk gibidir.
/dev, /devices
Tum mantıksal cihazların(logical devices) toplandığı alandır. Bu cihazlar UNIX'de “device nodes” olarak adlandırılırlar ve “mkdnod” ile yaratılırlar. UNIX, cihazlara yazmak icin mantıksal cihazları kullanır. Ornek olarak “/dev/console” sistem konsoludur, “/dev/kmem” ise kernel memory'sini okumak icin vardır. Cihazlar da aynen dosyalar gibi davranırlar.
/home
Bazı sistemlerde /users olarak adlandırılır. Her kullanıcının bir giriş dizini vardır, bu dosyada kişisel dosyalarını saklar. Bu klasorler, sistem yoneticisi tarafından /home dizini altında alt dizinler olarak yaratılırlar
/var
Değişken karakterli dosyaların tutulduğu dizindir(spooling). System 5 ve karışık sistemlerde spooling icin farklı dizinler kullanılır. Eski BSD sisteminde /usr/spool kuuyrukları ve sistem datalarını tutar. /var/spool ve /var/adm dizinlerinde, kuyruklar ve sistem log dosyaları tutar.
/vmunix
UNIX kernel'ının kodlarının tutulduğu yerdir. HPUX sistemlerde bu dosya hp-ux'dur. linux'da ise linux olarak isimlendirimiştir.
/kernel
Yeni sistemlerde kernel birden fazla modul ile inşa edilir. Bu moduller bu dizinde tutulurlar.
Her UNIX klasoru iki adet sanal dizin icerir. “.” ve “..”
ls-a
. ..
“.” dizini bulunduğu dizindir. “..” ise bir ust seviyedeki dizindir. Bunlar gercek dizinlerin “hard link”'leridir. “.” C programcılığında cok kullanışlıdır. Program, bulunduğu dizine birşeyler yazmak icin sadece “.” kullanılabilir ve kullanıcı dizin adını değiştirmiş olsa bile program her zaman doğru yere yazacaktır.
Sembolik Bağlar (Symbolic Links)
Bir sembolik link başka bir dosyaya işaret eden bir dosyadır.
$ln -s gercek_dosya /diger_klasor/sembolik_bag
komutu, gercek_dosya'ya erişimi, hem bulunduğu yerden hem de /diger_klasor icerisinde erişilebilir kılacaktır. Sembolik bağ bir dosya olsa da diğer dosyalar uygulanan işlemler uygulanamaz fakat readlink() C fonksiyonu ile ici okunabilir. Eğer sembolik bağın işaret ettiği dosya silinirse, sembolik bağ hicbirşeye işaret etmeyecektir. Sembolik bağ silindiğinde, işaret ettiği dosya yerinde kalır.
Hard Link
Eğer bir dosya hard link ile bağlanmış ise, bağların hepsi silinmeden kendisi silinemez. Bir dosyaya kac tane hard link ile bağlandığını, dosya sistemi uzerindeki dosyanın index node'unda yazar.
UNIX
Sisteme Giriş
UNIX sistemine giriş yapabilmek icin bir kullanıcı adı ve şifresine ihtiyacınız vardır. Kullanıcı adı baze hesap adı olarak da adlandırılır cunku bazı UNIX sistemleri kaynakların kullanımı icin kesin bir kota belirler. Ve bu ucretlidir. Sisteme giriş yaptıktan sonra neler olacağı sistemden sisteme değişecektir. Karşınıza bir terminal de cıkabilir, bir pencere yoneticisi de.
Kendi sisteminiz dışındaki sistemlere de giriş yapabilirsiniz. Bunu Secure Shell(ssh) programını kullanarak yapabilirsiniz.(ssh, telnet ve rlogin'in yerini almıştır). Eğer bu programları kullanırsanız, bir text ya da komut satırına arabirimine gecersiniz.(daha sonra grafiksel arabirime de gecebilirsiniz)
Sisteme giriş yaptıktan sonra gunun mesajı ile karşılaşırsınız(motd=message of the day) ve karşınıza C-Shell kabuğu cıkar. Sonra giriş yaptığınız host'un adı belirir.
Başına gectiğiniz makineye giriş yapmakla network uzerindeki bir makineye giriş yapmak aynı şey değildir. Her UNIX sistem hem sunucu hem de istemcidir. Kısaca “peer” olarak adlandırılır. “peer” partner anlamı taşır.
Sisteme ilk kez giriş yapıyorsanız, ilk yapmanız gereken şey kendinize guvenli bir şifre secmek olmalıdır. Şifre secerken dikkat etmeniz gereken hususlar vardır. Oncelikle sadece herhangi bir dile mensup bir karakter kullanmayın.(Turkce karakter). Alttan cizgi, harf ve rakam kullanın. Eğer buyuk bir ağa bağlı bir makineniz yoksa basit bir şifre yeterli olacaktır.(orneğin “banana”). Fakat internet gibi bir ağa bağlıysanız şifrenizi secerken cok dikkatli davranmalısınız. “ino123” cok basit kalacaktır ve kırılması hic de zaman almayacaktır. Internette Bazılarının tek işinin şifre kırmak olduğunu unutmayın. Tahmin edilmesi zor birşey bulun, isminizin aralarına anlamlı sayılar yerleştirebilirsiniz. “i81n2o05” gibi.
Bazı siteler herhangi biryerden şifrenizi değiştirmenize izin verirler bazıları ise ozel bir makineye bağlanıp oradan değiştirmenizi isterler. Şifrenizi değiştirmek icin “passwd” komutunu kullanırsınız.
[email protected]:/> passwd
Changing password for ino.
Old Password:
New password:
Re-enter new password:
Password changed.
[email protected]:/>
passwd, once sizden eski şifrenizi yazmanızı ister. Sonra yeni şifrenizi girersiniz, sonra yeni şifrenizi tekrar yazmanızı ister. Eğer network'unuz devasa ise guncelleme işlemi bir ya da iki saat surebilir.
Mouse Butonları
UNIX'in uc tane mouse butonu vardır. sol,orta ve sağ. Ama mouse'unuzun orta duğmesi olmayabilir. Bu durumda sol ve sağ butona aynı anda tıklayarak orta mouse butonun yaptığı fonksiyonu yaptırtabilirsiniz.
UNIX'de mail okumak diğer sistemlerde mail okumaya benzer ama bunu sağlayan birden fazla program vardır. Mesela cok eski olan “mail”. Ya da tamamen grafiksel olan tkrat,mailtool,evolution.
Basit Komutlar
Tecrubesiz bilgisayar kullanıcıları genelde dosya-yonetici programlarını kullanırlar ve komut yazmaktan kacınırlar. Daha tecrubeli kullanıcılar ise bu yontemi hem yavaş hem de sıkıcı bulurlar. Bunun yerine komutları kullanırlar. Komut yazımı mouse kullanmaktan daha hızlıdır.
Eğer Windows ortamından geliyorsanız, UNIX komutları biraz yabancı gelebilir. Bu, farklı bir duşunme tarzıdır: dili, Menuleri tıklayıp sınırlı secenekleri kullanmak icin değil, tam olarak ne istediğinizi sormak icin kullanırsınız. Bu dil aynı zamanda biraz yabancıdır. Cunku bu dil klavyeye cekic gucuyle vurulan bir cağdan gelmiştir ve o zamanlar makineler cok yavaştı, komutlar mumkun olduğu kadar kısa tutuluyordu, boylelikle biraz gizemli gorunurler. DOS bazı komutlarını UNIX'den odunc almıştır. Dizin değiştirmek icin kullanılan “cd” ve dizin oluşturmak icin kullanılan “mkdir” gibi.
Mevcut dizin icerisindeki dosyaları listelemek icin “ls”, bir dosyayı tekrar adlandırmak icin “mv” kullanılır.
Metin Duzenleme ve Kelime İşlem
Metin duzenlemek, insanların bilgisayarın başında en cok zamanını alan işlerdendir. Kelime işlem ile metin duzenlemeyi birbirinden farklıdır. “lyx” ve bir cok Office klonu(Star Office) UNIX'in Word'e benzeyen programlarıdır. UNIX kullanıcıları genelde kelime işlemcileri kullanmazlar. UNIX birliğinde genelde tum dokumanlar bicimlendirme ozelliği olmayan editorlerde yazılırlar. Dokuman bir kez yazıldığında bir bicimlendirici cağrılır. Bu iki aşamalı sistem biraz yabancı gibi gorunse de gercekte size guc ve esneklik sağlar. Bu UNIX'in kulturunun bir parcasıdır. Program ya da herhangi birşey yazımı icin emacs kullanılılabilir. emacs, yuzlerce text-editorlerinden sadece bir tanesidir. En basiti ya da en sezgisel olanı değildir. Ama sistemde varolan en guclu editordur. emacs bir kelime işlemci değildir. Bir programlama dili ve akıllı ozellikleri bulunur. UNIX'de Metin bicimlendirme işlemleri farklı yollarla yapılır. Bicimlendirme; troff, Tex, Latex gibi programlar tarafından yapılır.
LOGIN ORTAMI
Kabuklar(Shells)
Kullanıcı sisteme giriş yaptıktan sonra bir shell icerisinde bulur kendini. Birden fazla shell versiyonu olduğu icin kullanıcı favori shell yorumlayıcısını secebilir. Giriş shell'i password veritabanı icerisinde kullanıcının kaydında belirtilir. Aşağıda, ino kullanıcısı icin varsayılan shell gorunmektedir.
ino:x:1000:100:inan ecevit:/home/ino:/bin/bash
Coğunlukla sistemlerde standart login shell olarak C-shell kullanılmaktadır.
Kabukların Yetenekleri ve Komutları:
Programları başlatabilir veya sonlandırabilir.
İki surecin pipe aracılığıyla iletişime gecmesini sağlayabilir.
Kullanıcılara input ve output'u yonlendirme fırsatı verir.
Tek satır komut duzenleme olanağını verir ve komut gecmişini tutar.
Sıkca kullanılan komutlar icin takma adlar tanımlar
Programların kullanımına sunmak icin global ortam değişkenlerini tutar. Bu değişkenler her proses icin asosyatif bir dizi icerisinde saklanır. Shell'den env komutu ile goruntulenebilir.
Dosyalar icin Wild Card Expensansion (joker notasyonu) sunarlar. *,?,[] gibi.
Basit bir script dili sunarlar. Dongulu, kontrol mekanizmalı olduğu icin sistemi kombine edebilecek vasıfta programlar yazılabilir.
Dosya sistemi uzerinde dolaşabilir ve bulunduğu dizini unutmaz
Shell daha fazla spesifik fonksiyonlara sahip değildir. Geriye kalan herşey diğer programlar tarafından gercekleştirilir. Orneğin ls komutunun duzgun calışabilmesi icin programın kullanıcının hangi dizinde olduğunu bilmelidir. Bu bilgi Shell ortam değişkenlerinden birisi olan PWD değişkeninde saklanır. ls once buraya bakar. Başlatılan her shellin setup dosyası duzenlenerek ozelleştirilebilir. Bash icin bu dosya .bashrc C-shell icin de .profile. (başlarındaki nokta onların gorunmez dosya olduğunu simgeler. ls ile gorunebilmeleri icin parametre olarak -a verilmediri. ls -a) Bu dosyalara yazılanları, shell ilk komutunu icra etmeden once yorumlar. Bu dosyalar tipik olarak komut arama yolu ve terminal karakterlerini tanımlak icin kullanılır.
Her yeni komut satırında ok tuşları ile komutları duzenleyebilirsiniz. Yukarı tuşu, bir once yazılan komutu getirir, aşağı tuşu da tam tersini yapar. CTRL-a, komut satırının başına doner, CTRL-e de sona. TAB tuşu da komut tamamlar.
Genel Shell Komutları
Shell komutları, cp, mv, passwd, cat, more, less, cc, grep, ps gibi komutlardır. UNIX'de bir işi yapmak icin bir cok yol vardır. Bir cok standartın olmasının yanında bu standartlardan hangisini sececeğiniz size kalmıştır. UNIX'in iki tane temel shell'i vardır. Bunlar Bourne Shell(sh) ve C-shell(csh)'dir. Bunların modernt implementasyonları Bourne Again Shell(bash) ve T-C Shell(tcsh)'dir. Cok az bir miktardaki komutlar shell'e ozgudur. Bu bakımdan DOS'a benzemez. Shell'de bir komut yazdığınızda, shell aynı isimdeki calıştırılabilir programı arar ve icra etmeye calışır. Bu acıdan oldukca esnek bir yapısı vardır. Kullanıcı kendi programlarını yazabilir ve sistem komut dilini geliştirebilir. Yazlan programın calıştırılabilir olarak duzenlenmesi gerekir aksi taktirde komut bulunamadı hatasını alırsınız. gcc'yi calıştırdığınızda aslında neler olduğunu gormek icin Bourne Shell'de şunları yazın:
IFS=:
for dir in $PATH # yol listesindeki tum dizinler
>do
> if [ -x $dir/gcc ] # Dosya calıştırılabilir mi?
> then
> echo Found $dir/gcc # Buldum mesajını goster.
> break # donguden cık
> else
> echo Searching $dir/gcc
> fi
>done
Eğe C-shell kullanıyorsanız:
foreach dir ( $path ) # yol listesindeki tum dizinler
> if ( -x $dir/gcc ) then # dosya calıştırılabilir mi?
> echo Found $dir/gcc # buldum mesajını goruntule
> break # donguden cık
> else
> echo Searching $dir/gcc
> endif
> end
Benim makinemdeki cıktısı şu bicimdeydi
Searching /usr/kerberos/bin/gcc
Searching /usr/local/bin/gcc
Found /usr/bin/gcc
[[email protected] perl]$
“echo $PATH” ya da C-shell'de “echo $path” yazdığınızda shell tarafından taranan bir dizin listesi karşınıza cıkacatır. Eğer kod icerisindeki “break”'i koymasaydık, UNIX'in aynı isimde birden fazla programa sahip olduğunu gorurduk.
/bin/mail
/usr/ucb/mail
/bin/mail
/bin/make
/usr/local/bin/make
Aynız zamanda farklı UNIX versiyonlarında bu komutların yerleşim yerleri farklı yerlerdedir. Yani path listeleri UNIX'den UNIX'e farklılıklar gosterecektir. Bash'de bazı komutlar DOS'daki gibi bash'e ozgudur(cd,kill). Hangi komutun hangi dizinde olduğunu oğrenmek icin “type” komutunu kullanabilirsiniz(ya da whereis). Orneğin kill komutunun nerede olduğunu oğrenmek icin:
$type kill
kill is a shell builtin
ya da gcc komutunun nerede olduğunu oğrenmek
$type gcc
gcc is /usr/bin/gcc
type sadece $PATH icerisindeki dizineri arar ilk bulduktan sonra da cıkar. Yani eğer birden fazla aynı isme sahip program varsa, bunlardan sadece ilk cıkanı gosterecektir. Son olarak type'a eşdeğer komut C-shell'de “which”'dir. which, C-shell'de builtin olmasının yanında Bash'de bir programdır.
ino$ type which
which is /usr/bin/which
ino$ tcsh
ino% which which
which: shell built-in command.
Eğer “/usr/bin/which” komutunu incelerseniz, bash'de yazılmış bir script olduğunu gorursunuz.
Shell ve Ortam Değişkenler(Environment Variables, Shell Variables)
Ortam değişkenleri shell tarafından saklanır. Bunlar gebelde bir yardımcı programın konfigurasyonu icin kullanılır.(ornek “lpr”, yazıcıya bir dosyayı gondermek icin ya da “mail”). Boylelikle bu programları calıştırırken ozel bir secenek belirtmenize gerek kalmaz.
Herhangi bir program bu değişkenleri okuyabilir ve calışma ortamının nasıl konfigure edildiğini oğrenebilir. İşte bazı ortam değişkenleri:
PATH #bash'de komut arama dizinlerini icerir.
TERM # Terminal tipini tutar(bash ve csh)
DISPLAY # X11- goruntu adını tutar
LD_LIBRARY_PATH # Objelerin ve paylaşımlı kutuphanelerin yolunt tutar.(object and shared libraries)
HOSTNAME # UNIX hostunun ismini tutar.
PRINTER # Varsayılan printer'ı tutar(lpr)
HOME #bash'de kullancının ev dizinini tutar
PS1 # bash icin varsayılan promt'u tutar
path # csh'deki komut arama dizinlerini icerir.
term # terminal tipi(csh)
promt #varsayılan promt(csh)
home #kullanıcının ev dizini(csh)
Ortam değişkenleri iki grupta toplanır. Geleneksel olarak ilk grupra isimler buyuk harflidir ve Ortam Değişkenleri(Ernvironment Variable) olarak adlandırılırlar. Bunun yanında ikinci gruptakiler kucuk harfle yazılırlar ve Shell Değişkenleri(shell variables) olarak adlandırılırlar. Buyuk harfliler global, kucuk harfliler de yerel(local) değişkenlerdir.(Sadece bunlar konvansiyoneldir.) Yerel değikenler, alt shell'ler ya da programlar tarafından tanımlı değillerdir, fakat global değişkenler tum shell'ler icin tanımlıdır.
Herzaman gecerli olmamakla birlikte bash ve c-shell bu konvansiyonları kullanırlar. “env” komutu bash'de kullanılarak tum global değişkenleri goruntuler, set ise hem global hem de yerel değişkenleri listeler.
Vahşi Kartlar(Wildcards)
Bazen tek hamlede bir kactane dosyaya birden referans verilmesi gerekir. Orneğin .c uzantılı tum dosyaları bir klasorun icerisine kopyalamak isteyebilirsiniz. Bunun icin wildcard kullanırsınız. Wildkardlar'lar * ? gibi karakterlerdir ve bir grup karakteri temsil ederler. Misal olarak iskambildeki joker bir wild card'dır ve hernagi bir kart yerine kullanılabilir. Aynı zamanda UNIX dokumanlarında wildcardlar, filename substitioun olarak adlandırılır.
`?'
Tek bir karakteri temsil eder. or. ls /etc/rc.????
`*'
Herhangi bir sayıdaki karakterleri temsil eder. or. ls /etc/rc.*
`[...]'
Koşeli parantez icierisindeki herhangi bir karakterler eşleşir. o.r. ls [abc].C
Ornekler
`/etc/rc.????'
/etc dizini icerisindeki ilk uc karakteri rc. olan ve 7 karakter boyutunda olan her dosyayla eşleşir
`*.c'
Uzantısı .c olan her dosyayla eşleşir
`*.[Cc]'
Uzantısı .c ya da C olan her dosyayla eşleşir.
`*.[a-z]'
Uzantısı a'dan z'ye kadar olan tum dosylarlar eşleşir.
Wildcardları acanın aslında shell olduğunu anlamak onemlidir. Bir komut yazdığınızda programa gonderdiğiniz parametreker aslında * ya da ? olarak gitmez. Shell bunları acar sonra programı calıştırır. Program asla wildcard'ları gormez.
echo /etc/rc*
komutunun cıktısı:
/etc/rc0 /etc/rc0.d /etc/rc1 /etc/rc1.d /etc/rc2 /etc/rc2.d /etc/rc3
/etc/rc3.d /etc/rc5 /etc/rc6 /etc/rcS /etc/rcS.d
Butun komut satırları bu form cercevesinde calışır. Birden fazla dosya isimlendirilmesi yapamazsınız.
UNIX'de dosyalar “mv” komutu ile yeniden isimlendirilirler. Bir cok işletim sisteminde,
rename *.x *.y
yazarak uzantısı .x olan tum dosyaları .y uzantısı olarak değiştirebilirsiniz. UNIX'de bu calışamaz, cunku shell parametreleri programa gondermen once wildcardları acar.
Duzenli İfadeler (Regular Expressions)
Wildcard'lar shell'e aittir. Onlar dosya isim eşleştirmeleri icin kullanılır. UNIX'in stringleri eşleştirmek icin daha genel ve geniş capta kullanılan bir mekanizması vardır,”Regular Expressions”(Duzenli ifadeler). Duzenli ifadeler “egrep” yardımcı programı ile kullanılır. ed, vi, emacs ve sed ve awk. Gibi editorleri. Bunlar aynı zamanda C dilinde de kullanulmaktadır aynı zamanda perl dilinde ve lex tokenizerinde. Egrep kullanımına ilişkin ornekler aşağıda verilmiştir.
Shell'in acılım yapmaması icin, ! * ve & gibi ozel katakterler ile başlamalıdır.
#Dosya icerisinde # karakteriyle başlayan tum satırları goster.
egrep '(^#)' /etc/rc
# “#” karakteriyle başlamayan tum satırları goster.
egrep '(^[^#])' /etc/rc
# e,f ya da g ile başlayan tum satırları goster.
egrep '(^[efg])' /etc/rc
#Buyuk harfle başlayan tum satırları goster
egrep '(^[A-Z])' /etc/rc
# Buyuk harfle başlamayan tum satırları goster
egrep '(^[^A-Z])' /etc/rc
# ! * & barındıran tum satırları goster
egrep '([!*&])' /etc/rc
# ! * & karakterlerini iceren ama # karakterini icermeyen tum satırları goster
egrep '([^#][!*&])' /etc/rc
Duzenli ifadeler aşağıda belirtilen atomlardan meydana gelir.
`.'
Satırda, satır sonu karakteri dışındaki herhangi bir karakter ile eşleşir.
`^'
Satırın ilk karakteri ile eşleşir
`$'
Satır sonu karakteri ile eşleşir.
`[..]'
Koşeli parantez icerisindeki herhangi bir karakter ile eşleşir.
`*'
Onundeki ifadeden sıfır ya da daha fazlası vardır.
`+'
Onundeki ifadeden bir ya da daha fazlası vardır.
'?'
Onundeki ifadeden sıfır ya da bir tane vardır.
UNIX man sayfalarında tum listeyi bulabilirsiniz. Yukarıdaki koşeli parantezler eşleştirilecek bir karakter sınıfını temsil ederler.
Ornekler
Eğer koşeli parantez icerisinde bir karakter listesi varsa $[a-z156]$, karakterlerden birisinin eşleşmesi yeterlidir. Burada herhangi kucuk harfli bir karakter ya da 1,5,6 karakterleri temsil eden bir ifade vardır.
Eğer koşeli parantez icerisindeki ilk karakter ^ ise listede belirtilenlerin dışındaki karakterle eşleşen bir ifade sozkonusudur.
Normalde, - işareti bir karakter aralığı belirtir. aralık belirtir. Eğer [ dan ya da [^ dan sonra gelirse bir aralık belirtmez, - karakteri olarak davranır.
İcice gecmiş shell komutları ve ´´
Ters apostrof her shell'de ve Perl dilinde kullanılabilir. Bir string icerisinde gectiğinde; shell, arasındaki komutu icra etmeye calışır ve komut cıktısını yine aynı tırnak icerisine yerleştirir.
Ornek:
[[email protected] ino]$ echo "Merhaba `hostname`"
Merhaba linux
ino$ for file in `ls /local/ssl/misc/*`
> do
> echo I found a config file $file
> echo Its type is `/usr/bin/file $file`
> done
I found a config file /local/ssl/misc/CA.pl
Its type is /local/ssl/misc/CA.pl: perl script text
I found a config file /local/ssl/misc/CA.sh
Its type is /local/ssl/misc/CA.sh: Bourne shell script text
I found a config file /local/ssl/misc/c_hash
Its type is /local/ssl/misc/c_hash: Bourne shell script text
I found a config file /local/ssl/misc/c_info
Its type is /local/ssl/misc/c_info: Bourne shell script text
I found a config file /local/ssl/misc/c_issuer
Its type is /local/ssl/misc/c_issuer: Bourne shell script text
I found a config file /local/ssl/misc/c_name
Its type is /local/ssl/misc/c_name: Bourne shell script text
I found a config file /local/ssl/misc/der_chop
Its type is /local/ssl/misc/der_chop: perl script text
UNIX KOMUTLARI
Onemli Tuşlar
TAB
Emacs'da ve bash'de kullanılır ve dosya adını tamamlar. Bu sayede tam ismini hatırlayamadığınız bir dosya ya da dizin olduğunda ilk bir kac harfini yazıp bastığınızda sizin yerinize tamamlar ya da birden fazla eşleme bulursa listeler.
ino$ load+TAB
loadkeys loadmeter loadunimap
CTRL-A
Satır başına gider.
CTRL-C
Uygulamaya 15 sinyalini gondererek sonlandırır.
CTRL-D
EOF(end of file) ekler.
CTRL-E
Son satıra gider.
CTRL-L
Emacs'da ve daha yeni shell'erde ekranı siler. clear ile eşdeğerdir.
CTRL-Z
Uygulamayı dondurur ama yok etmez. Surece 18 sinyalini gonderir.
Alternatif Sheller
bash
The Bourne Again shell, sh'nin geliştirilmiş halidir.
csh
Standard C-shell.
jsh
sh ile aynıdır ama C-shell stili iş kontolu vardır
ksh
The Korn shell. gelişmiş bir sh.
sh
Orijinal Bourne shell.
sh5
ULTRIX sistemlerde standard Bourne shell'dir Ve oldukca aptalcadır. sh5 normal Bourne shelldir bu sistemlerde..
tcsh
Gelişmiş C-shell.
zsh
Gelişmiş sh.
Pencere Tabanlı Terminal Emulatorleri
xterm
Standard X11 terminal penceresidir.
shelltool, cmdtool
Sun Microsystem tarafından geliştirilimiş Acık pencere terminalleridir. Kopyala yapıştır işlemlerinde X11 pencereleriyle tam uyumlu değildir.
screen
Aslında bir pencere değildir, fakat diğer terminal pencerelerini icinde bulundurur. Kullanıcı bir terminalden diğerine gecebilirler ama aynı anda yalnız bir pencere aktif halde olabilir.
Uzak Shell'ler ve Loginler
Başka bir sisteme giriş yapmanın en iyi yolu ssh kullanmaktır.
rlogin
Uzaktaki bir sisteme giriş yapar.
rsh
Open a shell on a remote system (require access rights).
Diğer sistem uzerinde bir shell acar.(Giriş hakları gereklidir)
telnet
telnet protokolunu kullanarak diğer bir sisteme giriş yapar.
Bu eski komutlar guvensiz olmasının yanında esnektirler de. Ssh(Secure Shell) şifreleme ve guclu bir kimlik denetimi ve daha fazla fonksiyonellik sunarlar. Diğer makinedeki bir programı calıştırabilir ya da uzaktaki makineye bağlanabilir.
ino$ ssh metaverse date
ino$ ssh metaverse
Metin Editorleri
ed
Eski bir satır editorudur.
vi
ed'in gorsel versiyonudur. Bu UNIX icin standart metin editorudur.
emacs
UNIX'in en guclu editorudur. Tamamıyla ozelleştirilebilir, programlanabilir ve X111 altında calışabilir ve herhangi bir tty terminalinde calışabilir.
xemacs
emacs'ın şirin bir X11'de calışan versiyonudur.
pico
Sadece tty terminalinde calışan bir editordur. PINE mail paketinin bir parcası olarak gelir.
xedit
X Window tarafından sunulan bir editordur.
textedit
Sadece X11'de calışan Sun Microsystems tarafından geliştirilmiş bir editordur.
Dosya İşlem Komutları
ls
Belirtilen dizindeki dosyaları listeler. (diğer sistemlerdeki dir komutu gibidir)
cp
Dosyaları kopyalar .
mv
Dosyaları taşır veya yeniden isimlendirir.
touch
Boş bir dosya yaratır. Zaten dosya varsa guncelleme tarihini değiştirir.
rm, unlink
Dosyayı siler. Link'ini siler.
mkdir, rmdir
Dizin yaratır. İci boş olan dizini siler.
cat
Dosyaları birleştirir ya da birbirine ekler. Varsayılan olarak cıkış, stantart cıkışa yazılır. Ya da dosyanın iceriğini ekranda goruntulemek icin kullanılır.
lp, lpr
Satır yazıcısı. Bir dosyayı varsayılan yazıcıya gonderir ya da ortam değişkenlerinde PRINTER olarak belirtilmiş yazıcıya gonderir.
lpq, lpstat
yazıcı kuyruğu durumunu gosterir.
Dosyaları Dolaşma
more
Shows one screen full at a time. Possibility to search for a string and edit the file. This is like
Dosyaları ekrana sığacak kadar gosterir. Dosya icerisindeki bir stringi aramak icin uygun ortam sağlar. DOS'daki `type file | more' komutuna benzer.
less
more komutunun gelişmiş halidir.
mc
Midnight commander. Ucretsiz Norton Commander versiyonudur. (Ciddi olmayan UNIX kullanıcılar icindir.)

kfm
Iconlu menulu bir X11 dosya tarama programıdır.
İyelik ve Erişim Hakları
chmod
Dosyanın erişim haklaını duzenler.
chown, chgrp
Dosyanın grup ya da sahip iyeliğini değiştirir. chown'un GNU versiyonu her ikisini birden yapar.
acl
Access control lists. Daha yeni UNIX'lerde gruplar yerine her bir kullanıcı icin olan erişim haklarını duzenler.
Dosyalardan Alma ve Yeniden İnşa Etme
cut
tablodan bir sutun ceker
paste
Birden fazla dosyayı birleştirir ve boylelikle dosya tablo icerisinde bir sutuna donuşur.
sed
Metin icerisinde tarama, değiştirme, secme işlemleri gercekleştirir.
awk
Metinlerden bilgi cekme ve mofiye etmeye yarar.
rmcr
Metin icerisindeki (ASCII 13) karakterlerini cıkarırı. DOS dosyalarını UNIX dosyalarına cevirmek icin kullanışlıdır.
Dosyaları Bulma
find
Ceşitli kriterler kullanarak bir dizin icerisindeki dosyaları arar.
locate
Global veritabanında yer alan dosyaları hızla arar.
whereis
Komutun ve dokumanının nerede olduğunu gosterir.
Disk Kullanımı
du
Dosya ya da dizinlerin kullandığı block sayısını gosterir
df
Disk bolutlerinin kullanım durumlarını gosterir.
Bağlı Diğer Kullanıcların Goruntulenmesi
users
Kullanıcılar listesini gosterir.
finger
Bu sisteme ve diğerlerine kimlerin bağlı olduğunu gosterir.
who
Bu sisteme kimlerin bağlı olduğunu goruntuler.
w
Bu sisteme kimlerin bağlı olduğunu ve neler yaptığını gosteren uzun bir liste cıkarır.
Diğer Kullanıcılara Bağlanma
write
Ismi verilmiş kullanıcıya basit bir mesaj gonderir. CTRL-D ile sonlanır. “mesg n” gelen mesajları kapatır.
talk
İsmi verilmiş kullanıcıyla, interakif iki yonlu bir sohbet acar.
irc
Internet relay chat. Gercek zamanlı, cok kullanıcılı bir konferans goruşme acar. Bağımlılar ve başarısızlar icindir.
Mail Gondericileri Ve Okuyucuları
Eski ve standart mail programı
Bir başka mail programı
elm
Electronic Mail program. Cok fonksiyonlu olmasının dışında multimedia desteği zayıf.
pine
Dedikodulara gore, Pine demek Pine is Not Elm demekmiş. Aslında Pine 'nın anlamı yoktur. Gelişmiş multimedya desteği olmasına karşın oldukca yavaş ve bazen aptal.elm'in en iyi ozelliklerini almamışlardır.
mailtool
Sun'ın acık pencere mail programıdır.
rmail
Emacs ile entegre bir mail programıdır.
netscape mail
Netscape ile entegre bir mail programı.
zmail
Ticari mail paketi.
tkrat
Grafiksel arayuzlu bir mail okuyucudur. Bir cok MIME tiplerini destekler. tcl/tk ile yazılmıştır. Taranabilir bir veritabanı sayesinde eski mesajlarda arama olanağı sunar. Yalnız umitisiz bir kilitleme mekanizması vardır.
Dosya Transferi
ftp
File Transfer program – uzaktaki hosta dosya gonderir veya alır.
ncftp
Anonim giriş icin kullanılan gelişmiş bir ftp versiyonudur.
Derleyiciler(Compilers)
cc
C Compiler.
CC
C++ compiler.
gcc
GNU C compiler.
g++
GNU C++ compiler.
javac
java byte code yaratıcısı.
java
Java Virtual Machine.
ld
system linker/loader.
ar
Archive library builder.
dbx
symbolic debugger.
gdb
GNU symbolic debugger.
xxgdb
Grafiksel GNU debugger
ddd
motif temelli grafiksel gdb debugger.
Diğer Yorumlayıcı(Interpreter) Diller
perl
Practical extraction an report language.
tcl
Perl'e benzer bir dildir. Yalnız kullanıcı arabirimi oluşturmak ve shell komutları icin ozel bir destek sağlar
php
Personal Home Page Tools (resmi: "PHP: Hypertext Preprocessor"). Sunucu tabanlı, HTML'e gomulebilen bir script dili.
scheme
lisp'e benzer genişletilebilir scrip dili. GNU.
mercury
Yapay zeka icin prolog'a benzer bir dil
Surecler ve Sistem İstatistiği
ps
Sistem proses tablosunu listeler.
vmstat
kernel virtual-memory istatistiklerini listeler.
netstat
Network bağlantılarını ve istatistiklerini listeler.
rpcinfo
rpc bilgisini goruntuler.
showmount
Yerel dosya sistemine bağlanmış istemcileri listeler.
Sistem Kimliği
uname
Sistem adını ve işletim sistemini gosterir.
hostname
Hostun adını verir.
domainname
Yerel NIS domain adını verir. Normalde, bu BIND/DNS ile aynı secilir. Ama gerekli değildir.
nslookup
DNS/BIND isim servislerini sorguya ceker. (host adı, IP addres donuşumu).
Internet Kaynakları
archie, xarchie
Internet ftp veritabanında dosyaları arar.
xrn, fnews
Haberleri okur (tarayıcılar).
netscape, xmosaic
Gercek world wide web (WWW) (tarayıcı).
Metin Formatlama Ve postscript
tex, latex
Donald Knuth'un text formatlama dilidir. "tek" diye okunur (x Yunancada gercekte"ki"'dir). Teknik alanda geniş capta kullanılır. dvi (device independent)'a dosya formatına derleme yapar.
texinfo
hypertext documentasyon sistemidir. tex' i ve "info" formatını kullanır. Bu, GNU dokumantasyon sistemidir. Bu UNIX rehberi texinfo icerisinde yazılmıştır.(Orijinali,cevirisi değil)
xdvi
Ekranda tex dvi'i gosterir.
dvips
dvi formatını postscript'e donuşturur.
ghostview, ghostscript
postcript dosyasını ekranda goruntuler.
Resim Editorleri ve İşlemcileri
xv
Resim dosyalarını bir cok formatta duzenler. (gif, jpg, tiff etc). xv -quit kullanarak root pencereye bir resim yerleştirilebilir.
xpaint
Basit bir boyama programı
xfig
Cizgi cekici figur editoru. postscript, tex, ve bir cok diğer cıktı formatında kaydedebilir.
xmgr
Grafiksel analiz programı.
xsetroot
bir X-bitmap imajını ekranın arka planına yerleştirir. (root window) . Kucuk imajlar doşenir.
Ceşitli
date
Tarih ve zamanı goruntuler.
ispell
Heceleme denetleyicisi.
xcalc
Grafiksel hesap makinesi.
dc,bc
Metin tabanlı hesap makineleri.
xclock
Bir saat!
ping
bir "sonar" ping gonderir diğer UNIX host'u hayatta mı diye.
TERMİNALLER
Bir kullanıcı ile etkileşime gecebilmek icin, shell'in terminalde erişim haklarına sahip olması gerekir. UNIX, cok farklı terminallerle calışabilecek duzeyde tasarlanmıştır. UNIX'de I/O komutları sanal bir terminale yazar ve okur.Gercekte bir terminal metin tabanlı bir Teletype terminal olmalıdır.(tty olarak adlandırılır) ya da grafik tabanlı olmalıdır. 80 karakter genişliğinde yada daha geniş ya da dar olabilir.
UNIX, bu olasılıkları fazla ya da az nesne eğilimli bir yolla, birden fazla terminal orneklemi(instance) tanımlayarak cozer.
Her kullanıcı terminali, kursor tabanlı I/O doğruca calışmadan once ayarlanmalıdır. Normalde bu iş, sistemdeki standart terminal tiplerinden birisi secilerek yapılır. Pratikte kullanıcı TERM Ortam Değişkenine(Evironment Variable) bir değer tanımlar. Tipik bir ornek olarak “vt100” ve “xterm”. Eğer standart bir kurulum bulunmazsa, terminal gizemli UNIX komutlarıyla(stty) her zaman elle duzenlenbilir.
Donanımlar standartlaştığı icin şimdilerde terminalleri konfigure etmek cok daha kolaydır. Kullanıcı terminalleri sistem yoneticileri tarafından duzenlenirler ve cok nadir olarak kimse “vt100” ya da “xterm” dışında birşeyler secer.
X PENCERE SİSTEMİ(X-Window System)
UNIX pencereleme teknolojisi henuz cıkmadan once geliştirildiği icin kullanıcı arabirimi pencereleme duşunulerek tasarlanmamıştır. X pencere sistemi sanal bir parkı andırır, her programı farklı bir pencere olarak başlatmak gibi. Programlar tek bir ekranda gorunmesine rağmen; yalnız program cıktısı yerel kullanıcıya gorunur kılınmakla birlikte, program dunyanın herhangi bir yerinde olabilir. X icin standart grafiksel UNIX metinvari terminali xterm olarak adlandırılır.
Xterm programı X grafiksel kullanıcı arabirimini(GUI, Graphical User Interface) kullanan sanal bir terminaldir. Aynen tty terminali gibi calışır ve grafiksel bir ozellik olan kopyala yapıştırı destekler. Birden fazla shell aynı ekranda acılabilir. Orneğin aynı ekranda bir yandan “rlogin” kullanarak hem uzaktaki bir sisteme bağlı olabilir diğer yandan da kendi yerel makinesinde calışabilir.
X Pencere Sisteminin Komponentleri
X11 sistemi istemci/sunucu modelini temel almıştır. Aslında network icin kullanılan bu modeli neden aldığını merak ediyor olabilirsiniz. Cevap acıktır.
X pencere sistemi tasarımcıları, network iletişiminin sonraki nesil bilgisayar sistemleri icin bir paradigma olacağını duşunmuşlerdir. Pencere sistemini tasarlarken, bir kullanıcının Massachusetts'de bir terminal başında otururken, Tokyo'daki bir makinede calışabilmesini istemişlerdir.(Hic goruntu kalitesi kaybetmeden) X sistemi, en başından itibaren dağıtılabilir bir pencere ortamı olarak duşunulmuştur.
Bir arkadaşımın HP iş istasyonuna bağlanıp bir metin editoru kullanmak istiyorum.(Cunku kendiminki hoşuma gitmiyor) Programın benim makinemde, benim klavyem ile (benim klavyem başka bir firma tarafından yapılmış olsa bile) dosdoğru calışmasını istiyorum. HP'deki video sistemi benimkinden farklı olmasına karşın renklerin de duzgun cıkmasını istiyorum. Kırlangıc(“{“) tuşuna bastığımda hiyeroglif bir karakter değil gercek bir “{“ istiyorum. Cunku HP farklı bir klavye kullanıyor.
Bunlar X'in uzerinde durduğu problemlerdendir. Bir network icerisinde herhangi bir donanımda calışan ortak bir pencere sistemine ihtiyacımız vardır ve bu sistem makineler arasındaki farkları mumkun olduğu kadar gizleyebilmelidir.Fakat bu, istediğimiz zaman istediğimiz yeri değiştirebilecek kadar esneklik sunmaz(gercek renklerimizi secebilme, pencere kenarlarının stilini değiştirebilme gibi) Diğer pencereleme sistemleri(MS Windows gibi) bu problemleri gozardı eder ve kullanıcıya yalnız urettiği urunu verir ve yalnız bir işletim sistemi verir(ve elbette bu kazara değildir).
X, bu problemi, istemci/sunucu(client/server) modeliyle cozer. Bir kullanıcı ekranındaki herhangi bir program(nereden cağırılırsa cağırılısın) bir X Window servisidir(X window service) kullanıcı ekranına birşeyler cizilmek istendiğinde, istemci bunu sunucudan ister. Aslında hicbir istemci kendi başına birşey cizmez, sunucudan ister. Bunun bir cok nedeni vardır.
İstemciler genel pencere diliyle konuşabilirler ya da protokol ile. Donanımsal farkları ortadan kaldırarak cizim işlemlerini makine-bağımsız hale gelebilir. Yeni bir donanım tipi cıktığında sadece sunucuyu değiştirebilir ve hic bir istemcide bir değişiklik yapılmak zorunda kalınmaz
Farklı sunuculara bağlanabilir ve cıktıları farklı donanımlara gonderebiliriz. Tokyodaki bir makinenin CPU'sunda calışan bir program Massachusetts'deki sunucudan pencereyi onun icin cizmesini isteyebilir.
Kullanıcı ekranında birden fazla pencere olduğunda, bazıları onde bazıları arkada ve farklı konumlarda olacaktır. Eğer tum bu bilgiler sunucu uzerinde tutulmaya calışılsaydı bu servis calışamaz hale gelirdi kuşkusuz. Eğrer her kullanıcı pencereleri istediği yere cizebiliyor olsaydı, hangi pencerenin hani konumda olduğunu bilmek imkansız hale gelirdi.
X'de grafik cizen pencere yoneticileri farklı programlardır. Yalnız, istemci/sunucu fikri halen devam etmektedir bunlar icin. Bu sadece bulmacaya bir parca daha eklemek gibi birşeydir.
X'i Yapılandırma
X window sistemi buyuk ve komplekstir ve kullanıcı dostu değildir. Sisteme login olduğunuzda, X iki adet dosyayı ev dizininizden okur. Bu dosyalarda hangi uygulamaların calışacağı ve nasıl goruneceğini tutan dosyalardır.
.Xsession
Bu dosya, bir shell scriptidir ve bir cok uygulamayı arka plan surecleri olarak calıştırır ve pencere yoneticilerinin cağrımına acar.
ornek.
#!/bin/bash
#
# .xsession file
#
#
PATH="/usr/bin:/bin:/local/gnu/bin:/usr/X11R6/bin"
#
# List applications here, with & at the end
# so they run in the background
#
xterm -T NewTitle -sl 1000 -geometry 90x45+16+150 -sb &
xclock &
xbiff -geometry 80x80+510+0 &
netscape -iconic&
# Start a window manager. Exec replaces this script with
# the fvwm process, so that it doesn't exist as a separate
# (useless) process.
exec /local/bin/fvwm
.Xdefaults
Bu dosya, X programlarının kullandığı tum kaynakları tutar. Bu, uygulamalar tarafından kullanılan renkleri veya yazı tipleri gibi ozellikleri değiştirmek icin kullanılabilir. X-resources konusu oldukca buyuktur ve burada bunu anlatmaya vaktminiz yoktur. Aşağıdaki ornekte, xterm ve emacs pencerelerinin daha az gri golgeli hale getiriyoruz
xterm*background: LightGrey
Emacs*background: grey92
Xemacs*background: grey92
X goruntuleri ve authority
X11 terminolojisinde her istemci program bir pencere acabilmek icin goruntuye bağlı olmalıdır. Bir goruntu, X sunucu tarafından tarafından host uzerinde yaratılmış sanal bir ekrandır. X host uzerinde bir cok ayrık goruntu yaratabilir, buna karşı bir cok makinede bir tanedir. Bir X istemvisi bir pencere acmak istediğinde, X'e bağlı hostun ip adresini oğrenmek icin UNIX DISPLAY ortam değişkenine bakar.
Orneğin aşağıdakileri yazarsak:
DISPLAY="myhost:0"
export DISPLAY
İstemci, myhost uzerindeki X sunucusuna bağlanmaya calışır ve sıfır numaralı(genel goruntu) goruntu uzerinde bir pencere acmasını rica eder.
Eğer şoyle yazarsak
DISPLAY="198.112.208.35:0"
export DISPLAY
İstemci bu kez, `198.112.208.35'. IP adresine sahip hosttaki X sunucusundan 0 numara uzerine bir goruntu acmasını ister.
Doğal olarak herkesin bir sunucuda X penceresi acmasını engellemek icin .X'in iki tane mekanizması vardır.
xhost
Bu mekanizmanın artık modası gecmiştir.`xhost' komutu, İzin verilmiş hostları listeler. Bu mekanizma bireysel kullanıcıları ayırt edemez. Şoyle ki, hostumun adını yetkiye sahip bir ad olarak değiştirip X'e bağlanabilirim. Bu mekanizma geriye donuk uyumluluk icin hala mevcuttur.
Xauthority
Xauthority mekanizması xhost mekanizmasının yerini almıştır. Bu mekanizma, yalnız hostları değil, bireysel kullanıcıları da ayırt edebilecek bir guvenlik sistemine sahiptir. Bir kullanıcının X'e bir pencere actırması icin “magic cookie” adlı bir bilete sahip olması gerekir. Bu .Xauthority adında bir ikilik(binary) dosyadır. Bu dosya kullanıcı ev dizininde X sistemi başladığında yaratılır. Herhangi birisi bu dosyaya sahip değilse, ne pencere acabilir ne de kullanıcı terminalinden goruntuyu gorebilir. Bu; kullanıcı ev dizininin NFS uzerinden, kullanıcıların giriş yapmış olduğu her hosta acık olması fikrine dayalıdır. Boylelikle goruntu sahibinin her zaman magic cookie'si vardır yani goruntu uzerinde pencere acabilir. Diğerleri de pencere acabilmek icin o dosyanın bir kopyasını edinmek zorundadır. “xauth” komutu, .Xauthority dosyasını kontrol etmeye yarayan yardımcı bir programdır. man dokumanlarından “xauth“ dokumanına bakarak daha fazla bilgi edinebilirsiniz.
COKLU EKRANLAR
Pencere paradigması bir cok acıdan cok başarılı olmuştur. Fakat, pencere sistemi kullanan herhangi birisi ekranın tum pencereler icin yeterince buyuk olmadığını bilmektedir. UNIX bunun icin ceşitli cozumler sağlamıştır. Cozumlerden birisi, birden fazla ekranın bir terminale bağlanmasıdır. X sistemi herhangi bir sayıda terminale bağlı farklı tipteki ekranlara destek verebilmektedir. Bir grafik tasarımcı metin yazmak icin siyah-beyaz bir ekrana ve grafikler icin de yuksek cozunurluklu bir ekran isteyebilir. Bunun dezavantajı donanımsal maliyettir. Daha ucuz bir cozum olarak da bir pencere yoneticisi edinebilir, tıpkı “fwm” gibi. “fwm” bir monitor uzerinde birden fazla sanal ekran acabilir. Diğer bir cozum de, bir tek pencere uzerinde birden fazla sanal goruntu acabilir. Diğer bir değişle, birden fazla shell penceresini “screen” programını kullanarak tek bir xterm uzerinde acabilir. “screen” komutu, tek bir pencere uzerinde birden fazla pencere acabilir. (CTRL-a ya da CTRL-c kullanarak) ve aralarında geciş yapabilir(CTRL-a ve CTRL-n). Bu yolla, aynı anda sadece tek bir shell penceresi acılabilir. “screen” komutu aynı zamanda oturumu uyku moduna getirebilir(suspend), cıkış yapabilir, sonra tekrar giriş yapabilir ve kaldığı yerden devam edebilir. İşte bazı yararlı “screen” komutları.
screen
“screen” sunucusunu acar
screen -r
Resume a previously suspended screen session if possible.
CTRL-a CTRL-c
Diğerlerinin uzerinde taze bir goruntu uzerinde yeni bir pencere acar.
CTRL-a CTRL-n
Sonraki ekrana gider.
CTRL-a CTRL-a
Son kullanılan pencereye gider
CTRL-a a
“screen” calışırken, CTRL-a “screen” komutları icin kullanılır ve boylelikle satır başına gecen CTRL-a yerini alır
CTRL-a CTRL-d
Detach the screen session from the current window so that it can be resumed later. It can be resumed with the `screen -r' command.
O andaki screen oturumunu ayırır ve boylelikle daha sonra devam edilebilir. Devam edebilmek icin “screen -r” komutu kullanılır.
CTRL-a ?
Yardım ekranı
__________________