Linux, açık kaynak kodlu ve özgür bir işletim sistemi çekirdeği olup, GNU projesi ile birleşerek tam teşekküllü işletim sistemleri (GNU/Linux dağıtımları) oluşturmuştur. Günümüzde sunuculardan akıllı telefonlara (Android), süper bilgisayarlardan gömülü sistemlere kadar birçok alanda karşımıza çıkmaktadır. Linus Torvalds tarafından 1991 yılında geliştirilmeye başlanan Linux, hızla büyüyen bir geliştirici topluluğu sayesinde dünyanın en güçlü ve esnek işletim sistemlerinden biri haline gelmiştir.
Neden Linux Kullanmalıyız?
Linux'un popülaritesi sadece teknik üstünlüklerinden değil, aynı zamanda felsefesinden de gelmektedir. İşte başlıca avantajları:
Temel Kavramlar ve Komut Satırı Arayüzü (CLI)
Linux dünyasına adım atarken karşılaşacağınız en önemli araçlardan biri Komut Satırı Arayüzü (CLI) veya yaygın adıyla Terminal'dir. Grafiksel arayüzler (GUI) birçok görevi kolaylaştırsa da, CLI çok daha güçlü, verimli ve çoğu zaman otomasyon için vazgeçilmezdir. Tüm temel Linux bilgilerini öğrenmenin en iyi yolu terminal kullanmaktır.
1. Dosya Sistemi Hiyerarşisi (FHS)
Linux'ta her şey bir dosyadır. Dosya sistemi, tüm dosyaların ve dizinlerin düzenlendiği mantıksal bir yapıdır. Windows'taki C:, D: sürücülerinin aksine, Linux'ta tek bir kök dizin (`/`) bulunur ve diğer her şey bu dizinin altına yerleştirilir. İşte bazı önemli dizinler:
2. Temel Komutlar
Terminalde çalışırken kullanacağınız en sık komutlardan bazıları şunlardır:
* `pwd` (Print Working Directory): Şu an bulunduğunuz dizinin tam yolunu gösterir.
* `ls` (List): Bulunduğunuz dizindeki dosya ve dizinleri listeler. Çok sayıda parametresi vardır.
* `cd` (Change Directory): Dizinler arasında geçiş yapmanızı sağlar.
* `mkdir` (Make Directory): Yeni bir dizin oluşturur.
* `rmdir` (Remove Directory): Boş bir dizini siler.
* `touch`: Boş bir dosya oluşturur veya mevcut bir dosyanın zaman damgasını günceller.
* `cp` (Copy): Dosya ve dizinleri kopyalar.
* `mv` (Move): Dosya ve dizinleri taşır veya yeniden adlandırır.
* `rm` (Remove): Dosya ve dizinleri siler.
Uyarı: `rm -rf` komutu geri alınamaz bir işlemdir. Kullanırken son derece dikkatli olun!
* `cat` (Concatenate): Dosya içeriğini görüntüler veya dosyaları birleştirir.
* `less` / `more`: Büyük dosyaların içeriğini sayfa sayfa görüntülemek için kullanılır.
* `head` / `tail`: Bir dosyanın başlangıcını veya sonunu görüntüler.
* `man` (Manual): Komutların kullanım kılavuzlarını görüntüler. Her Linux kullanıcısının dostudur.
3. Dosya İzinleri
Linux'ta her dosya ve dizinin belirli erişim izinleri vardır. Bu izinler, kimin ne yapabileceğini (okuma, yazma, çalıştırma) kontrol eder. `ls -l` komutuyla izinleri görebilirsiniz:
İlk karakter dosya tipini belirtir (`-` dosya, `d` dizin). Sonraki 9 karakter üç gruba ayrılır:
* Sahip (Owner): Dosyayı oluşturan kullanıcı.
* Grup (Group): Dosyanın ait olduğu grup.
* Diğerleri (Others): Sistemin diğer tüm kullanıcıları.
Her grup için üç izin vardır: r (okuma - read), w (yazma - write), x (çalıştırma - execute). Sayısal olarak (oktal mod) da temsil edilebilirler: r=4, w=2, x=1. Örneğin, 755 (rwx r-x r-x) sahibi için tam izin, grup ve diğerleri için okuma ve çalıştırma izni anlamına gelir.
* `chmod` (Change Mode): Dosya izinlerini değiştirir.
* `chown` (Change Owner): Dosya sahibini ve/veya grubunu değiştirir.
4. Kullanıcı ve Yetki Yönetimi
Linux çok kullanıcılı bir sistemdir. Kullanıcıları ve onların yetkilerini yönetmek önemlidir.
* `sudo` (SuperUser DO): Belirli komutları root (süper kullanıcı) yetkileriyle çalıştırmanıza olanak tanır. Çoğu sistem yönetimi görevi için `sudo` kullanmanız gerekir.
* `su` (Switch User): Başka bir kullanıcıya veya root'a geçmenizi sağlar.
5. Paket Yönetimi
Linux'ta yazılım yüklemek, güncellemek ve kaldırmak için paket yöneticileri kullanılır. Dağıtıma göre farklılık gösterirler:
* Debian/Ubuntu tabanlı dağıtımlar (`.deb` paketleri): `apt` veya `apt-get`
* Red Hat/CentOS/Fedora tabanlı dağıtımlar (`.rpm` paketleri): `yum` veya `dnf`
6. Giriş/Çıkış Yönlendirme ve Borular (Pipes)
Linux'ta komutların giriş ve çıkışlarını başka bir yere yönlendirmek veya birden fazla komutu birbirine bağlamak çok güçlü bir özelliktir:
* `>` (Çıkışı dosyaya yaz): Bir komutun çıktısını bir dosyaya yazar. Dosya varsa üzerine yazar.
* `>>` (Çıkışı dosyaya ekle): Bir komutun çıktısını mevcut bir dosyanın sonuna ekler.
* [b`<` (Dosyadan giriş al):[/b] Bir komutun girdisini bir dosyadan okur.
* [b`|` (Boru - Pipe):[/b] Bir komutun çıktısını diğer komutun girdisi olarak gönderir. Bu, karmaşık işlemler için çok önemlidir.
7. Metin Düzenleyiciler
Terminalde kullanabileceğiniz temel metin düzenleyiciler vardır. Yeni başlayanlar için `nano` daha kolaydır, ancak `vim` (veya Vi IMproved) çok güçlüdür ve profesyonel kullanıcılar arasında yaygındır.
* `nano`: Kullanımı basit ve anlaşılırdır. Alt kısımda kısayol tuşları gösterilir.
* `vim`: İki ana modu vardır: normal (komutlar için) ve insert (yazmak için). Çıkmak için `:q`, kaydetmek ve çıkmak için `:wq`, kaydetmeden çıkmak için `:q!` kullanılır.
8. Basit Kabuk Betikleri (Shell Scripting)
Kabuk betikleri, bir dizi komutu otomatik olarak çalıştırmak için yazılan basit programlardır. Temel otomasyon görevleri için idealdirler. Her betik genellikle bir shebang (`#!`) ile başlar, bu da betiği hangi yorumlayıcının çalıştırması gerektiğini belirtir.
Basit bir 'Merhaba Dünya' betiği:
Bu dosyayı `ilk_betik.sh` olarak kaydedip `chmod +x ilk_betik.sh` ile çalıştırılabilir yaptıktan sonra `./ilk_betik.sh` komutu ile çalıştırabilirsiniz.
Sonuç ve İleri Adımlar
Linux temellerine bu kısa giriş, sizi komut satırı ortamında rahat etmeye ve temel işlemleri yapmaya hazırlamalıdır. Linux öğrenmek bir yolculuktur ve pratik yapmak en iyi öğrenme yöntemidir. İşte daha fazla bilgi edinebileceğiniz bazı kaynaklar:
Kendinizi rahat hissettikçe daha karmaşık komutlara, kabuk betiklerine, sistem yönetimine ve ağ yapılandırmalarına geçebilirsiniz. Linux'un esnekliği ve gücü, keşfedilmeyi bekleyen sınırsız olanaklar sunar. Unutmayın, Linux öğrenmek bir maraton, sprint değil. Sabırlı olun ve her yeni komutla bilginizi pekiştirin. Başarılar dileriz!
Neden Linux Kullanmalıyız?
Linux'un popülaritesi sadece teknik üstünlüklerinden değil, aynı zamanda felsefesinden de gelmektedir. İşte başlıca avantajları:
- Açık Kaynak: Linux'un kaynak kodu herkes tarafından incelenebilir, değiştirilebilir ve dağıtılabilir. Bu, şeffaflık ve topluluk odaklı gelişimi teşvik eder.
- Güvenlik: Mimarisinden dolayı Windows'a göre daha az virüs ve kötü amaçlı yazılım saldırısına uğrar. Yetkilendirme sistemi ve düzenli güncellemeler sayesinde oldukça güvenlidir.
- Kararlılık ve Güvenilirlik: Uzun çalışma süreleri ve yüksek performans sunar. Özellikle sunucu ortamlarında tercih edilmesinin başlıca nedenidir.
- Esneklik ve Özelleştirilebilirlik: Kullanıcının ihtiyaçlarına göre kolayca özelleştirilebilir. Masaüstü ortamından çekirdek yapılandırmasına kadar her şeyi değiştirebilirsiniz.
- Maliyet Etkinliği: Çoğu Linux dağıtımı ve üzerinde çalışan yazılımlar ücretsizdir. Bu, hem bireysel kullanıcılar hem de büyük işletmeler için önemli bir avantajdır.
- Geliştirici Dostu: Yazılım geliştirme için zengin bir araç yelpazesi sunar. Birçok programlama dili ve kütüphane doğal olarak desteklenir.
Temel Kavramlar ve Komut Satırı Arayüzü (CLI)
Linux dünyasına adım atarken karşılaşacağınız en önemli araçlardan biri Komut Satırı Arayüzü (CLI) veya yaygın adıyla Terminal'dir. Grafiksel arayüzler (GUI) birçok görevi kolaylaştırsa da, CLI çok daha güçlü, verimli ve çoğu zaman otomasyon için vazgeçilmezdir. Tüm temel Linux bilgilerini öğrenmenin en iyi yolu terminal kullanmaktır.
"Bir Linux kullanıcısının gücü, komut satırını ne kadar etkin kullandığıyla doğru orantılıdır."
- Bilinmeyen
1. Dosya Sistemi Hiyerarşisi (FHS)
Linux'ta her şey bir dosyadır. Dosya sistemi, tüm dosyaların ve dizinlerin düzenlendiği mantıksal bir yapıdır. Windows'taki C:, D: sürücülerinin aksine, Linux'ta tek bir kök dizin (`/`) bulunur ve diğer her şey bu dizinin altına yerleştirilir. İşte bazı önemli dizinler:
- / (Kök Dizin): Tüm dosya sisteminin başlangıç noktasıdır.
- /bin: Temel kullanıcı komutlarını (örn. `ls`, `cp`, `mv`) içeren yürütülebilir dosyalar.
- /sbin: Sistem yönetimi için kullanılan yönetici komutlarını içeren yürütülebilir dosyalar (örn. `fdisk`, `shutdown`).
- /etc: Sistem çapında yapılandırma dosyaları (örn. ağ ayarları, kullanıcı bilgileri).
- /home: Kullanıcıların kişisel dosyalarını içeren dizinler (örn. `/home/kullaniciadi`).
- /usr: Kullanıcı programları ve yardımcı programları için dosyalar (örn. `/usr/bin`, `/usr/lib`).
- /var: Değişken verileri (örn. log dosyaları, spool dosyaları, geçici dosyalar) içerir.
- /tmp: Geçici dosyalar için dizin, sistem yeniden başlatıldığında genellikle temizlenir.
- /dev: Donanım aygıtları için dosya sistemindeki girişler (örn. diskler, terminaller).
- /proc: Çalışan işlemler ve sistem bilgileri hakkında sanal dosyalar içerir.
- /media: Çıkarılabilir ortamlar (CD/DVD, USB diskler) için bağlantı noktası.
2. Temel Komutlar
Terminalde çalışırken kullanacağınız en sık komutlardan bazıları şunlardır:
* `pwd` (Print Working Directory): Şu an bulunduğunuz dizinin tam yolunu gösterir.
Kod:
pwd
# Çıktı: /home/kullaniciadi
* `ls` (List): Bulunduğunuz dizindeki dosya ve dizinleri listeler. Çok sayıda parametresi vardır.
Kod:
ls # Mevcut dizini listeler
ls -l # Detaylı liste görünümü (izinler, sahip, boyut, tarih)
ls -a # Gizli dosyaları da gösterir (nokta ile başlayanlar)
* `cd` (Change Directory): Dizinler arasında geçiş yapmanızı sağlar.
Kod:
cd Documents # Documents dizinine gider
cd .. # Bir üst dizine döner
cd ~ # Ana dizine (home directory) döner
cd /var/log # Doğrudan /var/log dizinine gider
* `mkdir` (Make Directory): Yeni bir dizin oluşturur.
Kod:
mkdir yeni_dizin
mkdir -p proje/src/main # Alt dizinleri de oluşturur
* `rmdir` (Remove Directory): Boş bir dizini siler.
Kod:
rmdir bos_dizin
* `touch`: Boş bir dosya oluşturur veya mevcut bir dosyanın zaman damgasını günceller.
Kod:
touch yeni_dosya.txt
* `cp` (Copy): Dosya ve dizinleri kopyalar.
Kod:
cp dosya.txt yeni_dosya.txt # Dosyayı kopyala
cp -r kaynak_dizin hedef_dizin # Dizini ve içeriğini kopyala (-r recursive)
* `mv` (Move): Dosya ve dizinleri taşır veya yeniden adlandırır.
Kod:
mv eski_ad.txt yeni_ad.txt # Yeniden adlandır
mv dosya.txt hedef_dizin/ # Taşı
* `rm` (Remove): Dosya ve dizinleri siler.
Kod:
rm silinecek_dosya.txt # Dosyayı sil
rm -r silinecek_dizin/ # Dizini ve içeriğini sil (dikkatli olun!)
rm -rf tehlikeli_dizin/ # Uyarı almadan zorla sil (Çok Tehlikeli!)
* `cat` (Concatenate): Dosya içeriğini görüntüler veya dosyaları birleştirir.
Kod:
cat dosya.txt
cat dosya1.txt dosya2.txt > birlesik.txt
* `less` / `more`: Büyük dosyaların içeriğini sayfa sayfa görüntülemek için kullanılır.
Kod:
less buyuk_log_dosyasi.log
* `head` / `tail`: Bir dosyanın başlangıcını veya sonunu görüntüler.
Kod:
head dosya.txt # İlk 10 satırı gösterir
tail -n 20 dosya.txt # Son 20 satırı gösterir
* `man` (Manual): Komutların kullanım kılavuzlarını görüntüler. Her Linux kullanıcısının dostudur.
Kod:
man ls
man cd
3. Dosya İzinleri
Linux'ta her dosya ve dizinin belirli erişim izinleri vardır. Bu izinler, kimin ne yapabileceğini (okuma, yazma, çalıştırma) kontrol eder. `ls -l` komutuyla izinleri görebilirsiniz:
Kod:
-rw-r--r-- 1 kullanici grup 1234 May 10 10:00 dosya.txt
drwxr-xr-x 2 kullanici grup 4096 May 10 10:00 dizin/
İlk karakter dosya tipini belirtir (`-` dosya, `d` dizin). Sonraki 9 karakter üç gruba ayrılır:
* Sahip (Owner): Dosyayı oluşturan kullanıcı.
* Grup (Group): Dosyanın ait olduğu grup.
* Diğerleri (Others): Sistemin diğer tüm kullanıcıları.
Her grup için üç izin vardır: r (okuma - read), w (yazma - write), x (çalıştırma - execute). Sayısal olarak (oktal mod) da temsil edilebilirler: r=4, w=2, x=1. Örneğin, 755 (rwx r-x r-x) sahibi için tam izin, grup ve diğerleri için okuma ve çalıştırma izni anlamına gelir.
* `chmod` (Change Mode): Dosya izinlerini değiştirir.
Kod:
chmod 755 script.sh # Scripti çalıştırılabilir yapar
chmod u+x script.sh # Sadece sahibine çalıştırma izni ekler
chmod go-w dosya.txt # Grup ve diğerlerinden yazma iznini kaldırır
* `chown` (Change Owner): Dosya sahibini ve/veya grubunu değiştirir.
Kod:
chown yeni_kullanici dosya.txt
chown :yeni_grup dosya.txt
chown yeni_kullanici:yeni_grup dosya.txt
4. Kullanıcı ve Yetki Yönetimi
Linux çok kullanıcılı bir sistemdir. Kullanıcıları ve onların yetkilerini yönetmek önemlidir.
* `sudo` (SuperUser DO): Belirli komutları root (süper kullanıcı) yetkileriyle çalıştırmanıza olanak tanır. Çoğu sistem yönetimi görevi için `sudo` kullanmanız gerekir.
Kod:
sudo apt update # Paket listelerini güncelle (Debian/Ubuntu)
sudo useradd yeni_kullanici # Yeni kullanıcı ekle
* `su` (Switch User): Başka bir kullanıcıya veya root'a geçmenizi sağlar.
Kod:
su - # Root kullanıcısına geçer
su kullanici2 # kullanici2'ye geçer
5. Paket Yönetimi
Linux'ta yazılım yüklemek, güncellemek ve kaldırmak için paket yöneticileri kullanılır. Dağıtıma göre farklılık gösterirler:
* Debian/Ubuntu tabanlı dağıtımlar (`.deb` paketleri): `apt` veya `apt-get`
Kod:
sudo apt update # Paket listelerini günceller
sudo apt upgrade # Yüklü paketleri günceller
sudo apt install firefox # Firefox'u yükler
sudo apt remove firefox # Firefox'u kaldırır
sudo apt autoremove # Bağımlılıkları kaldırır
* Red Hat/CentOS/Fedora tabanlı dağıtımlar (`.rpm` paketleri): `yum` veya `dnf`
Kod:
sudo dnf check-update # Paket listelerini günceller
sudo dnf upgrade # Yüklü paketleri günceller
sudo dnf install httpd # Apache web sunucusunu yükler
sudo dnf remove httpd # Apache web sunucusunu kaldırır
6. Giriş/Çıkış Yönlendirme ve Borular (Pipes)
Linux'ta komutların giriş ve çıkışlarını başka bir yere yönlendirmek veya birden fazla komutu birbirine bağlamak çok güçlü bir özelliktir:
* `>` (Çıkışı dosyaya yaz): Bir komutun çıktısını bir dosyaya yazar. Dosya varsa üzerine yazar.
Kod:
ls -l > dosya_listesi.txt
* `>>` (Çıkışı dosyaya ekle): Bir komutun çıktısını mevcut bir dosyanın sonuna ekler.
Kod:
echo "Bu yeni bir satır." >> dosya_listesi.txt
* [b`<` (Dosyadan giriş al):[/b] Bir komutun girdisini bir dosyadan okur.
Kod:
sort < liste.txt
* [b`|` (Boru - Pipe):[/b] Bir komutun çıktısını diğer komutun girdisi olarak gönderir. Bu, karmaşık işlemler için çok önemlidir.
Kod:
ls -l | grep .txt # Sadece .txt uzantılı dosyaları listeler
ps aux | grep firefox # Çalışan firefox süreçlerini bulur
7. Metin Düzenleyiciler
Terminalde kullanabileceğiniz temel metin düzenleyiciler vardır. Yeni başlayanlar için `nano` daha kolaydır, ancak `vim` (veya Vi IMproved) çok güçlüdür ve profesyonel kullanıcılar arasında yaygındır.
* `nano`: Kullanımı basit ve anlaşılırdır. Alt kısımda kısayol tuşları gösterilir.
Kod:
nano yeni_belge.txt
* `vim`: İki ana modu vardır: normal (komutlar için) ve insert (yazmak için). Çıkmak için `:q`, kaydetmek ve çıkmak için `:wq`, kaydetmeden çıkmak için `:q!` kullanılır.
Kod:
vim program.py
8. Basit Kabuk Betikleri (Shell Scripting)
Kabuk betikleri, bir dizi komutu otomatik olarak çalıştırmak için yazılan basit programlardır. Temel otomasyon görevleri için idealdirler. Her betik genellikle bir shebang (`#!`) ile başlar, bu da betiği hangi yorumlayıcının çalıştırması gerektiğini belirtir.
Basit bir 'Merhaba Dünya' betiği:
Kod:
#!/bin/bash
# Bu bir yorum satırıdır.
echo "Merhaba, Linux Dünyası!"
# Mevcut dizini listele ve yeni bir dizin oluştur
pwd
mkdir ilk_betik_dizini
Bu dosyayı `ilk_betik.sh` olarak kaydedip `chmod +x ilk_betik.sh` ile çalıştırılabilir yaptıktan sonra `./ilk_betik.sh` komutu ile çalıştırabilirsiniz.
Sonuç ve İleri Adımlar
Linux temellerine bu kısa giriş, sizi komut satırı ortamında rahat etmeye ve temel işlemleri yapmaya hazırlamalıdır. Linux öğrenmek bir yolculuktur ve pratik yapmak en iyi öğrenme yöntemidir. İşte daha fazla bilgi edinebileceğiniz bazı kaynaklar:
- Linux Vakfı: Linux'un gelişimine destek veren ve eğitimler sunan bir kuruluş.
- GNU Projesi Belgeleri: GNU araçları hakkında detaylı bilgi.
- Linux Man Sayfaları: Her komutun resmi kılavuzu, terminalden `man komutadı` ile erişilebilir.
- Çeşitli online kurslar ve forumlar (örn. Stack Overflow, Linux subredditleri) bilgi ve destek için harika yerlerdir.
Kendinizi rahat hissettikçe daha karmaşık komutlara, kabuk betiklerine, sistem yönetimine ve ağ yapılandırmalarına geçebilirsiniz. Linux'un esnekliği ve gücü, keşfedilmeyi bekleyen sınırsız olanaklar sunar. Unutmayın, Linux öğrenmek bir maraton, sprint değil. Sabırlı olun ve her yeni komutla bilginizi pekiştirin. Başarılar dileriz!