Unix

1. Amaç
Bu bölumde, temel ve çok karşılaşılan unix komutlarının basit kullanımları anlatılacaktır. Internet üzerindeki bilgisayarların önemli bir kısmının işletim sisteminin unix ve unix türevleri (ultrix, linux, solaris vb) olduğu düşünülürse, unix bilmeyenlerin de yollarını bulabilecek kadar temel bazı bilgilere sahip olmaları yararlı olacaktır. Unix ile ilk kez karşılaşanlar her zaman için (Unix'te) küçük/büyük harflerin FARKLI olduğunu akıllarında bulundurmalıdırlar.
Bu bölümdeki bilgiler aslında daha geniş bir dökumanın ilk bölümünden yapılan bir alıntıdır. unix ile ilgili daha ayrıntılı bilgiler içeren orijinal dökümana ftp://ftp.bilkent.edu.tr/pub/INFO/Turkce/css/unix-all.css ile erişilebilir.
2. Dosyaların listesini nasıl elde edebilirim?
ls komutu ile. Aşağıda bu komutun temel kullanımı verilmiştir.
ls (secenekler) (dosya veya dizin...)
Bazı seçenekler:
·         -F: Dosya isimleri sonunda * ; dizin isimleri sonunda / işaretleri görüntülenerek birbirinden ayırt edilmelerini sağlar.
·         -R: Belirlenen bir dizin içindeki dosyalar yanısıra varsa tüm alt dizinler içerikleriyle birlikte listeler.
·         -a:  . ile başlayan dosyalar dahil dizinin tüm içeriğini listeler. (.login , .rc gibi)
·         -l: Dosyalar hakkında daha ayrıntılı bilgi verir.
·         -m: Dosya isimleri virgüllerle birbirinden ayrılarak listelenir.
·         -p:Dizinlerin / işaretiyle simgelenmesini sağlar.
·         -s:Blok cinsinden dosyaların boyutunu verir.
·         -u:Dosyalara en son erişim zamanlarına göre sıralanmasını sağlar.
Örnek :
ls -l sezen*
--w-rw--w-   1 e065247  B386         603 Oct 24 22:14 sezen_aksu_88.html
--w-rw--w-   1 e065247  B386         607 Oct 24 22:23 sezen_aksu_soyluyor.html
3. Bir dosyayı başka bir yere ya da isme nasıl kopyalayabilirim?
 cp komutu ile yapılır. Kullanımı :

 cp -[secenek] dosya başka_bir_dosya_ismi

 Örnek :

 cp sezen.html s.html  // sezen.html'i s.html'e kopyalar.
 cp s.html ~/tmp    // s.html'i HOME dizinimdeki /tmp dizininin altına kopyalar
 cp -r ~/tmp ~/dump   // HOME dizindeki tmp dizinini dump dizininin altına kopyalar.
4. Nasıl dizin oluşturabilirim, ve silebilirim?
·         mkdir dizin_ismi --> dizin oluşturur
·         rmdir dizin_ismi --> ici boş olan bir dizini siler.
5. Dosyaları ya da dizinleri başka bir yere nasıl taşıyabilirim?
mv komutu ile dosyaları başka bir dizine, hatta dizinleri başka dizinlere taşıyabilirsiniz. Bu işlemin sonunda orjinal dizinin içindeki dosyalarin isimlerinde bir değisiklik olmaz. mv komutu DOS'taki rename ve move komutuna benzer, ancak onlardan çok daha beceriklidir.
Kullanımı :
mv dosya1 dosya2

 
6. Dosyaları nasıl silebilirim?
Unix'te dosyaları silmek için rm komutu kullanılır. Aslında rm'nin yaptığı şey dosyanın sahip olduğu linklerden birini çıkarmaktır. Eger dosyanın sadece bir link'i varsa sonuçta dosya silinir.
DİKKAT : Unix'te DOS'takine benzer bir UNDELETE komutu yoktur (mimarilerinin farkli olmasından dolayı) bu sebeple dosyalarınızı silerken çok dikkatli olmanız gerekir. Eğer bir dosya'yı yanlışlıkla silerseniz, system sorumlunuza başvurun, belki backup'lardan dosyanızı geri getirebilir.
Kullanımı :
rm -[secenekler] Dosya_ismi_1 Dosya_ismi_2 ...

 Seçenekler :

 -e     : Dosyanın silinmesinden sonra ekrana bilgi verir.
 -f     : Sormadan write-protected  dosyaları siler.
 -i     : Dosyayı silmeden önce bunun doğruluğunu sorar.
 -r     : Recursive olarak alt dizinleri siler.
 -R     : -r ile aynidir.

 Örnek :

 rm  sezen*    // bulunduğumuz dizindeki sezen ile başlayan tüm dosyaları siler
 rm -rf tmp    // tmp dizinini ve alt dizinlerini uyarmadan siler.
7. Sahip olduğum bir işlemi nasıl kesebilirim?
kill (-sinyal) PID
PID numaraları ps komutu ile görünür. Bir çok sinyal tanımlanabilir. Bunlardan -9 islemi öldürür.
8. Yerini bilmediğim bir dosyayı nasıl bulurum?
Find programı ile bulabilirsiniz.

  Kullanımı :

  find <yol tanımı> <seçenekler>

Seçenekler:
-name isim:aranılacak dosyanın ismi.
-perm izin:izinleri oktal olarak belirlenmiş dosyaların aranılması.
-links n:linke sahip dosyalar.
-user kullanıcı:Belirli bir kullanıcıya ait dosyaların aranması.
-group isim:Belirli bir gruba dahil dosyaların aranması.
-atime n:n gün içinde erişilen dosyalar.
-mtime n:n gun içinde işlem gören dosyalar.
-ctime n:n gun içinde değiştirilen dosyalar.
-print :bulunan dosyaların ekranda görüntülenmesini sağlar.

 Örnek :

Bulunduğum dizinden itibaren tüm alt-dizinlerdeki "sezen" ile başlayan
dosyaları bulmak için

 find . -name "sezen*" -print

./faq/sezen_aksu_88.html
./faq/sezen_aksu_soyluyor.html
./sezen
./sezen/sezen
./sezen/sezen.c

Not 1 : Burada arayacağım dosyada wildcard kullandığım için " " işaretini
kullandım. Eğer dosyanın tam ismini biliyorsaniz buna gerek yoktur.

Not 2 : Eğer bir aramayi root'tan ( / ) başlatırsaniz çok büyük
olasılıkla bazi dosyaları okumaya izininiz olmadığı için size bunu
belirten bir uyarı mesajı verilecektir, ve bu mesajlar arasında aradığınız
şey ekrana yazılsa bile bunu gözden kaçırabilirsiniz. Bu sebeple çıktıyı
bir dosyaya yöneltip, daha sonra o dosyayı okumanızda fayda vardır.

 Örnek :
 find / -name gzip -print > gzip.listesi
9. Şifremi nasıl değiştirebilirim?
Şifre değiştirmek icin passwd programı kullanılır. Bazı systemlerde yppasswd olarak ta geçebilir. Bu komut'u yazdıktan sonra sizden ilk olarak eski şifreniz ardından yeni şifreniz sorulacaktır. Daha sonra tekrar yeni şifreniz kontrol amacı ile sorulur. Eğer bir hata yapmadiısaniz şifreniz değiştirilir.
10. Şifreler konusunda bir sınırlama var mıdır?
Unix şifreleri genelde 5-8 harf arasında olur. 8 harften uzun bir şifre girseniz bile 8 harften sonrası dikkate alınmaz. Şifrelerinizi seçerken güvenlik açısından bazı şeyleri gözönünde bulundurmanız gerekir. Örnegin isim,soyisim,isim-soyisim kombinasyonları,çok kullanılan sözcükler vs. kötü şifrelerdir. Çünkü bazı programlar bu olasılıkları deneyerek kullandığınız şifreleri bulabilir. Esasen iyi seçilmiş bir şifrenin bulunabilme olasılığı son derece düşüktür.
11. Bir dosyanın izinlerini nasıl değiştirebilirim?
chmod izin modu dosya : Bir dosyaya verilen izinlerin değiştirilmesi.

ls -l [dosya] yazdığınızda en solda görülen bilgiler, o dosyanin
izinlerini gosterir.

Örnek :

 ls -l sezen*
--w-rw-r--   1 e065247  B386         603 Oct 24 22:14 sezen_aksu_88.html

Görüldüğü gibi en soldaki kısım 10 tane alandan oluşmaktadır. Bunların
ilk'i dosyanın niteliğini ( dizin yada dosya ) sonraki 9'u da o dosyanın
izinlerini gosterir.

Eğer en soldaki alan "d" ile başlarsa bu onun bir dizin oldugunu, "-"
ile başlarsa normal bir dosya olduğunu gösterir (bu arada unix'te her dizin
özel bir dosyadır ! )

Bu ilk karakterden sonra gelen 9 karakter de kendi aralarında 3 gruba
bölunur.

 ?lk        3 Alan : Kullanıcı izinlerini
 Sonraki    3 Alan : Grup ile ilgili izinleri
 En Sağdaki 3 Alan : Diğer kullanıcılarla ilgili izinleri gösterir.

 Herbir bölüm de 3'e bölünür :

 r  : Read ( okuma ) hakkı;
 w  : Write ( yazma ) hakkı;
 x  : Execute ( calistirma ) hakkı.

 Örnek :

-rw-r--r--   1 e065247  B386         533 Oct 24 21:35 sen_aglama.html

gibi bir dosya bu dosyanın herkes tarafından okunabilir olduğunu, ama
sadece o dosyanın sahibi tarafından yazılabilir olduğunu gösterir.

chmod programında kullanılan izin modlari iki türlü belirtilebilir :

 1- Nümerik olarak :

 r'nin değeri : 4
 w'nin değeri : 2
 x'in değeri  : 1  dir.

 Örnekler :

            ORANTILI IZIN KODLARI
------------------------------------------------
Orantili kod -         Izin durumu             -
------------------------------------------------
 0400        -   Dosya sahibi için okuma       -
 0200        -   Dosya sahibi için yazma       -
 0100        -   Dosya sahibi için calistirma  -
 0040        -   Gruptakiler icçn okuma        -
 0020        -   Gruptakiler için yazma        -
 0010        -   Gruptakiler için calistirma   -
 0004        -   Diğerleri için okuma          -
 0002        -   Diğerleri için yazma          -
 0001        -   Diğerleri için calistirma     -
------------------------------------------------

  ls -l
--w-rw--w-   1 e065247  B386         603 Oct 24 22:14 sezen_aksu_88.html
--w-rw--w-   1 e065247  B386         607 Oct 24 22:23 sezen_aksu_soyluyor.html

chmod 0220 sezen*   // Kullanıcıya ve grub'a yazma hakkı verelim
 ls -l
--w--w----   1 e065247  B386         603 Oct 24 22:14 sezen_aksu_88.html
--w--w----   1 e065247  B386         607 Oct 24 22:23 sezen_aksu_soyluyor.html


  2- Karakter olarak :

u:Dosyanın sahibi.
g:Grup
o:Diğerleri
a:Herkes

+:Izin vermek
-:Izinleri kaldırmak.
=:Belirli bir izin atamak üzere.

 chmod  go+r sezen*  // Ek olarak gruba'a ve diğerlerine okuma hakkı verelim
 ls -l
--w-rw-r--   1 e065247  B386         603 Oct 24 22:14 sezen_aksu_88.html
--w-rw-r--   1 e065247  B386         607 Oct 24 22:23 sezen_aksu_soyluyor.html
12. Sahip olduğum dosyaların ne kadar yer kapladığını nasıl oğrenebilirim?
Başlıca 2 yolu vardır;
·         du komutu : du komutu bununduğunuz dizinden itibaren tüm alt dizinleri tarayarak block cinsinden ne kadar yer kapladığını gösterir. Block büyüklükleri genelde 512 byte'tır bu sebeple çıkan sayıyı iki'ye bölerek o dizinin nekadar yer kapladığını görebilirsiniz. En aşağıdada toplam miktar belirtilir.
Örnek :
/home/e065247/m>du
72      ./.m
8       ./m
8       ./ch
496     ./temp
632     .
·         quota komutu : quota komutu toplam olarak nekadar yer kapladığınızı ve sizin ne kadar yazma hakkınızın olduğunu gosterir. Aynı zamanda eğer geçici disk sınırınızı aştıysanız, kalan gün miktarı vs. gibi bilgileri de gösterir.
Örnek :
/home/e065247/m>quota
Disk quotas for user e065247 (uid 517):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
       /home211    2748    3000    5000             302    1000    1500
13. Sistemde kimlerin çalıştığını nasıl ögrenebilirim?
w [seçenekler]
w komutu sistemin yükü, ve çalışanların faaliyetleri konusunda bazı bilgiler verir. Komutu çalıştırdıktan sonra çıkan bilgilerden ilki, sistem hakkındadır : sistem saati, o anda kaç kişinin açık olduğu, ve sistemin yükü gibi.. Sistem yükü genelde 0 ile 40 arasında değisen bir değer ile gösterilir. Eğer sistemin yükü 0-5 arasında ise fazla yüklü olmadığını söyleyebiliriz o anda sistemin. Ancak bazı çok kullanıcılı ya da ağır işlerin yapıldığı makinlerde bu sayı 5 ten çok cok fazla olabilir.
Bu ilk satırın ardından gelen satırlarda sıralar halinde kullanıcılarla ilgili bilgiler bulunur.
Örnek :
/home/e065247/m>w e065247
  01:09AM  up 10 hrs,  40 users,  load average: 2.44, 5.04, 5.33
User     tty          login@       idle      JCPU      PCPU what
e065247  pts/5       11:50PM          1         5         5 telnet
e065247  pts/7       11:56PM          0         1         0 w
e065247  pts/12      11:50PM          0         0         0 telnet
14. Bir dosyanın içini görmek için hangi programları kullanabilirim?
cat [dosya_ismi] [dosya_ismi] ...
Bir dosyanın içine bakmaya yarar. Dosyanın içeriği hiç bir şekilde durmadan ekrandan akıp geçer. Boyları küçük olan dosyalara bakmak için kullanilabilir, ancak büyük dosyalara bakmak için ugun değildir. Ancak başka amaçlar için de kullanılabilir örnegin :
cat file1 >> file2
komutu file1 dosyasının içeriğini file2 dosyasının arkasına kopyalar. Bu işlem sonunda file1'in içeriğinde bir değisiklik olmaz.
- o -
pg seçenekler (dosya..)
Seçenekler:
-numara:Her defasında göruntülenecek satırların sayısını gösterir.
-p dizgi:Normal olarak sayfanın en alt satirinda (:)işareti oluşarak
 kullanıcının return a basması beklenir.
-c:Her bir sayfa görüntülenmeden önce ekran temizlenir ve imleç baslangıç
 konumuna döner.
-e:Her dosyanın sonunda kullanıcının return a basması gerekmez.
-n:Normal olarak komutlar yeni satir karakteri ile son bulur.Otomatik
 olarak komut sonunun belirlenmesine olanak sağlar.
-s:msg lerin görüntülenmesini sağlar.
+satir no:Belirli bir satırdan itibaren dosya görüntülenmek isteniyorsa
 doğrudan satır numarası yazmak sureti ile bu sağlanır.
+/kalip/:Belirlenen kalıbı içeren ilk satırı bulmak amacıyla bu tür bir
 tanım yapılabilir.

  - o -

 more [dosya_ismi] [dosya_ismi] ...

Bir dosyanın içeriğini ekranda görmek için kullanılır, ancak cat'ta
olduğu gibi dosya'nin iceriği ekrandan kayıp gecmez. Her sayfanın sonunda
ekranın sol alt köşesinde --More--(x%) şeklinde bir yazı belirir.
Buradaki x' dosyanın yüzde kaçının görüldüğünü gösterir. Bu dosyanın
büyüklüğü hakkında size bilgi verebilir. --More--(x%) yazısını gördükten
sonra aşağıdaki tuş'ları kullanabilirsiniz.

 SPC : Arka sayfaya geçilmesini sağlar.
 K   : K herhangi bir tam sayıdır. Bu sayı kadar ileriye gidilmesini sağlar
 Kb  : K sayısı kadar geri dönülmesini sağlar.
 Ks  : K sayısı kadar ileri gidilir, ancak aradaki satırlar görüntülenmez.
 =   : Bulunduğunuz satır numarası verilir.
 /   : Dosyada arama yapmak için kullanılır.
 v   : vi editörünü çağırır.
 q   : programdan çıkar.


 
15. Linux
Linux, öncelikle i386 ve üstü işlemcili PC'ler üzerinde çalışması için tasarlanmış, ve GNU Public License'a göre bedava dağıtılan bir Unix türevi işletim sistemidir. Ancak Linux, DecAlpha, SunSparc ve PowerPC gibi ortamlarda da çalışabilmektedir. Linux ana kernel'i, Linus Torvalds tarafından yazılmıştır. Daha ayrıntılı bilgi, Türkiye Linux Topluluğu Web Sitesi'nden alınabilir. Adresi : http://www.linux.org.tr
xxxxxx