Online book on command-line Linux usage, and Gentoo Linux in particular (Turkish Translation Fork) [I didn't continue]
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 

1252 lines
57 KiB

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<chapter>
<title>Linux'u Çalıştırmak</title>
<section>
<title>Giriş</title>
<para>Linux ile çalışmak için bir Linux ortamına ihtiyacınız var. Bunun
için en iyi ortam sisteminizde kurulu bir Linux dağıtımı, ancak çalışan
CD'ler (başlattığınızda kullanıma hazır işletim sistemi ortamı sunan
CD'ler) gibi değişik ortamları da kullanabilirsiniz. Linux'u sisteminize kurma işlemi dağıtıma özgüdür ve Gentoo'nun kurulum prosedürü <ulink
url="http://www.gentoo.org/doc/en/handbook">Gentoo web sitesinde</ulink>
gayet iyi biçimde anlatılmıştır. Şimdilik kurulum işleminden
bahsetmeyeceğim. Kitabın ilerleyen kısımlarında komut satırından Gentoo
kurulumuna yoğunlaşacağım. Çünkü o zaman bazı kurulum adımları sizin için
çok daha anlaşılır olacak. Şimdi Linux'a özel bazı önemli başlıklar
hakkında konuşacağım, ama fazla derine inmeyeceğim. İlerde her başlık
gayet uzun bir şekilde ele alınacak.</para>
<para>Unix veya Linux kullanım deneyimine sahip olmayan kullanıcılar bu
ortamı diğer işletim sistemlerinden oldukça farklı bulacaklardır
(özellikle Microsoft Windows'dan). <link linkend="runninglinux_systemarchitecture">Sistem yapısı</link> hakkında ana
farklardan bahsederek hızlı bir değerlendirme yapacağım. Aşağı kısımlarda
(Gentoo Linux kullanmak için olmazsa olmaz bir özellik olan) Linux komut
satırında çalışma ile ilgili detaylara gireceğim. Kapanışı da komutlar ile
ilgili yardım bulabileceğiniz ortamları söyleyerek yapacağım.</para>
</section>
<section>
<title id="runninglinux_systemarchitecture">Sistem Yapısı</title>
<para>Linux çok kullanıcılı bir yapıdadır.
<emphasis>root</emphasis><indexterm>
<primary>root</primary>
<secondary>kullanıcı</secondary>
</indexterm> olarak bilinen yönetici sistemde istediği herşeyi
yapabilir. Bu yönetici hesabı ile çalışmanız gayet mümkün olmakla
birlikte, sisteme erişmesi gereken herkes için ayrı bir kullanıcı açıp
sadece gerekli olanlara önemli kaynaklara ve yönetim komutlarına ulaşma
hakkı tanımanız tavsiye edilmektedir (bir kullanıcıdan diğerine geçmek
veya tek bir komutu başka bir kullanıcının adına çalıştırmak için
gerekli araçlar bulunmakta).</para>
<para>Kişisel bilgisayarınız için bu muhtemelen kendiniz için tek bir
kullanıcı açmanız gerektiği anlamına gelir. Eğer paylaşılan bir bilgisayar
ise (örneğin ev halkına ait bilgisayar veya işyerindeki bilgisayar) büyük
olasılıkla herkes için ayrı bir kullanıcı açmak isteyeceksiniz. Bir hesabı
paylaşmak iyi bir durum değildir. Eğer dosya ve dizinleri diğer insanlarla
paylaşmak istiyorsanız, aynı hesabı kullanmaktan daha iyi seçenekleriniz
bulunmakta.</para>
<para>Kullandığınız kişisel hesap sınırlı hesaptır ancak kullanışsız
değildir. Yetkilendirilmemiş bir kullanıcı hesabı ile root hesabının
arasındaki bazı farklar şöyle sıralanabilir:</para>
<itemizedlist>
<listitem>
<para>kişisel hesap sadece kendi oluşturduğu dosyaları düzenleyebilir.
İşletim sistemi dosyaları kullanıcılar tarafından değiştirilemediği
için bir kullanıcının sistemi bozma ihtimali ortadan kalkar. Bu ayrıca
kişisel bir hesabın sisteme ek bir uygulama kuramaması anlamına da
gelmektedir (ancak bu sorun değil - ilerde sisteminizi dönetmeye
ihtiyaç duyduğunuzda gerekli hakları nasıl alacağınızı anlatacağım).
</para>
</listitem>
<listitem>
<para>kişisel hesap bir disk bölümünü sistemi tehlikeye sokacak kadar
dolduramaz: Öntanımlı olarak her bölümün %5lik bir kısmı sadece
yetkili kullanıcılara ayrılmıştır</para>
</listitem>
<listitem>
<para>eğer kullanıcı hesabında şüpheli hareketler olursa, bunun izleri
o kullanıcının ulaşamadığı kayıt dosyalarında görülebilir</para>
</listitem>
<listitem>
<para>...</para>
</listitem>
</itemizedlist>
<para>Kullanıcının başlattığı her görev sistemde bir işlem olarak belirir.
Örneğin, tarayıcıyı çalıştıran bir kullanıcı tarayıcı programı temsil eden
en az bir işlemin çalışmasından sorumludur. Öntanımlı olarak bu işlem
çalıştıran kullanıcının yetkilerine sahip olur, bu yüzden sadece bu
kullanıcının ulaşabildiği dosya ve kaynaklara ulaşabilir. root hesabını
kullanmamak için bir başka neden ise web tarayıcınızda çalışan bir
betiğin, bir güvenlik açığından faydalanarak (ki bu fantezi değildir, böyle
şeyler yaşanabilir) sisteminizdeki önemli dosyaları silebilmesidir...</para>
<para>Dosya ve dizinler ise izin açısından üç farklı izin dalı ile temsil
edilir: birincisi sahibi, diğeri grubu ve son olarak da herkes için. Daha
sonra dosya izinlerini detaylı olarak ele alacağız.</para>
<section>
<title>Kullanıcı Hesapları</title>
<para>root kullanıcısının yönetici olarak herhangi bir kısıtlamaya tabi
olmaması sebebiyle, root tarafından yapılan her hareket potansiyel
olarak sisteminize zarar verebilir:</para>
<itemizedlist>
<listitem>
<para>yanlış dosya veya dizinleri silmek (geri getir seçeneği
bulunmamakta)</para>
</listitem>
<listitem>
<para>sistem dosyalarını silmek veya düzenlemek (muhtemelen hatalı
çalışan bir sisteme sebep olacaktır - ve yeniden başlatmak bu sorunu
çözmeyecektir)</para>
</listitem>
<listitem>
<para>ağı devre dışı bırakmak veya ağ politikasını değiştirmek</para>
</listitem>
<listitem>
<para>dosyaları yanlış yere yerleştirmek (muhtemelen dosya kaybı ve
sistem işlemlerinde aksamaya sebep olur)</para>
</listitem>
<listitem>
<para>yanlış işlem(ler)i sonlandırmak veya değiştirmek (muhtemelen
servis hatası, kapanma veya mantıksız davranışlara sebep olur)</para>
</listitem>
<listitem>
<para>...</para>
</listitem>
</itemizedlist>
<para>Bu sebepten, kullanıcı hesapları oluşturulmalıdır. Öntanımlı bir
kullanıcı hesabı:</para>
<itemizedlist>
<listitem>
<para>sadece kendine ait dosyaları düzenleyebilir veya silebilir</para>
</listitem>
<listitem>
<para>sistemin tümünü ilgilendiren bir ayarı değiştiremez (ağ veya
aygıt erişimi gibi)</para>
</listitem>
<listitem>
<para>dosyaları sadece kendisine atanmış ev dizinine yerleştirebilir
</para>
</listitem>
<listitem>
<para>sadece kendi çalıştırdığı işlemleri sonlandırabilir /
yönetebilir</para>
</listitem>
</itemizedlist>
<important>
<para>root olmayan bir kullanıcının da sisteme zarar vermesi mümkündür. Örneğin çalıştırılan zararlı bir program sistemdeki tüm kullanıcı dosyalarını silebilir. Bu, işletim sistemini etkileyen dosyalara dokunulmadığı için sistemin çalışmasını etkileyememekle beraber, kullanıcılar için bir felaket anlamına gelir (bu yüzden lütfen düzenli olarak yedek almayı unutmayın).</para>
</important>
<para>Kullanıcı hesaplarının yanı sıra her Linux yüklü sistemde <emphasis>sisteme ait hesaplar</emphasis><indexterm>
<primary>sistem hesapları</primary>
</indexterm> da bulunur. Bu hesaplar kullanıcı hesapları gibi,
sınırlamaları bulunan hesaplardır. Ancak sisteme giriş yapmak için
kullanılamazlar (geçerli bir şifreleri yoktur), genellikle ayrı bir ev
dizinleri bulunmaz, sadece işletim sisteminin belirlediği işleri
kendilerine (güvenlik sebebiyle) verilen sınırlı haklar ile yapmakta
kullanılırlar.</para>
<para>Kullanıcı hesaplarının yönetimini (yetkilerini ve kaynaklara
erişimlerinin denetimini) kolaylaştırmak için kullanıcılar gruplara
dahil edilirler. Dosyalara erişim grup izinleri ile yönetilebilir ve bu
sayede belirlenen gruba üye olan herkes dosyaya erişebilir (hatta
dosyayı düzenleyebilir). Bir kullanıcı birden çok gruba dahil olabilir.
</para>
</section>
<section>
<title>İşlemler</title>
<para>Bir <emphasis>işlem</emphasis><indexterm>
<primary>işlem</primary>
</indexterm> sistemde yürütülen bir görevi simgeler. Her işlem bir
kullanıcı tarafından başlatılır, ancak bu o işlemin sadece o
kullanıcının yetkisi dahilindeki kaynaklara ulaşabileceği değil, aynı
zamanda sadece o kullanıcı (ve root kullanıcısı) tarafından
yönetilebileceği (örn. sonlandırılabileceği) anlamına gelir.</para>
<para>Her işlemin bir üst işlemi (ebeveyni) vardır (en üst işlem olan <command>init</command><indexterm>
<primary>init</primary>
</indexterm> işlemi hariç) ve her işlem bir veya birden fazla işleme
ebeveynlik yapabilir. Eğer işlem sonlandırılırsa, ebeveyni olduğu
işlemler de sonlanacaktır (yani asla 'init' işlemini sonlandırmayın,
sistemde çalışan bütün işlemleri sonlandırmaya çalışmış olursunuz).</para>
<para>İşlem çalıştırmak bilgisayarın işlemcisini yoracak diye bir kural
yoktur. Boşta duran bir sistem yüzlerce (hatta binlerce) işlemi
arkaplanda çalıştırıyor olabilir. Bunun sebebi işlemlerin belirli
durumlara sahip olmasıdır: çalışıyor, uyuyor, beklemede, durdu... Linux
işletim sistemi uygulamaların ihtiyaç duyduğu kaynakları eldekiler ile
karşılamakta oldukça kabiliyetli olduğu için, son kullanıcı olarak, o
kadar fazla işlemin çalıştığını fark etmezsiniz.</para>
<note>
<para>Bir işlem birden fazla iş parçacığına sahip olabilir. İş
parçacıkları (thread) uygulamanın birer parçasıdır (ama işletim
sistemi tarafından yönetilirler) ve uygulama içinde paralel olarak kod
çalıştırabilirler. Yüzlerce iş parçacığına sahip bir uygulama dahi tek
işlemden oluşur.</para>
</note>
</section>
<section>
<title>Dosya ve Dizin Yapısı</title>
<para>Linux'da (ve tüm Unix tabanlı işletim sistemlerinde) dizin sistemi
hiyerarşik yapıdadır. En üstte
<emphasis>kök dizin</emphasis>
<indexterm>
<primary>kök</primary>
<secondary>dosya sistemi</secondary>
</indexterm>, diğer bir isim ile "<filename>/</filename>"<indexterm>
<primary>/</primary>
</indexterm> bulunmaktadır. Altında önceki bölümde anlattığımız "Dosya
Sistemi Hiyerarşisi" standarında uygun olarak dosya ve dizinler bulunur
<xref linkend="fhs" />. Yapıdaki her pozisyonun kendine göre bir anlamı
vardır. Örneğin
<filename>/home/swift</filename>, "swift" kullanıcısının ev dizini
anlamına gelir. Bir diğer örneğimiz
<filename>/usr/share/doc/googleearth-4.2.198.2451/</filename>, Google
Earth programının o sürümüne ait olan paketin dökümanlarını içermektedir.
</para>
<para>Normal dosyaların (örn. yazı dosyaları ve uygulama belgeleri) yanı sıra, Linux'da ayrıca şu dosyalar bulunur:</para>
<itemizedlist>
<listitem>
<para><emphasis>bağlantılar</emphasis><indexterm>
<primary>bağlantı</primary>
</indexterm>, aynı dosyaya farklı isim ile ulaşmayı sağlayan
bağlantı dosyaları (bir dosyaya birden fazla bağlantı atanabilir),
</para>
</listitem>
<listitem>
<para><emphasis>sembolik bağlar</emphasis><indexterm>
<primary>bağlantı</primary>
<secondary>sembolik</secondary>
</indexterm> diğer dosyaları işaret eden dosyalar. Bağlantılardan
ayrıdırlar, çünkü kısayollar olmayan bir dosyayı da işaret
edebilirler ve (tamamen olmasa da) Microsoft Windows'daki
kısayollara benzerler.</para>
</listitem>
<listitem>
<para><emphasis>borular</emphasis><indexterm>
<primary>boru</primary>
</indexterm> veya <emphasis>FIFOlar</emphasis><indexterm>
<primary>FIFO</primary>
</indexterm>, bir uygulamanın çıktısını diğer uygulamaların
okuması için geçici olarak depolayan dosyalar</para>
</listitem>
<listitem>
<para><emphasis>unix soketleri</emphasis><indexterm>
<primary>unix soketi</primary>
</indexterm>, yani bir işlem tarafından oluşturulan ve diğer
birçok işlemin bilgi alabileceği veya yazabileceği akışı sağlayan
dosyalar</para>
</listitem>
<listitem>
<para><emphasis>karakter</emphasis><indexterm>
<primary>aygıt dosyası</primary>
<secondary>karakter</secondary>
</indexterm> ve <emphasis>blok aygıtı dosyaları</emphasis><indexterm>
<primary>aygıt dosyası</primary>
<secondary>blok</secondary>
</indexterm>, normal dosya işlemleri ile bir aygıt (donanım)
arasındaki iletişimi sağlayan dosyalar</para>
</listitem>
</itemizedlist>
<para>Tüm bu özel dosyalar Linux dosya sisteminde birer dosya olarak
temsil edilir. Örnek olarak <filename>/dev/sda1</filename>'i ele alalım.
Sistem tarafından bilinen ilk (<filename>a</filename>) SCSI aygıtının (
<filename>sd</filename>) birinci bölümünü (<filename>1</filename>)
temsil eder. <filename>/dev/sda1</filename> bir blok aygıtı dosyasıdır
çünkü okuma yazma işlemleri blok (belirli gruplar) halinde uygulanır.
Karakter aygıtlarında bu işlem karakter başına yapılmaktadır.</para>
<para>İlerdeki bir bölümde aygıt dosyaları ve Linux'un onları yönetim
şeklinden bahsedeceğim.</para>
</section>
<section>
<title>İzinler</title>
<para>Dosyalar (dizinler ve bahsettiğimiz özel dosyalar dahil, bu noktadan sonra hepsine genel olarak dosyalar olarak hitap edeceğim) üç grup izinle<indexterm>
<primary>izinler</primary>
</indexterm> ilişkilidir. Birisi sahibi için, diğeri grubu için, son
olarak da geri kalan herkes için. Bunların her biri birçok bayrak içerir:
</para>
<itemizedlist>
<listitem>
<para>dosya veya dizini okuma izni</para>
</listitem>
<listitem>
<para>dosya veya dizine yazma izni</para>
</listitem>
<listitem>
<para>dosyayı çalıştırma izni (muhtemelen bir betik veya uygulama
dosyası olmasından dolayı) veya dizine girme izni (dizinin içine
dalma anlamında)</para>
</listitem>
</itemizedlist>
<para>Bu üç grubun yanı sıra çalıştırılabilir dosyalar ve dizinler için
ek izinler ayarlanabilir, ancak daha az öneme sahip olduklarını
söyleyebiliriz:</para>
<itemizedlist>
<listitem>
<para>bir dosyaya <emphasis>kullanıcı/grup kimliği ayarlama</emphasis><indexterm>
<primary>kullanıcı kimliği ayarlama</primary>
</indexterm><indexterm>
<primary>grup kimliği ayarlama</primary>
</indexterm>, yani dosya çalıştırıldığında işlemin onu çalıştıran
kullanıcı tarafından değil, sahibi tarafından çalıştırılmış
görünmesini sağlama veya (dizinlere uygulandığında) dizinin içinde
oluşturulan dosyaları otomatik olarak bir grubun sahipliğine vermeye
yarar.</para>
</listitem>
<listitem>
<para><emphasis>silme kısıtlaması</emphasis><indexterm>
<primary>silme kısıtlaması bayrağı</primary>
</indexterm> bayrağı (etkilenen dizinin içindeki dosyaları dosya
veya dizinin sahibi olmayan kullanıcıların silmesini engeller)</para>
</listitem>
</itemizedlist>
<para>Silme kısıtlaması bayrağını biraz açıklayalım. Yazma izni genele
açık olan dizinlerde kullanılır (iyi bilinen bir örnek olarak geçici
dosyaların tutulduğu <filename>/tmp</filename>` dizinini verebiliriz) ve
kullanıcıların kendi oluşturmadıkları dosyaları silmesini engeller.
Yazma izni genele açık olan bir dizin normalde diğer kullanıcıların
içindeki dosyaları silmesine olanak tanır (çünkü onların da dizine yazma
hakları vardır). Silme kısıtlaması bayrağı aynı zamanda
<emphasis>yapışkan</emphasis><indexterm>
<primary>yapışkan bayrak</primary>
</indexterm> bayrak olarak da bilinir.</para>
</section>
</section>
<section>
<title>Komut Satırını Kullanmak</title>
<para>Çoğu Linux dağıtımı başlatıldıktan sonra size grafiksel bir giriş ekranı sunar, hatta bazıları otomatik olarak masaüstüne giriş yapar. Gentoo Linux'da durum böyle değildir. Bunun yerine komut satırı ekranı sizi karşılar ve kendinizi tanımlamanızı ister:</para>
<programlisting>This is seaheaven.homeworld (Linux i686 2.6.23) 22:30:00
seaheaven login: </programlisting>
<para>Bu ekranda, (Linux kurulumu sırasında mutlaka oluşturmuş olduğunuz)
kullanıcı adınızı girmeniz gerekir. Sonraki adımda hesabınızın şifresini
girmenizi ister. Eğer girdiğiniz kullanıcı adı sistemde bulunuyorsa ve
şifre de eşleşiyorsa, komut satırına giriş yaparsınız. Örneğin "captain"
kullanıcı adı ile giriş yaptığınız "seaheaven" adına sahip bir makinada
tipik bir <emphasis>komut istemi satırı</emphasis><indexterm>
<primary>komut istemi</primary>
</indexterm> şu şekilde görünür:</para>
<programlisting>captain@seaheaven ~ $</programlisting>
<para>Bu komut satırındaki yapı şu şekildedir:</para>
<orderedlist>
<listitem>
<para>sisteme giriş yapmış olan kullanıcı</para>
</listitem>
<listitem>
<para>kullanıcının giriş yaptığı bilgisayarın adı</para>
</listitem>
<listitem>
<para>kullanıcının dosya sistemindeki mevcut yeri (~ işareti
kullanıcının ev dizini anlamına gelir)</para>
</listitem>
<listitem>
<para>kullanıcının normal kullanıcı ($) mı yoksa root (#) mu olduğunu
belirten bir istemci işareti.</para>
</listitem>
</orderedlist>
<para>Sonraki bölümlerde size Linux komut satırı dünyasını hızlı bir
şekilde tanıtacağım.</para>
<section>
<title>Dolaşma</title>
<para>Komut istemcisi aslında kabuk tarafından sunulan bir hizmettir.
<emphasis>Kabuk</emphasis><indexterm>
<primary>kabuk</primary>
</indexterm>, kullanıcıdan klavye yoluyla aldığı komutları sistemde
çalıştıran etkileşimli bir uygulamadır. Komutlara önemli bir örnek
olarak dosya sistemi içerisinde gezinmeyi sağlayan komutları verebiliriz:</para>
<itemizedlist>
<listitem>
<para><command>pwd</command><indexterm>
<primary>pwd</primary>
</indexterm> komutu kullanıcının içinde bulunduğu dizini gösterir</para>
</listitem>
<listitem>
<para><command>cd</command><indexterm>
<primary>cd</primary>
</indexterm> komutu kullanıcının içinde olduğu dizini değiştirmeyi
sağlar</para>
</listitem>
<listitem>
<para><command>ls</command><indexterm>
<primary>ls</primary>
</indexterm> komutu kullanıcının bulunduğu veya istediği bir
dizinin içeriğini görüntüler</para>
</listitem>
</itemizedlist>
<para>Örnek bir oturum aşağıda gösterilmiştir.</para>
<programlisting>captain@seaheaven ~ $ <command>pwd</command>
/home/captain
captain@seaheaven ~ $ <command>ls</command>
Documents Movies Music Pictures
opentasks.txt
captain@seaheaven ~ $ <command>cd Documents</command>
captain@seaheaven Documents $ <command>pwd</command>
/home/captain/Documents</programlisting>
<para>Bir dizinden diğerine geçmek için <command>cd</command> komutunu
kullanmanın birkaç yolu vardır. <command>pwd</command> komutunun içinde
bulunduğunuz dizini görmek için kullandığınızı unutmayın. Dosyalar
içinde gezmek için <command>pwd</command> komutu bir işe yaramaz!</para>
<itemizedlist>
<listitem>
<para>Dosya sistemi ağacında derinlere inmek için ilişkili dizin adını kullanabilirsiniz. Örnekte, "<filename>Documents</filename>" ilişkili dizinini kullanarak, "<command>cd Documents</command>" komutu ile <filename>/home/captain</filename> dizininden <filename>/home/captain/Documents</filename> dizinine geçiş yapılmakta. </para>
<programlisting>$ <command>pwd</command>
/home/captain
$ <command>cd Documents</command>
$ <command>pwd</command>
/home/captain/Documents</programlisting>
</listitem>
<listitem>
<para>Üst dizine çıkmak için özel bir isim olan <filename>..
</filename> (nokta nokta) kullanabilirsiniz. Yani <command>cd ..
</command> komutu <filename>/home/captain/Documents</filename>
dizininden <filename>/home/captain</filename> dizinine geçiş yapar.
</para>
<programlisting>$ <command>pwd</command>
/home/captain/Documents
$ <command>cd ..</command>
$ <command>pwd</command>
/home/captain</programlisting>
</listitem>
<listitem>
<para>Ayrıca tam dizin isimleri de kullanabilirsiniz. Örneğin acilen <filename>/etc/init.d</filename> dizinine (ilerde bahsedeceğimiz önemli bir dizin) gitmek için <command>cd /etc/init.d</command> komutu vermelisiniz.</para>
<programlisting>$ <command>pwd</command>
/home/captain/Documents
$ <command>cd /etc/init.d</command>
$ <command>pwd</command>
/etc/init.d</programlisting>
</listitem>
<listitem>
<para>Özel bir işaret olan <filename>~</filename><indexterm>
<primary>~</primary>
</indexterm> (benzer işareti) ev dizini anlamına gelir, yani
"<command>cd ~</command>" komutu sizi ev dizinine götürür. Hatta
sadece "<command>cd</command>" komutu ile de ev dizininize
ulaşabilirsiniz. <filename>~</filename> iki şekilde kullanılabilir:
ev dizininizi yazmak yerine (<command>cd ~/Documents</command>
kullanarak <filename>/home/captain/Documents</filename>) dizinine
veya başka bir kullanıcının ev dizinine, tam yolu (<filename>
/home/raghat/public_html</filename>) yazmak yerine <command>~
</command> ile birlikte kullanıcı adını kullanarak ("<command>cd
~raghat/public_html/</command>") ulaşabilirsiniz.</para>
<programlisting>$ <command>pwd</command>
/etc/init.d
$ <command>cd ~/Documents</command>
$ <command>pwd</command>
/home/captain/Documents</programlisting>
</listitem>
</itemizedlist>
<para>Eğer herhangi bir sebepten dolayı (örn. izninizin olmaması veya
belirttiğiniz dizinin bulunamaması) dizine girme işlemi başarısız olursa
bununla ilgili hata mesajı alacaksınız.</para>
<programlisting>$ <command>pwd</command>
/home/captain
$ <command>cd /etc/cron.daily</command>
bash: cd: /etc/cron.daily: Permission denied
$ <command>pwd</command>
/home/captain</programlisting>
</section>
<section>
<title>İçeriği Sıralamak</title>
<para>Bir dizinin içeriğini sıralamak için <command>ls</command>
komutunu kullanırsınız. Öntanımlı olarak bulunduğunuz dizindeki dosya ve
dizinleri görüntüleyen komut, oldukça fazla görüntüleme seçeneği
sunmakta. Tüm seçenekleri tek tek anlatma niyetinde değilim, ancak şu
anda bilmeniz gereken birkaç önemli özellik var.</para>
<para>İlk olarak "<command>-l</command>" seçeneği sadece bulunduğunuz
(ya da ismini verdiğiniz) dizinin içeriğini göstermek ile kalmaz, aynı
zamanda her dosya ve dizin hakkında bilgi de verir: </para>
<programlisting>captain@seaheaven ~ $ <command>ls -l</command>
drwxr-xr-x 2 captain users 4096 2007-10-31 22:24 Documents
drwxr-xr-x 2 captain users 4096 2007-10-31 22:24 Movies
drwxr-xr-x 2 captain users 4096 2007-10-31 22:25 Music
drwxr-xr-x 2 captain users 4096 2007-10-31 22:24 Pictures
-rw-r--r-- 1 captain users 66 2007-10-31 22:30 opentasks.txt</programlisting>
<para>Verilen bilgiler arasında izin bilgileri (üç kez üç karakter: Okuma, Yazma ve Çalıştırma), sahip olan kullanıcı ve grup, boyut (dizinler 4'ün katlarından oluşmakta) ve oluşturulma zamanları bulunmaktadır.</para>
<para>Bir diğer ilgi çekici seçenek ise (gizli dosyalar dahil) tüm dosyaları göstermeye yarayan "<command>-a</command>", seçeneği. Unix / Linux sistemlerde
<emphasis>gizli dosyalar</emphasis><indexterm>
<primary>gizli dosya</primary>
</indexterm> isminin başında nokta bulunduran dosyalardır. Öntanımlı
olarak ev dizininizde gizlenmiş bir sürü dosya bulacaksınız, bunlara bir
örnek olarak:</para>
<programlisting>captain@seaheaven ~ $ <command>ls -a</command>
Documents Movies Music Pictures
.history .maildir .profile .vimrc</programlisting>
<para>Bir dosyanın gizli olması onu gerçekten saklamaya değil, normal
kullanımda fazla ön plana çıkmamasını sağlamaya yarar. Bu şekilde
listeleme esnasında da kirliliğin önüne geçilmiş olur. Gizli dosyaların
çoğu ayar dosyalarıdır (vim editörünün kullanıcı ayarlarını saklayan
.vimrc dosyası gibi).</para>
<para>Çoğu komut satırı aracında olduğu gibi parametreleri beraber
kullanabilirsiniz, hatta birleştirebilirsiniz. Yani <command>ls -l -a
</command> ile <command>ls -la</command> aynı komuttur. Ayrıca sıra da
önemli olmadığı için <command>ls -al</command> da aynı görevi görür.</para>
<section>
<title>ls -l çıktısını inceliyoruz</title>
<para>"<command>ls -l</command>" komutunu bir dosya veya dizinden
bilgi almak için sıkça kullanacaksınız. Bu yüzden <command>ls</command>
'in çıktısına kısaca göz atacağım:</para>
<programlisting>$ <command>ls -l 12-servicemanagement.xml</command>
-rw-r--r-- 1 swift users 26976 Apr 22 21:21 12-servicemanagement.xml
|&lt;+&gt;&lt;+&gt;&lt;+&gt; | &lt;-+-&gt; &lt;-+-&gt; &lt;-+-&gt; &lt;-----+----&gt; &lt;---------+-------------&gt;
| | | | | | | | | `- dosya veya dizin adı
| | | | | | | | `- son düzenleme tarihi
| | | | | | | `- boyut (byte olarak)
| | | | | | `- dosya veya dizine sahip olan grup
| | | | | `- dosya veya dizine sahip olan kullanıcı
| | | | `- dosya veya dizine olan bağlantı (hard link) sayısı
| | | `- herkes için izinler (bu örnekte "sadece okuma" ayarlanmış)
| | `- sahibi olan grup ("users") için izinler (bu örnekte "sadece okuma")
| `- sahibi olan kullanıcı ("swift") için izinler (bu örnekte "okuma ve yazma")
`- dosyanın türü (bu örnekte: normal dosya)</programlisting>
</section>
</section>
<section>
<title>Temel Dosya Yönetimi</title>
<para>Aşağıda en temel dosya yönetim işlemlerini açıklayacağız;
kopyalama, taşıma, yeniden adlandırma ve silme...</para>
<section>
<title>Dosya ve Dizinleri Kopyalama</title>
<para>Bir dosyayı kopyalamak için <command>cp</command><indexterm>
<primary>cp</primary>
</indexterm> komutu kullanılır. Temel kullanımı basittir: <emphasis>cp
kaynak hedef</emphasis>. Hedef bir dizin olabilir, bu durumda dosya o
dizinin içine kopyalanacaktır. Eğer hedef bir dosya adı ise dosya o
isimle kaydedilecektir.</para>
<programlisting>captain@seaheaven ~ $ <command>ls Documents</command>
captain@seaheaven ~ $ <command>cp opentasks.txt Documents/tasks.txt</command>
captain@seaheaven ~ $ <command>ls Documents</command>
tasks.txt
captain@seaheaven ~ $ <command>cp opentasks.txt Documents</command>
captain@seaheaven ~ $ <command>ls Documents</command>
opentasks.txt tasks.txt</programlisting>
<para>Öntanımlı olarak <command>cp</command> komutu hedef dosyayı
komutu çalıştıran kullanıcının hakları ve sahipliği ile oluşturur.
Gelecek örnekte <filename>/etc/inittab</filename> dosyasını bulunduğum
dizine (.) kopyalayacağım:</para>
<programlisting>$ <command>ls -l /etc/inittab</command>
-rw-r--r-- 1 root root 1890 Feb 15 20:39 /etc/inittab
$ <command>cp /etc/inittab .</command>
$ <command>ls -l inittab</command>
-rw-r--r-- 1 swift users 1890 Apr 22 22:49 inittab</programlisting>
<para><command>cp</command> komutundan bütün bilgileri (erişim
izinleri, dosya sahipliği ve zamanlar) korumasını isteyebilirsiniz,
ancak bunun için bazı durumlarda root olmanız gerekebilir.</para>
<para>Bir dizini ve içindeki derinlemesine tüm dosyaları kopyalamak için <command>-r</command> seçeneği kullanılır. Sıradaki örnek <filename>workdocuments</filename> dizinini (içindeki tüm dosya ve dizinlerle beraber) bulunduğunuz dizine kopyalar.</para>
<programlisting>$ <command>cp -r /media/usb/workdocuments .</command></programlisting>
</section>
<section>
<title>Dosyaları Taşıma ve Yeniden Adlandırma</title>
<para>Bir dosyayı taşımak için <command>mv</command><indexterm>
<primary>mv</primary>
</indexterm> komutu kullanılmalıdır. Kullanımı <emphasis>mv
kaynak hedef</emphasis>. şeklindedir. Eğer hedef dizin değil de bir dosya adı ise <command>mv</command> komutu yeniden adlandırma işlemini de gerçekleştirir. Gelecek örnekte
<filename>tasks.txt</filename> dosyasını
<filename>Documents</filename> dizininden
<filename>/media/usb/workdocuments</filename> dizinine taşıyoruz:</para>
<programlisting>captain@seaheaven ~ $ <command>mv Documents/tasks.txt /media/usb/workdocuments</command>
captain@seaheaven ~ $ <command>ls</command>
opentasks.txt tasks.txt
captain@seaheaven ~ $ <command>ls /media/usb/workdocuments</command>
opentasks.txt</programlisting>
</section>
<section>
<title>Dosya ve Dizinleri Silmek</title>
<para>Son görevimiz dosyaları silmek.
<command>rm</command><indexterm>
<primary>rm</primary>
</indexterm> komutunun kullanım şekli: <emphasis>rm
dosyaadı</emphasis>şeklindedir. Bir dizini silmek için sadece dizin
adını verebilirsiniz, ancak bu yöntemde dizinin silinmesi için boş
olması gerekir. Doluysa "-r" seçeneğini eklemelisiniz (içindekileri de
sil anlamına gelir).</para>
<programlisting>captain@seaheaven ~ $ <command>rm Documents/opentasks.txt</command>
captain@seaheaven ~ $ <command>rm tasks.txt</command></programlisting>
<para><command>rm</command> rm komutuna gelen popüler bir seçenek
grubu da "<command>-rf</command>": Verdiğiniz hedefteki tüm dosya ve
dizinleri derinlemesine silmeyi ve kullanıcıya onay için sormamayı
(zorlamayı) emreder. Bunu kullanırken ne yaptığınızdan emin olun,
Linux'da geri alma özelliği bulunmamakta!</para>
<programlisting>$ <command>rm -rf Documents</command></programlisting>
<para>Neyse ki, <command>rm</command> komutu sadece onu çalıştıran
kullanıcının yetkisinin olduğu dosyaları silebilir. Yani eğer yetkili
(root) kullanıcı değilseniz sistem dosyalarını kazara silemezsiniz.
</para>
<programlisting>$ <command>rm -f /etc/passwd</command>
rm: cannot remove '/etc/passwd': Permission denied</programlisting>
</section>
</section>
<section>
<title>Yazı Dosyalarını Düzenlemek</title>
<para>Her Linux kullanıcısının bildiği önemli bir görev de yazı
dosyalarını nasıl düzenleyeceğini bilmektir. Kullanabileceğiniz birçok
yazı editörü bulunmakta, örneğim popüler vim veya emacs. Gentoo ilk
editör olarak nano'yu tavsiye etmekte, çünkü nano ile çalışmak kolay ve
anlaşılabilir. Benim tercihim vim'den yana.</para>
<section>
<title>Nano'yu Kullanmak</title>
<para>Nano'nun kısa bir tanıtımını yapalım. Eğer nano komutu
verirseniz sizi ana pencere açılarak boş bir yeni belge ile
karşılayacaktır. Eğer parametre olarak bir dosya adı verirseniz,
verdiğiniz yazı dosyasını düzenlemeye açık halde açacaktır. Örneğin
<filename>opentasks.txt</filename> dosyasını nano ile açalım:</para>
<programlisting>captain@seaheaven ~ $ <command>nano opentasks.txt</command></programlisting>
<figure float="">
<title>nano editöründe opentasks.txt dosyası</title>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="images/nano.png" width="10cm" />
</imageobject>
</mediaobject>
</figure>
<para>İlk satır dosya adını ve son iki satır da gerekli kısayol
tuşlarını göstermekte. ^ karakteri Ctrl tuşuna basmanız gerektiği
anlamına geliyor. yani dosyayı kaydetmek için Ctrl+O, editörden çıkmak
için Ctrl+X kombinasyonlarını kullanmalısınız.</para>
<para>Bazı yazı dosyaları (ayar dosyaları gibi) yeni satırlara karşı
çok duyarlıdır. Öntanımlı olarak nano, yazı satırı doldurduğunda alt
satıra geçebilir. Bunu engellemek ve satırları olduğu uzunluklarında
bırakmak için <command>-w</command> parametresini kullanabiliriz: "
<command>nano -w opentasks.txt</command>". Ayar dosyalarını
düzenlerken bu kullanım şekli önerilmektedir.</para>
</section>
<section>
<title>Yazı Dosyalarına Bakmak</title>
<para>Eğer yazı dosyalarının içeriğine bakmak, ancak bir metin editörü
kullanmak istemiyorsanız, <command>cat</command> veya
<command>less</command>araçlarını kullanabilirsiniz. Bu sayede
yanlışlıkla düzenleme riskinden de kurtulmuş olursunuz.</para>
<itemizedlist>
<listitem>
<para><command>cat</command><indexterm>
<primary>cat</primary>
</indexterm> ile bir dosyanın içeriğini terminale "basarsınız".
Eğer dosya büyükse, tüm içerik aynı anda ekrandan akıp gidecektir.
Shift+PgUp tuşları ile yukarı doğru bakabilirsiniz ancak terminal
önbelleğinin de bir sınırı vardır.</para>
</listitem>
<listitem>
<para><command>less</command><indexterm>
<primary>less</primary>
</indexterm> ile bir dosyanın içeriğine sayfa sayfa
bakabilirsiniz. Yön tuşları veya PgUp-PgDn tuşları ile yukarı
aşağı kaydırma, belirttiğiniz metni arama gibi özelliklere
sahiptir.</para>
</listitem>
</itemizedlist>
<para><command>less</command> uygulaması sadece yazı dosyalarını
değil, aynı zamanda uygulama yardımı (man) dosyalarını da görüntülemek
için kullanılır (bu bölümde ilerde bahsedeceğiz).</para>
<table>
<title>less'de sık kullanılan kısayolların bir listesi</title>
<tgroup cols="2">
<tbody>
<row>
<entry>bir satır aşağı in</entry>
<entry>e, j, &lt;enter&gt; veya aşağı ok tuşu</entry>
</row>
<row>
<entry>bir satır yukarı çık</entry>
<entry>y, k veya yukarı ok tuşu</entry>
</row>
<row>
<entry>bir sayfa aşağı in</entry>
<entry>f, &lt;boşluk&gt; veya PgDown</entry>
</row>
<row>
<entry>bir sayfa yukarı çık</entry>
<entry>b veya PgUp</entry>
</row>
<row>
<entry>/&lt;aranacakyazı&gt;</entry>
<entry>ileriye doğru &lt;aranacakyazı&gt;yı ara, sonraki için
"<command>n</command>" kullanın</entry>
</row>
<row>
<entry>?&lt;aranacakyazı&gt;</entry>
<entry>geri doğru &lt;aranacakyazı&gt;yı ara, önceki için
"<command>?</command>" kullanın</entry>
</row>
<row>
<entry>h</entry>
<entry>yardım ekranını göster</entry>
</row>
</tbody>
</tgroup>
</table>
<para>Merak edersiniz diye söyleyelim, <command>less</command> (ing:
daha az) ismi daha önceden kullanılan, halen de desteklenmekte olan
<command>more</command><indexterm>
<primary>more</primary>
</indexterm>. (ing: daha fazla) isimli bir sayfalayıcıya ithafen
seçilmiştir. <command>more</command> da dosyaları sayfa sayfa
göstermesine rağmen, sadece aşağı doğru kaydırmayı desteklemekte. Yani
<command>less</command> (az), <command>more</command>(çok)'dan daha
fazlası.</para>
</section>
</section>
<section>
<title>Dosya ve Dizinleri Bağlantılama</title>
<para>Linux iki çeşit bağlantı (link) türünü destekler: sembolik bağlar ve sert bağlar. Muhtemelen neden tanıtım bölümünde bundan bahsettiğimi merak edeceksiniz. Linux'da sembolik bağlar oldukça sık kullanılır, ayrıca sert bağlar ile ilgili çıktıları da birçok yerde göreceksiniz. Aslında daha önce bu yazıda sert bağlar ile ilgili bir çıktıdan bahsettik, <command>ls -l</command> komutu bölümünde.</para>
<para><emphasis>Sembolik bağlar</emphasis><indexterm>
<primary>bağlantı</primary>
<secondary>sembolik</secondary>
</indexterm>, diğer adı ile <emphasis>symlink'ler</emphasis><indexterm>
<primary>symlink</primary>
</indexterm>, anlaması en kolay bağ çeşididir. Gerçek bir dosya değil,
sistemdeki başka bir dosyaya işaret eden dosyalardır. İçeriklerinde
işaret ettikleri dosyanın ismini bulunduran basit bir dosya oldukları
için, gerçekte (artık) var olmayan dosyalara da işaret ediyor
olabilirler. Örnek olarak <filename>/home/swift/opentasks.txt</filename>
dosyasını işaret eden bir sembolik bağ oluşturabilirsiniz, bu dosya
(artık) olmasa dahi.</para>
<para><emphasis>Sert bağlar</emphasis><indexterm>
<primary>bağlantı</primary>
<secondary>sert</secondary>
</indexterm>, NEEDTRANSLATION on the contrary, are immediate links. They actually
refer to the same location on the disk as their target file (through
inode's) and the file system will not release this location as free
space until there are no references to this location. In fact, every
file you see in the file system is a link to a location. With hard
links, you just create additional links.</para>
<para>Teknolojilerinden dolayı, sert bağlar sadece aynı ortamda bulundukları dosyalara işaret edebilirler ve dizinleri işleme yetenekleri yoktur.</para>
<para>Bağ oluşturmak için <command>ln</command><indexterm>
<primary>ln</primary>
</indexterm> (sert bağ) veya <command>ln -s</command>
(sembolik bağ) kullanın:</para>
<programlisting>$ <command>ln hedefdosyaadı yenidosyaadı</command>
$ <command>ln -s hedefdosyaadı yenidosyaadı</command></programlisting>
<para>Bağlar sayesinde dosyalarınızı daha kolay yönetebilirsiniz. Örneğin
<filename>~/Documents/Work/Thesis/myThesis.txt</filename> konumunda
önemli bir dosyanız varsa, bu dosya için ev dizininizde (<filename>
~/myThesis.txt</filename> adında bir bağ oluşturabilir ve her dosyaya
ulaşmak istediğinizde birkaç dizin geçmek zorunda kalmazsınız.</para>
</section>
<section>
<title>Dosya / Komut Tamamlama</title>
<para>Birçok Linux kabuğunun güçlü bir özelliği de komut tamamlamadır.</para>
<para>Örneğin opentasks.txt isminde bir dosyayı düzenlemek istiyorsunuz.
"<command>nano o</command>" yazıp, ardından &lt;tab&gt; tuşuna
basarsanız, eğer bulunduğunuz dizinde başka o harfi le başlayan dosya
yoksa, kabuk komutu tamamlayıp "<filename>nano opentasks.txt</filename>
". haline getirecektir. Eğer birden fazla o harfi ile başlayan öğe varsa
iki kez &lt;tab&gt; tuşuna basarak hangileri olduğunu görebilirsiniz.
</para>
<para>Aynısı komutlar için de geçerli. Eğer nano tek "na" ile başlayan
tek komut olsaydı (ki değil, öyle varsayalım) "na" yazdıktan sonra &lt;
tab&gt; tuşuna basmanız "nano" olarak tamamlanmasına yeterdi. Birden
fazla "na" ile başlayan komut olduğu için, seçenekleri görmek için burda
da iki kez basabilirsiniz:</para>
<programlisting>$ <command>na</command><emphasis>&lt;tab&gt;&lt;tab&gt;</emphasis>
namei nautilus
nano nasl
nasm native2ascii
$ <command>na</command></programlisting>
</section>
<section>
<title>Terminaller Arası Geçiş</title>
<para>Unix / Linux sistemlerin bir avantajı da birden fazla
terminali<indexterm>
<primary>sanal terminal</primary>
</indexterm> desteklemesidir. Sisteminize giriş yaptığınızda aslında
karşınıza çıkan yer (sanal) terminaldir, büyük ihtimalle birinci sanal
terminal. Bir terminalden diğerine Alt+F# tuşları işe geçebilirsiniz.
Burdaki F#; F1, F2, F3... tuşlarını temsil etmektedir. Eğer grafiksel
ortamda iseniz ilk olarak Ctrl+Alt+F# kullanmalısınız. Grafiksel ortam
kullanıcının oturum açamayacağı ilk ekranda çalışır (büyük ihtimalle
Alt+F7).</para>
<para>Birden çok terminalde çalışmak size birçok farklı işi aynı anda
yürütme kolaylığı sağlar. Örneğin bir uygulamayı düzenliyorsanız
terminalin birinde uygulamanın kendisini, diğerinde de ayar dosyasını
açmak isteyebilirsiniz.</para>
<para>İpucu: Eğer komut satırında çalışıyorsanız, terminaller arası geçiş için
<command>chvt</command><indexterm>
<primary>chvt</primary>
</indexterm> command to switch between terminals: <command>chvt
2</command> komutunu da kullanabilirsiniz. (Alt+F2'ye benzer).</para>
</section>
<section>
<title>Oturumu Kapatmak</title>
<para>Eğer terminal oturumunuzu kapatmak isterseniz <command>exit</command>
komutu verebilir veya Ctrl+d kombinasyonunu kullanabilirsiniz:</para>
<programlisting>captain@seaheaven ~ $ <command>exit</command>
This is seaheaven.homeworld (Linux i686 2.6.23) 22:30:00
seaheaven login: </programlisting>
</section>
<section>
<title>Bilgisayarı Kapatmak</title>
<para>Sonunda bilgisayarınızı kapatmak<indexterm>
<primary>kapatmak</primary>
</indexterm> isterseniz, öncelikle root haklarına sahip olmanız
gerekmekte. Bunun için başka bir terminale geçip root olarak giriş
yapabilir veya "su" komutunu kullanabilirsiniz. Bu komut sizden root
şifresini isteyecek ve doğru girdiğiniz zaman size root yetkisi
verecektir:</para>
<programlisting>captain@seaheaven ~ $ <command>su -</command>
Password: <emphasis>(Enter root password)</emphasis>
root@seaheaven ~ # </programlisting>
<para>Şimdi `shutdown` komutunu kullanarak sistemi kapatabilir (-h) veya yeniden başlatabilirsiniz
<indexterm>
<primary>yeniden başlatma</primary>
</indexterm> (-r):</para>
<programlisting>root@seaheaven ~ # <command>shutdown -h now</command></programlisting>
</section>
</section>
<section>
<title>Yardım Almak</title>
<para>Linux başta biraz karmaşık görünebilir, özellikle yeni başlayan kullanıcıların kullandığı komutlar ile ileri düzey kullanıcıların kullandıkları komutların aynı olmasından dolayı. Bu kitap gibi kaynaklar kullanıcılara yardım edebilir, ve er ya da geç her kullanıcı başvuracağı bir yardım kaynağına ihtiyaç duyacaktır. Linux'da başvuracak kaynak hiç de az değildir...</para>
<section>
<title>Klavuz (Man) Sayfaları</title>
<para><emphasis>Klavuz sayfaları</emphasis><indexterm>
<primary>klavuz sayfası</primary>
</indexterm> Linux sisteminin içinde bulunur ve <command>man</command><indexterm>
<primary>man</primary>
</indexterm> komutu ile ulaşılabilir. <command>man</command> komutunun
ardından bir komutu yazarak o komut hakkında bilgi alabilirsiniz:
Komutun ne işe yaradığı, nasıl kullanılması gerektiği, hangi dosya
veya komutlar ile ilişkisi olduğu vs.</para>
<para>Yardım sayfaları şu yapıdadır:</para>
<itemizedlist>
<listitem>
<para>komutun tek satırlık açıklama ile birlikte ismi</para>
</listitem>
<listitem>
<para>komutun özeti, hangi seçenekler ile kullanılabileceği</para>
</listitem>
<listitem>
<para>her birinin açıklaması ile komutun seçenekleri</para>
</listitem>
<listitem>
<para>komut hakkında kullanım kısıtlamaları veya öntanımlı davranışı gibi daha detaylı bilgi</para>
</listitem>
<listitem>
<para>telif ve sahiplik hakları</para>
</listitem>
<listitem>
<para>ilgili yardım sayfaları</para>
</listitem>
</itemizedlist>
<para>Yardım sayfaları sadece komutlar için değil; dosyalar (sistem veya
aygıt dosyaları), sistem çağrıları ve kütüphane fonksiyonları
(programlama ile alakalı bilgiler) hatta standartlar ve sözleşmeler ile
ilgili dahi olabilir. Bu başlıklar eşlik eden numaralar ile beraber
aşağıdaki kategorilere ayrılmıştır:</para>
<orderedlist>
<listitem>
<para>kullanıcı komutları</para>
</listitem>
<listitem>
<para>sistem çağrıları</para>
</listitem>
<listitem>
<para>kütüphane fonksiyonları</para>
</listitem>
<listitem>
<para>özel dosyalar (aygıt dosyaları)</para>
</listitem>
<listitem>
<para>dosya biçimleri ve protokolleri</para>
</listitem>
<listitem>
<para>oyunlar ve eğlenceli programlar</para>
</listitem>
<listitem>
<para>genel bakış, sözleşmeler ve ilgili başlıklar</para>
</listitem>
<listitem>
<para>yönetimle ilgili ve ayrıcalıklı komutlar</para>
</listitem>
</orderedlist>
<para>Bu bölümler hakkında bilgi için her bölüm hakkındaki tanıtım
(intro) sayfasını açın. Örneğin oyunlar bölümünün tanıtım sayfasına
<command>man 6 intro</command> komutu ile ulaşabilirsiniz. Hangi bölümün
ne işe yaradığını bilmek önemli olabilir, özellikle de aynı başlık
birden fazla kategoride bulunmaktaysa. Bu duruma örnek olarak passwd
verilebilir: passwd komutu için bir yardım sayfası (<command>man 1 passwd
</command>) ve passwd dosyası için başka bir yardım sayfası (<command>
man 5 passwd</command>) bulunmaktadır. Eğer numara belirtmeden
yazarsanız, sıralamada önce gelen yardım sayfası açılacaktır (bu örnekte
ilk bölüm).</para>
<para>Yardım sayfasının içindeyken, yukarı/aşağı ok tuşları ve PgUp/PgDn tuşları ile gezinebilirsiniz. Ayrıca istediğiniz bir yazıyı aratabilirsiniz ( / karakterine basıp arkasından aramak istediğiniz metni girin). Yardım sayfası izleyicisinin (çoğu sistemde <command>less</command><indexterm>
<primary>less</primary>
</indexterm>) komutları hakkındaki tam açıklamayı 'h' tuşuna basarak görebilirsiniz.</para>
<para>Yardım sayfasından çıkmak için ise 'q' tuşuna basın.</para>
</section>
<section>
<title>Bilgi Sayfaları</title>
<para>Sistemde bir diğer başvuracağınız kaynak da bilgi (
<command>info</command><indexterm>
<primary>bilgi</primary>
</indexterm>) sayfası yardım sistemidir. <command>info</command> aracı
hiyerarşik olarak (üst/alt bölüm, sonraki sayfa vs.) ve bağlantılar
kullanarak bilgi sayfaları arasında gezmenizi sağlar.</para>
<para>GCC'nin bilgi sayfalarına bir göz atalım:</para>
<programlisting>~$ <command>info gcc</command>
...
File: gcc.info, Node: Top, Next: G++ and GCC, Up: (DIR)
Introduction
************
This manual documents how to use the GNU compilers, as well as their
features and incompatibilities, and how to report bugs. It corresponds
to GCC version 4.1.2. The internals of the GNU compilers, including
how to port them to new targets and some information about how to write
...</programlisting>
<para>At the top of the info page you find where you are in the sequence
of documents (as this is the first page, there is no real previous
section nor upwards section). The next topic (which you can go to by
pressing <command>n</command>) is "G++ and GCC".</para>
<para>Inside the text you will find text snippets following by two
colons:</para>
<programlisting>* G++ and GCC:: You can compile C or C++ programs.
* Standards:: Language standards supported by GCC.
* Invoking GCC:: Command options supported by `gcc'.
* C Implementation:: How GCC implements the ISO C specification.
* C Extensions:: GNU extensions to the C language family.
* C++ Extensions:: GNU extensions to the C++ language.
* Objective-C:: GNU Objective-C runtime features.</programlisting>
<para>These texts are links which allow you to jump to that topic. Go
with the cursor to "Invoking GCC" and press return:</para>
<programlisting>File: gcc.info, Node: Invoking GCC, Next: C Implementation, Prev: Standards, Up: Top
3 GCC Command Options
*********************
When you invoke GCC, it normally does preprocessing, compilation,
assembly and linking. The "overall options" allow you to stop this
process at an intermediate stage. For example, the `-c' option says
not to run the linker. Then the output consists of object files output
by the assembler.</programlisting>
<para>Şu anda "Invoking GCC" bölümündesiniz. Sonraki
(<command>n</command>) bölüm "C Implementation", önceki
(<command>p</command>) ise "Standards". Eğer yukarı
(<command>u</command>) giderseniz bilgi sayfasının tepesini tekrar
görürsünüz.</para>
<para>Bilgi sayfaları birçok GNU projesinde (örneğin GCC) gayet iyi
biçimde kullanılmıştır. Yine de yardım (man) sayfaları daha popülerdir,
muhtemelen bunun sebebi de geliştiricilerin yardım sayfayı yazmayı daha
kolay bulması.</para>
</section>
<section>
<title>Acil Sözdizimi Yardımı</title>
<para>Eğer bir komutun açıklamasını değil de nasıl kullanılacağını
öğrenmek istiyorsanız, birçok komutta <command>-h</command> veya
<command>--help</command> parametresini kullanabilirsiniz:</para>
<programlisting>$ <command>man -h</command>
man, version 1.6e
usage: man [-adfhktwW] [section] [-M path] [-P pager] [-S list]
[-m system] [-p string] name ...
a : find all matching entries
c : do not use cat file
d : print gobs of debugging information
D : as for -d, but also display the pages
f : same as whatis(1)
h : print this help message
k : same as apropos(1)
K : search for a string in all pages
t : use troff to format pages for printing
w : print location of man page(s) that would be displayed
(if no name given: print directories that would be searched)
W : as for -w, but display filenames only
C file : use `file' as configuration file
M path : set search path for manual pages to `path'
P pager : use program `pager' to display pages
S list : colon separated section list
m system : search for alternate system's man pages
p string : string tells which preprocessors to run
e - [n]eqn(1) p - pic(1) t - tbl(1)
g - grap(1) r - refer(1) v - vgrind(1)</programlisting>
</section>
<section>
<title>Paket İle Sağlanan Belgeler</title>
<para>Bazı paketler daha fazla belge (HTML, PDF veya diğer türde)
sağlıyor olabilir. Bu belgelerin çoğunu <filename>/usr/share/doc
</filename> altında bulabilirsiniz. Gentoo Linux belgeleri <command>bzip2</command> veya <command>gzip</command> (ikisi de Unix dünyasında iyi
bilinen sıkıştırma araçlarıdır) kullanarak sıkıştırır. Bu yüzden bu
dosyalara göz atmak için önce izniniz olan bir dizine genişletmeniz
gerekmekte.</para>
<para>Örneğin zip paketi aracın sıkıştırma için hangi algoritmayı kullandığını açıklayan belgeye sahip:</para>
<programlisting>$ <command>cd /usr/share/doc/zip-*</command>
$ <command>ls</command>
algorith.txt.bz2 BUGS.bz2 CHANGES.bz2 MANUAL.bz2
README.bz2 timezone.txt.bz2 txtvsbin.txt.bz2 WHATSNEW.bz2
WHERE.bz2 ziplimit.txt.bz2
$ <command>bunzip2 -c algoritm.txt.bz2 &gt; ~/algorithm.txt</command></programlisting>
<para>Sonuçta oluşan dosya, <filename>algorithm.txt</filename>, ev dizininde bulunabilir (<filename>~</filename><indexterm>
<primary>~</primary>
</indexterm> kullanıcının ev dizinini işaret eder). Bu örnekte dosya
basit bir yazı dosyası ve <command>less</command> komutu ile
incelenebilir</para>
<para>Yukardaki örnekte bir yönlendirme kullanıldı: Bir komutun çıktısı (
<command>bunzip2 -c algorithm.txt.bz2</command>) ekranda görünmek yerine
bir dosyaya (<filename>algorithm.txt</filename>)aktarıldı. Yönlendirmeyi
ileri bölümlerde detaylı olarak göreceğiz.</para>
</section>
<section>
<title>Çevrimiçi Belgeler</title>
<para>Birçok proje geniş yardım belgesi desteği içerir. Yardım almak
için projenin web sayfasına giderek veya arama yaparak hakkında yazılmış
belgelere ulaşabilirsiniz. Çoğu kez en güzel belgeler projenin sahipleri
tarafından değil, deneyimli kullanıcıları tarafından yazılır.</para>
</section>
</section>
<section>
<title>Alıştırmalar</title>
<orderedlist>
<listitem>
<para>Ev dizininizi mantıksal bölümler halinde düzenlemeye çalışın.
Örneğin kişisel belgeleriniz, resimleriniz, işle alakalı belgeleriniz
ve geçici dosyalarınız için dizinler oluşturun.</para>
</listitem>
<listitem>
<para>icrosoft Windows'da yaygın olan Zip sıkıştırması da dahil olmak
üzere, Unix/Linux sistemler genelde dört sıkıştırma yöntemi sunar.
"GZip" ve "BZip2" tar ile birlikte kullanılır. Peki nasıl birlikte
kullanılır bu sıkıştırma yöntemleri, ayrıca dördüncü yöntem nedir?</para>
</listitem>
<listitem>
<para>Belirttiğimiz gibi, Unix/Linux sistemlerde geri alma gibi bir
seçenek bulunmamakta. Yani bir dosyayı sildiğiniz zaman, dosya
silinmiştir. Ancak dosya silmenin teknik olarak doğasından dolayı, bir
dosya silinse bile diskte kalır, ta ki diskte o bölüme başka bir veri
yazılana kadar. Linux'da veri kurtarma uygulamalarına örnekler bulmaya
çalışın.</para>
</listitem>
</orderedlist>
</section>
<section>
<title>Ek Kaynaklar</title>
<itemizedlist>
<listitem>
<para><ulink
url="http://www.tldp.org/LDP/intro-linux/html/index.html">Introduction
to Linux, A Hands-On Guide</ulink> by Machtelt Garrels (<ulink
url="http://www.tldp.org/LDP/intro-linux/intro-linux.pdf">PDF</ulink> olarak da bulunmakta, İngilizce)</para>
</listitem>
</itemizedlist>
</section>
</chapter>