linux

linux tanıtım

Moderatör: quaint

Cevapla
quaint
Genel Yetkili Adayı
Mesajlar: 188
Kayıt: 11 Tem 2009 19:46
İletişim:

linux

Mesaj gönderen quaint »

Linux öğreniyoruz.Bende yeni başladımhep beraber öğrenelim.
quaint
Genel Yetkili Adayı
Mesajlar: 188
Kayıt: 11 Tem 2009 19:46
İletişim:

Re: linux

Mesaj gönderen quaint »

Her işletim sistemi gibi linux'da önceleri sadece komut satırından oluşuyordu. Herhangi bir grafik arayüzü içermiyordu.Bu şimdi ki bilgisayar kullanıcılarına çok soğuk kullanışsız gelecektir. Artık bir çok bilgisayar kulanıcısının dos ile tek alakası windows açılırken gözüken ,autoexec.bat dosyasından çağırılan bir kaç komut. Ama linux kurulduktan sonra console yani komut satırı default olarak başlar (çogu dağıtımda böyledir). Yani işletim sistemi hemen bir grafik arayüze geçmez.Tabi birkaç ayar ile bunuda sağlıyabilirsiniz. Öyle ya da böyle her linux kullanıcısı bu komut satırını kullanmak zorunda kalacaktır. Özellikle bunu kullanmaya alıştıktan sonra yaptığınız işlemlerin pencere açıp kapamaktan daha hızlı olduğunu göreceksiniz. Özellikle "tab" tuşunu kullanmaya alışınca yılladır size öcü gibi gözüken dos'un sadece çok "anlayışsız" olduğunu farkedeceksiniz.Linux'un anlayışlılığı konusuna bir kaç basit komutu anlatıktan sonra döneceğim. Linux altında basit komutların bile gerekli gereksiz bir çok parametresi mevcut. Bu parametreleri kullanmak için kullanacagınız parametrenin önüne çoğu zaman bir yada iki eksi işareti ( "-" ya da "--") konur. Her komutun sonuna "--help" yazınca genellikle parametreleri acıklayan küçük bir yardım ekranı gözükür. Bu arada vereceğim komutların parametreleri Red Hat6.x ve Mandrake 6.x dağıtımları için geçerlidir.Bu parametrelerin bir kısmı diğer linux dağıtımlarında bulunmayabilir. Üzülmeyin çoğunu bir kaç saat içinde unutursunuz .
Öncelikle işe ls komutu ile başlıyalım.

ls:

Nedense bir işletim sistemini öğrenmeye başlıyan insanlar önce dosya listeleme komutunu öğrenir (dos'taki dir komutunu herkes bilir). ls komutu hemen hemen dos'taki dir komutu ile aynı işi görür. Yani aksini belirtmedikce bu komut o dizindeki tüm dosyaları ve altdizinleri ekrana basar. Ama bu komut parametresiz yazıldıgında sadece isimleri verir dosya ve ya dizin hakkında başka bir bilgi vermez.Dosyalar hakkında daha cok bilgi almak isterseniz;


ls -l


yazmanız yeterlidir.Böylece dosyanın ozelliklerini (okunabilirmi? değiştirlebilirmi? calıştırılabilirmi?bu mevzuya komutlardan sonra dalacagım o yüzden şimdilik dosyaların sol tarafında göreceğiniz -x- rxw gibi harfler kafanızı karıştırmasın) ve büyüklüğünü ögrenebilirsiniz. Bir başka parametre ise "-a" (--all da kullanılabilir) parametresidir. Bu parametre adından anlaşılacağı üzre tüm dosyaları gösterir. Adı nokta ile başlıyan dosyalar ve dizinler linux'ta gizli dosyalardır ve ls yazdığınızda gösterilmez. Mesela adı ".xinitrc" olan dosya veya dizin "ls -a" yazmadan ya da ls komutuna "--all" parametresi yazılmadan gösterilmez. Sizinde bu dosyadan haberiniz olmaz. "-c" ile dosyaları oluşturulma zamanına göre sıralar. "--full-time" ile dosyanın oluşturulma zaman ve tarihini gösterir. Bunları ve geri kalan parametreleri beraber de kullanabilirsiniz;

ls -alc --full-time

bu komut size tüm dosyaları ayrıntılı gösterecek, onları zamanına göre dizecek, ve tarihlerini gösterecektir."-u" dosyaları,dosyaya en son ulaşma zamanına göre dizecektir."-X" dosyaları alfabetik olarak dizer. "-d" komutu sadece dizinleri gosterir."-k" dosyaların büyüklüğünü kilobyte olarak verir.Ls default olarak büyüklüğü byte cinsinden verir."-h" (yada --human-readable ) ile dosya buyukluklerini küsürata kaçmadan öğrenebilirsiniz.Mesela 1k 5M ya da 6G gibi."-H" (unutmayın linux "case sensitive" dir yani H ile h aynı şeyi ifade etmez linux'a ) ile ls, 1 kilobyte 1000 byte'a 1000 k=1mb'a eşitmiş gibi davranır. Sırada cp komutu var.

cp:

Cp anlıyacağınız üzre copy demektir yani dosya kopyalama komutudur.bu komutun kullanımı ise şöyledir;

cp davul.tgz /gel/buraya/

Bu komut davul.tgz doyasını gel dizini altındaki buraya dizinine (tabii varsa) kopyalar.Önemli bir olayda koplayacağınız dosyadan sonra yazdığınız dizin adını slash yani bölü işareti "/" ile başlamazsa o dizinin dosyanın altındaki bir altdizine kopyalacağınız manasına gelir.
Dosyanın bulunduğu dizinin altında "burasi" diye bir dizin olsun. Dosyayı bu dizine kopyalamak için;

cp davul.tgz burasi/

yazmanız yeterlidir. Dosyayı yine aynı dizine farklı bir isimle kaydetmek içinse;

cp davul.tgz burasi/zurna.tgz

yazabilirsiniz.Gelelim bu komutun parametrelerine.

-i --interactive

Bu parametre herhangi bir dosyanın üzerine yazıyorsanız sizden onay istemesini sağlar.Çoğu linux sisteminde zaten bu parametre default olarak açıktır. Yani genelde kullanmanıza gerek yoktur.

-l

Bu önemli bir parametredir. Bununla dosya kopyalanmaz sadece hedef dizininde bir link yaratılır. Bu linkler windows9x te karşılaştığımız kısayollar (shortcut) ile aynı şeydir.

-p

Mümkünse dosyanın attributelarını (türkcesi nedir bilmiyorum ) korumaya zorlar. Bu dosya modlarınıda komutlardan sonra anlatacagım merak etmeyin.

-r

Çok kullanılan bir parametredir.Çoğu komutta aynı işi ifade eder. Bu parametre cp komutuna altdizinleride kopyalamasını söyler.

-R

Sadece altdizinleri kopyalar.

-u --update

Yedekleme ile arası iyi insanlar için çok kullancağı bir parametre. Hedef dizinde, kopyalanacak dosyaların aynısı ya da yeni tarihlisi yoksa kopyalar.

-v

Paranoyak arkadaşlar için iyi bir parametre.Yapılan işlemleri gösterir.

mv:

Dos'taki move komutuyla aynı işi görür.Yani bir dosyayı bir dizinden başka dizine taşımaya yarar.
Mesela /home/aldemir/ dizininde oluşturduğumuz "mevzu" dosyasını /etc dizininin altına atacağız. Eğer şu anda /home/aldemir/ dizinide bulunuyorsak;

mv mevzu /etc/

yazarak dosyayı /etc dizinine atabiliriz.Eğer /home/aldemir/ dizininden farklı bir dizinde bulunuyorsak;

mv /home/aldemir/mevzu /etc/

yazmamız lazımdır.Kolay değilmi?Özellikle bash kabuğunu kullanmaya alıştıkca(ipucu:tab tuşu!!!)
komut satırını kullanmanız çok daha kolay olacaktır.
Bu komut ikinci bir amaç için kullanılabilir;Dosya ismi değiştirme yani dostaki ren komutunun yaptığı işin aynısını yapabilir.Mesela elinizdeki index.html dosyasının ismini enter.html olarak (aynı dizinde) değiştirmek isterseniz;

mv index.html enter.html

ve işlem tamamlanacaktır.Bu isim değiştirme işlemini dosyayı başka dizinlere taşırken de yapabilirsiniz.Mv'nin parametreleri azdır ama çok da önemlidir;

-f --force bu parametre hedefteki dosyanın aynı olduğu durumlarda mv'nin size üstüne yazıyimmi?
türünden bir soru sormasını engeller.Hiç sormadan dosyanın üzerine yazar.

-i --interactive bu ise -f'nin tam tersine soru sormasını sağlar çoğu işletim sisteminde default olarak açıktır.

-u bu da sadece hedefteki dosya daha yeni değil ise üzerine yazar.


Root olarak login olduğunuz durumlarda bu komutu kullanırken dikkatli olmanızı öneririm. Sisteme büyük zararlar verebilirsiniz.


rmdir:
Bu komut dizinlerin silinmesi için kullanılır.Ama sadece silinecek dizinin içi boş ise o dizini siler.Eğer dizinin içi dolu ise 2 seçeneğiniz mevcuttur.Ya teker teker dosyaları ve altdizinleri sileceksiniz ya da birazdan anlatacağım rm komutunu bir takım parametrelerle kullanarak "olaya girceksiniz".

mkdir:

Bu komut da dizin oluşturmak için kullanılır.Kullanımı çok basittir ve sadece

mkdir dizin

yazarak bulunduğunuz dizinde bir altdizin oluşturabilirsiniz.

rm:

Gelelim root'lar için bir başka tehlikeli komuta . Tabii ki bu komut kaçınılmaz ve çok önemli bir komuttur.Dosya silmeye yarar.



Linux altında dos'taki undelete gibi bir araç mevcut değildir.O yüzden bir dosyayı linux altında sildinizmi,dosya tarihin tozlu sayfalarına ilelebet gömülür.Bu yüzden bu komut çoğu linux dağıtımında,dosya silme onayı ister.Yani dosyayı silmek isteyip istemediğinizi sorar.Bir süre sonra bu sorular canınızı sıkmaya başlarsa "-f" parametresini kullanıp bu sorulardan kurtulabilirsiniz.Ama burdan ifade ediyim,sorumluluk kabul etmem .Çünkü hiç bişey sormadan dosyayı hemen siler.Ekrandaki tüm göreceğiniz sanki birisi "enter" a basmış gibi komut satırının bir satır aşşağı kaymasıdır.


Diğer çok önemli parametre ise;

-r -R -recursive 'dir.Bununla rm komutunun altdizinleride "elinden geçirmesine" sebep olur.Yani altdizinleride siler.Bu parametre ile "rmdir" komutunun yapamadığını yapabilirsiniz.Mesela elinizde "gereksiz" diye bir dizin olsun ve biz de bunu silmek istiyelim;

rm -r gereksiz/

yazarsanız,tüm gereksiz dizinini silecektir.Eğer dizinin altında onlarca hatta yüzlerce dizin ve dosya varsa eliniz "y" tuşuna basmaktan yorulacaktır.Çünkü komut her dosya ve dizin için sizden onay isteyecektir.Bunu engellemek için;

rm -rf gereksiz/

dersek yine bir-iki saniye içinde linux'un o dizini yokettiğine şahit oluruz.Burdan sizi bi daha uyarmak isterim şöyleki;Eğer root iseniz işletim sistemine kalıcı hasarlar verebilirsiniz (inanmıyorsanız "rm -rf /bin/" komutunu root iken deneyin ) linux'u yeniden kurmak zorunda kalabilirsiniz.

tar:

Tar komutu linux'un arşivleme (backup) komutudur.Internette linuxla ilgili dosyaların
hemen hemen hepsi tar ile arşivlenmiş ve de gzip ile sıkıştırılmış halde bulunur.Genellikle bu tür dosyaların uzantısı " .tar.gz" ve ya " .tgz" dir.Bu komut bir çok parametre içerir ama basit olarak şu üç amaç için kullanabilmeniz yeterlidir(zaten bende bu kadarını açıklıyacağım):

1.Arşivin içeriğinin görülmesi
2.Arşivin gerekli ortama açılması
3.Yeni bir arşiv oluşturulması

Bunların nasıl yapıldığını açıklamdan önce şunu söyliyeyim.Tar arşivleri genelde içinde programa ait dizini barındırır ama akıllı bir arkadaşamızın böyle bir yapmamış olması içine açtığımız dizini onlarca dosyaya boğabilir ve bunlari silmek insanın hem vaktini hem de mutluluğunu çalar.
O yüzden öncelikle dosyanın içerine bakılmalıdır.Elimizde arshiv1.tar.gz isimli bir dosya bulunsun;

tar ztvf arshiv1.tar.gz

yazılırsa sadece o dosyanın içeriğini ekrana ayrıntılı olarak basar.

tar zxvf arshiv1.tar.gz

yi denersek arşivin bulunduğumuz dizine açıldığını görürüz.Dikkat dosyanın uzantısnda "gz" yok ise yani uzantısı sadece "tar" ise "z" parametresini kullanmamak gerekir zira bu parametre tar'a doyanın gzip'li olduğunu ve onu önce gzip ten kurtarması gerektiğini söyler tabii dosya ziplenmemiş olduğundan tar hata verip işlemi başlatmaz.
Bir tar arşivi oluşturmakta dos altında dosya ziplemekten farksızdır.Her sıkıştırma ve arşivleme işlemi gibi öncelikle arşivin adı daha sonra arşive konacak dosyalar satıra yazılır.Oluşturacagımız arşivin adı yedekolayi.tar.gz olsun.Bunun içinde /root/prog/ dizinini alacağımı farz edelim;

tar zcvf yedekolayi.tar.gz /root/prog/*

derseniz /root/prog/ dizini altındaki tüm dosyaları alacak ve de yedekolayi.tar.gz diye bir arşiv oluşturacaktır.

mount:

Linux'un hala windows'a göre birtakım garip özellikleri vardır.Bunlardan biride mount olayıdır.Linux'a göre bilgisayarınızda ki her şey birer dosyadan ibrettir.Mesela linux için sizin 150$ verdiğiniz external modem sadece bir dosyadır.Linux vri alışverişini bu dosyalara yazarak ve bu dosyalardaki veri değişimini okuyarak sağlar.Bilgisayara veri yüklediğimiz ve ondan veri aldığımız disket sürücüler,sabit diskler,cd-rom lar için durum biraz farklıdır.Linux onları yine birer dosya gibi görür.Ama bunları okuyabilmeniz için linux'a bir disket yada cd-rom taktığınızı söylemeniz gerekir.Bunu söyliyen komut ise "mount" komutudur.mount komutunu kullanarak /dev dizini altında o alete ait dosyayı istediğiniz dbir dizine bağlarsınız.Böylece o dizinin içi direkt olarak sizin disket sürücünüz içiymiş gibi davranır.Yani o dizinin içinden dosya silerek disketten dosya silmiş olursunuz.Disket yada cd-rom değiştirmeniz gerektiği zaman ise "umount" komutu ile o dizinin disket sürücü ya da v.b. gibi davranmasına son vermiş olursunuz,ve de yeni bir cd-rom v.b. takacağınız zaman sürücüyü yeniden mount etmeniz gerekir.
Aslında aynı şey sizin linux'un kurmuş olduğunuz partition içinde geçerlidir ama zaten linux açılırken bu partition'ı mount eder.Yeni kullanıcıların büyük derdi ise fat32'li bir sabit disk bölümünü görememektir.Bunun birazadan ne kadar kolay bir çözümü olduğunu göreceksiniz.Ama bundan önce linux formatlı bir disketin nasıl mount edildiğini görelim;

mount /dev/fd0 /mnt/floppy/

Bu komutu yazdıktan sonra linux formatlı bir disketin(mesela boot disketi) içeriğini /mnt/floppy/ isimli dizine ls çekerek görebilirsiniz.Bu komutun tek önemli parametresi "-t" dir.Bu parametre mount edeceğiniz medyanın hangi dosya formatı içerdiğini linux'a açıklar.Dos formatlı bir disketi
mount etmek için;

mount -t vfat /dev/fd0 /mnt/floppy/


yazmanız yeterlidir.Bİr floppy'yi mount ederken /dev/fd0 'ı kaynak olarak göstermeye mecbursunuz(bir den fazla sürücünüz olmadığı zamanlarda tabii ki!).Aynı zamanda adı linux tarafından hda1 olarak görülen bir dos ya da fat32 disk bölümünü mount etmek için şunu yazmanız yeterlidir;

mount -t vfat /dev/hda1 /mnt/herhangi/


Burda herhangi dediğimiz dizin.Sizin istediğiniz bir dizin olabilir.mnt dizini içersinde bulunmasıda gerekmez.Herhangi bir dizin olabilir.Un-mount ederken (komutu umount) sadece mount ettiğiniz dizini yazmanız yeterlidir.Mesela yukardaki sabit-disk bölümü için;

umount /mnt/herhangi/


o disk bölümünü un-mount eder.

df:

Disk-free kelimsinin baş harflerinden adını alan bu komut sabit diskinizde ne kadar yer kaldığını gösterir.Günümüzde tüm paketleri ile kurulan bir linux dağıtımının yaklaşık 1.2Gbyte yer kapladığı düşünülürse bu komutun küçük ama faydalı bir komut olduğu ortaya çıkacaktır.

chmod:

chmod komutundan önce işe dosya özellikleri ile başlıyalım."ls -l" yazıldığında benim bilgisayarımın görüntüsü kısmen şöyle;


drwxr-xr-x 5 root root 1024 Sep 27 16:20 Desktop
drwxr-xr-x 5 root root 1024 Sep 29 16:08 GNUstep
drwxr-xr-x 4 root root 1024 Sep 28 11:34 Projects
-rw------- 1 root root 1843200 Oct 4 12:12 core
drwxr-xr-x 2 root root 3072 Sep 29 11:42 danger



Her şey iyi güzelde peki bu sol taraftaki d'ler r'ler ne?Bunlar bir dosya yada dizinin özelliklerini gösterir. Bu on sütunluk harfler gurubunun ilk sütunu elemanın dizin dosya yada link olduğunu belirtir. Eğer ilk harf d ise dizin,tire "-" ise dosya ve "l" ise link olduğunu gösterir. Geri kalan 9 sütun 3 ayrı parçaya bölünmüştür. İlk üçlü grup (Desktop dizini için rwx dir) o anda bağlı kullanıcının dosya üzerindeki haklarını,ikinci grup(r-x dir) kullanıcının bağlı olduğu grubun haklarını,son grup ise (r-x) ise diğer kullanıcıların haklarını gösterir. "r" read yani okuma manasına gelir. "w" write yani yazma manasına gelir. Aynı zamanda bi dosyanın değistirilmesi içinde yazılabilir olması gerekir. "x" ise execute yani çalıştırma manasına gelir. Çalıştırılabilir dosyaların herhangi bir özel uzantısı olması gerekmez. Dizinlerde x bulunması o hakka sahip kullanıcının o dizine geçebilmesini sağlar.Tabii ki bu haklar root için geçerli değildir.Root sistem üzerindeki her dosyaya ulaşma hakkına sahiptir.Yukardaki örnek için;
core dosyasını kullanıcı hariç hiç kimse göremez.Çünkü "r" modu diğer gruplar için açık değildir.
chmod komutu ise bu özelliklerin değiştirilmesini sağlar.Bu komut ile harf kodları kullanarak kime ne hak verceğinizi ayarlarsınız,u(user yani kullanıcı),g(grup),o(other yani diğerleri) ve all (yani herkes,hepsi).Örnek olarak yukardaki core dosyasını herkes için okunabilir kılalım;

chmod go+r core


dersek core dosyasının görünümü şöyle olacaktır;

-rw-r--r-- 1 root root 1843200 Oct 4 12:12 core


Yani dosya herkes için okunabilir olacaktır. Sadece diğer kullanıcılardan okumayı kaldırmak istersekte;

chmod o-r core


komutu yeterlidir.Aynı zamanda rakamlarlada bu komut kullanılabilir.Her modun bir rakamsal kodu vardır.r modunu 4,w modunu 2,x modunu ise 1 temsil eder.Bunların kombinasyonunu aşşağıda inceliyebilirsiniz.

4 or r--: read-only

2 or -w-: write-only (sık rastlanmaz)

1 or --x: execute

6 or rw-: read and write

5 or r-x: read and execute

3 or -wx: write and execute (sık rastlanmaz)

7 or rwx: read, write, and execute

öyleyse core dosyasını ilk halinden herkes için sadece okunur hale getirmek için;

chmod 644 core

yazılacaktır.Yine aynı şekilde diğer kullanıcılar için okumayı kaldırmak şu şekilde de yapılabilir;

chmod 640 core


Yine tavsiyem bu komutu fazla karıştırmamanızdır.Bu sefer bilgisayarı bozmanız için root olmanıza bile gerek kalmaz.Kullanıcı dosyalarınızı kaybetmeniz olasıdır.


Bu kadar komutu anlattıktan sonra gelelim kabuk olayına.Kabuk işletim sisteminin kerneli ile kullanıcı arasında iletişim sağlar.Yani sizin komut satırına girdiğiniz komutları işletim sisteminin kerneli'nin anlıyabileceği bir dile çevirmektir görevi.Linux açık bir işletim sistemi olduğundan ve her isteyen (tabi gücü ve bilgisi yeten) onu istediği gibi değiştirebildiğinden linux için bir çok kabuk mevcuttur.Bunlardan en çok kullanılanın adı bash'dir.Bash kabuğu üzerinde çok uzun durmak istemiyorum ama en çok kulllanılan özelliği "command-line completion"
yani komut-satırı tamamlama özelliğidir.Bu olay internet explorer'ın otomatik tamamlama "auto-complete" özelliğine benzer.Ama bash komut-satırına gireceğiniz komutu hemen kendisi tamamlamaz.Bunu yapması için bir kere "tab" tuşuna basmanız gerekir.Mesela herhangi bir dizin içinde şu dosyalar bulunsun;

kxicq.tgz kemalidovdum.c davulzurna.txt

ve sizde davulzurna.txt dosyasını okumak istediğinizi varsayalım.

pico d

yazıp "tab" tuşuna basarsanız,bash kabuğunun komutu tamaladığını ve

pico davulzurna.txt

yazdığını görürsünüz.Diğer taraftan;

pico k

yazıp "tab" tuşuna basarsanız bilgisayarınızın sinir bozucu bir beep sesi çıkardığına şahit olursunuz.Değişik linux dağıtımlarına göre olay değişebilir.Mandrake 6.1 de pico ad yazıp "tab"
tuşuna bastığınızda bilgisayarın öttüğünü ve diğer tüm benzeyen dosyaların ls çekilmişcesine listelendiğini görürsünüz.Oysa red hat 6.0 da benzer dosyaları görmek için tab tuşuna iki kez basmanız gerekir.Yukardaki cıkmazdan kurtulmak için(anlıyacağınız üzre);

pico ke

yazarak tab tuşuna basarsanız,komut satırında;

pico kemalidovdum.c

yazdığını görürsünüz.Bu tuşa alışınca linux altında çok hızlı çalışabilirsiniz.Ne yazık ki insan fazla alışınca da dos kullanamaz oluyor.
Cevapla

“Linux” sayfasına dön