Takip et

Linux Sunucuda Dosya Sistemini Keşfetmek İçin cd, pwd ve ls Komutlarını Kullanma Rehberi

Linux Sunucuda Dosya Sistemini Keşfetmek İçin cd, pwd ve ls Komutlarını Kullanma Rehberi Linux sunucular, modern bilgi işlem altyapısının te

Linux Sunucuda Dosya Sistemini Keşfetmek İçin cd, pwd ve ls Komutlarını Kullanma Rehberi

Linux sunucular, modern bilgi işlem altyapısının temel taşlarından biridir. Web sitelerinden veritabanlarına, uygulama sunucularından bulut hizmetlerine kadar geniş bir yelpazede kullanılırlar. Bir Linux sunucusunu etkin bir şekilde yönetmek, sorun gidermek veya üzerinde geliştirme yapmak için dosya sistemi yapısını anlamak ve bu yapı içinde rahatça gezinebilmek hayati önem taşır. Bu rehberde, Linux dosya sistemini keşfetmek ve manipüle etmek için en temel ve en sık kullanılan üç komutu detaylı bir şekilde inceleyeceğiz: cd (change directory), pwd (print working directory) ve ls (list directory contents). Bu komutlar, her Linux kullanıcısının bilmesi gereken temel araçlardır ve bunların ustaca kullanımı, sunucu yönetimindeki verimliliğinizi önemli ölçüde artıracaktır.

Linux Dosya Sistemi Hiyerarşisi ve Temel Kavramlar

Linux, her şeyin bir dosya olduğu hiyerarşik bir dosya sistemi yapısına sahiptir. Bu yapı, tek bir kök dizin (/) ile başlar ve tüm diğer dizinler ve dosyalar bu kökün altında dallanır. Bu hiyerarşiyi anlamak, dosya sistemi içinde kaybolmamanın ilk adımıdır.

Kök Dizin (/)

Linux dosya sistemindeki her şeyin başlangıç noktasıdır. Tüm diğer dizinler ve dosyalar bu dizinin altındadır.

Temel Dizinler ve Amaçları

* /bin: Temel kullanıcı komutlarını (binary) içerir. Örneğin, ls, cp, mv gibi komutlar burada bulunur.
* /sbin: Sistem yönetimi için gerekli olan komutları (system binary) içerir. Genellikle root yetkisi gerektiren komutlardır, örneğin fdisk, reboot.
* /etc: Sistem genelindeki yapılandırma dosyalarını (configuration files) içerir. Ağ ayarları, kullanıcı hesapları, servis yapılandırmaları gibi kritik bilgiler buradadır.
* /home: Kullanıcıların kişisel dizinlerini barındırır. Her kullanıcı için ayrı bir dizin bulunur (örn: /home/kullaniciadi).
* /var: Değişken verileri (variable data) içerir. Log dosyaları (/var/log), web sunucusu dosyaları (/var/www), e-posta kuyrukları (/var/mail) gibi sürekli değişen veya büyüyen veriler buradadır.
* /tmp: Geçici dosyalar (temporary files) için kullanılır. Sistem yeniden başlatıldığında genellikle bu dizin temizlenir.
* /usr: Kullanıcı programları ve uygulamaları (UNIX System Resources) içerir. Çoğu sistem uygulamasının ikili dosyaları, kütüphaneleri ve belgeleri buradadır.
* /opt: İsteğe bağlı (optional) yazılım paketleri için kullanılır. Genellikle üçüncü taraf yazılımlar buraya kurulur.
* /dev: Cihaz dosyalarını (device files) içerir. Donanım aygıtları (sabit diskler, USB sürücüler, klavye vb.) dosyalar olarak temsil edilir.
* /proc: İşlem bilgileri (process information) için sanal bir dosya sistemidir. Çalışan süreçler ve sistem hakkında gerçek zamanlı bilgiler sağlar.
* /mnt, /media: Harici depolama aygıtlarının (USB bellekler, CD/DVD’ler) geçici olarak bağlandığı (mount edildiği) dizinlerdir.

Mutlak ve Göreceli Yollar

Dosya sistemi içinde gezinirken iki tür yol kullanırız:

* Mutlak Yol (Absolute Path): Kök dizinden (/) başlayarak bir dosya veya dizine giden tam yoldur. Nereden başlarsanız başlayın, mutlak yol her zaman aynı konumu gösterir. Örnek: /var/log/syslog.
* Göreceli Yol (Relative Path): Mevcut çalışma dizininize (Current Working Directory – CWD) göre bir dosya veya dizine giden yoldur. Örnek: Eğer /home/kullaniciadi dizinindeyseniz, documents/rapor.pdf yolu /home/kullaniciadi/documents/rapor.pdf dosyasını ifade eder.

Mevcut Çalışma Dizini (Current Working Directory – CWD)

Terminalde komut çalıştırdığınızda, o anda bulunduğunuz dizine “mevcut çalışma dizini” denir. Bu kavram, göreceli yolları kullanırken hayati önem taşır.

pwd: Mevcut Çalışma Dizinini Anlama

pwd komutu, “print working directory” kelimelerinin kısaltmasıdır ve adından da anlaşılacağı gibi, o an terminalde bulunduğunuz dizinin tam (mutlak) yolunu ekrana yazdırır.

Giriş

Bir Linux sunucusunda çalışırken, özellikle karmaşık dizin yapılarında veya farklı betikler ve komutlar çalıştırırken hangi dizinde olduğunuzu bilmek çok önemlidir. Yanlış dizinde bir komut çalıştırmak, istenmeyen sonuçlara veya hatta veri kaybına yol açabilir. pwd komutu, bu belirsizliği ortadan kaldıran basit ama güçlü bir araçtır.

Kullanım

pwd komutunun kullanımı son derece basittir:

pwd

Bu komutu çalıştırdığınızda, mevcut dizininizin mutlak yolu doğrudan terminale yazdırılacaktır.

Örnekler

Diyelim ki terminali açtınız. Genellikle başlangıçta ana dizininizde olursunuz:

pwd

Çıktı:

/home/kullaniciadi

Şimdi bir alt dizine geçelim ve tekrar pwd kullanalım:

cd documents
pwd

Çıktı:

/home/kullaniciadi/documents

Teknik Detaylar: Sembolik Bağlantılar ve pwd Seçenekleri

pwd komutunun iki ana seçeneği vardır: -P ve -L.

pwd -L (Logical): Bu varsayılan davranıştır. Eğer mevcut dizininiz bir sembolik bağlantı (symlink) ise, pwd -L sembolik bağlantının mantıksal* yolunu, yani sizin o anda gördüğünüz yolu gösterir.
pwd -P (Physical): Bu seçenek, sembolik bağlantıları çözerek dizinin gerçek* (fiziksel) yolunu gösterir.

Sembolik Bağlantı Nedir?
Sembolik bağlantı, Windows’taki “kısayol”a benzer bir yapıdır. Bir dosya veya dizine işaret eden özel bir dosya türüdür. Örneğin, /var/www/html dizininin gerçekte /srv/web/projeler/site1 dizinine işaret ettiğini varsayalım.

Örnek:

# Gerçek dizini oluşturalım
mkdir -p /srv/web/projeler/site1
cd /srv/web/projeler/site1
pwd

Çıktı: /srv/web/projeler/site1

Şimdi bir sembolik bağlantı oluşturalım

ln -s /srv/web/projeler/site1 /var/www/html

Sembolik bağlantı dizinine geçelim

cd /var/www/html

Varsayılan (mantıksal) yolu görelim

pwd

Çıktı: /var/www/html

Gerçek (fiziksel) yolu görelim

pwd -P

Çıktı: /srv/web/projeler/site1

Bu örnek, pwd -L ve pwd -P arasındaki farkı net bir şekilde göstermektedir. Sistem yöneticileri için, sembolik bağlantıların arkasındaki gerçek yolu bilmek, özellikle yedekleme, izin yönetimi veya disk alanı kullanımı gibi durumlarda kritik olabilir.

cd: Dizinler Arasında Gezinme Sanatı

cd komutu, “change directory” kelimelerinin kısaltmasıdır ve Linux dosya sistemi içinde dizinler arasında geçiş yapmanızı sağlayan en temel ve en sık kullanılan komuttur.

Giriş

cd komutu olmadan, bir Linux sunucusunda etkili bir şekilde çalışmak imkansızdır. Dosyalara erişmek, programları çalıştırmak veya yapılandırmaları değiştirmek için doğru dizine gitmeniz gerekir. cd komutu, bu navigasyon işlemini kolay ve sezgisel hale getirir.

Temel Kullanım

cd komutunun çeşitli kullanım şekilleri vardır:

* Belirli bir dizine gitmek: cd [dizin_yolu]

cd /var/log
    pwd # Çıktı: /var/log

* Ana dizine (Home Directory) gitmek:
* Sadece cd yazmak sizi ana dizininize götürür.

cd
    pwd # Çıktı: /home/kullaniciadi

* ~ (tilde) karakteri de ana dizini temsil eder.

cd ~
    pwd # Çıktı: /home/kullaniciadi

* Belirli bir kullanıcının ana dizinine gitmek için:

cd ~baskakullanici
    pwd # Çıktı: /home/baskakullanici

* Bir üst dizine gitmek: cd ..

cd /var/log/apache2
    pwd # Çıktı: /var/log/apache2
    cd ..
    pwd # Çıktı: /var/log

* Mevcut dizinde kalmak: cd . (pek kullanılmaz ama bilinmelidir)

cd .
    pwd # Çıktı: /var/log (değişmedi)

* Önceki dizine dönmek: cd -

cd /etc
    pwd # Çıktı: /etc
    cd /var/log
    pwd # Çıktı: /var/log
    cd -
    pwd # Çıktı: /etc (önceki dizine döndü)
    cd -
    pwd # Çıktı: /var/log (tekrar döndü)

Mutlak ve Göreceli Yollarla Gezinme

cd komutu ile mutlak ve göreceli yolları etkin bir şekilde kullanmak, hızlı ve verimli navigasyon için çok önemlidir.

* Mutlak Yollarla Gezinme:
Kök dizinden başlayarak tam yolu belirtirsiniz. Nerede olursanız olun, bu yol sizi her zaman aynı hedefe götürür.

cd /usr/local/bin
    cd /etc/nginx/sites-available

* Göreceli Yollarla Gezinme:
Mevcut dizininize göre bir yol belirtirsiniz. Bu, özellikle sık sık alt dizinlere girip çıkarken veya yakın konumdaki dizinlere geçerken çok kullanışlıdır.

# Diyelim ki /home/kullaniciadi/documents dizinindesiniz
    pwd # Çıktı: /home/kullaniciadi/documents

    # "reports" adında bir alt dizine gitmek
    cd reports
    pwd # Çıktı: /home/kullaniciadi/documents/reports

    # İki dizin yukarı çıkmak
    cd ../..
    pwd # Çıktı: /home/kullaniciadi

    # Başka bir alt dizine gitmek
    cd public_html/images
    pwd # Çıktı: /home/kullaniciadi/public_html/images

Kısayollar ve İpuçları

* Tab Tamamlama (Tab Completion): Bu, cd komutunu kullanırken en büyük verimlilik artırıcıdır. Bir dizin adının ilk birkaç harfini yazdıktan sonra Tab tuşuna basarsanız, kabuk (shell) adı otomatik olarak tamamlar veya birden fazla eşleşme varsa seçenekleri gösterir. Bu, yazım hatalarını azaltır ve hızı artırır.

cd /v  # /var veya /venv gibi seçenekleri gösterebilir
    cd /var/l # /var/log'u tamamlar

* Boşluk İçeren Dizin Adları: Dizin adlarında boşluk varsa, dizin adını tırnak içine almanız veya boşluktan önce ters eğik çizgi (\) kullanmanız gerekir.

mkdir "My Documents"
    cd "My Documents"
    # veya
    cd My\ Documents

* Sembolik Bağlantılarla Çalışma: cd komutu sembolik bağlantıları otomatik olarak çözer. Eğer bir sembolik bağlantı dizinine cd ile giderseniz, pwd genellikle mantıksal yolu gösterir (sembolik bağlantı yolunu). Ancak pwd -P kullanarak gerçek fiziksel yolu görebilirsiniz.

Sık Karşılaşılan Hatalar ve Çözümleri

* bash: cd: no such file or directory: Bu hata, belirtilen dizinin mevcut olmadığını veya yolu yanlış yazdığınızı gösterir.
* Çözüm: Yolu dikkatlice kontrol edin, ls ile dizinin varlığını doğrulayın ve tab tamamlamayı kullanın.
* bash: cd: Permission denied: Bu hata, belirtilen dizine erişim izninizin olmadığını gösterir.
* Çözüm: Dizinin izinlerini kontrol edin (ls -l). Gerekirse sudo veya su kullanarak root yetkisiyle erişim sağlamanız gerekebilir. Ancak dikkatli olun, root yetkisiyle yanlış işlemler yapmak ciddi sorunlara yol açabilir.

ls: Dizin İçeriklerini Listeleme

ls komutu, “list directory contents” kelimelerinin kısaltmasıdır ve bir dizinin içeriğini (dosyalar ve alt dizinler) listelemek için kullanılır. Bu, dosya sistemini keşfederken en çok kullanılan komutlardan biridir.

Giriş

ls komutu, bir dizinde ne olduğunu görmenin en hızlı yoludur. Hangi dosyaların mevcut olduğunu, hangi alt dizinlerin bulunduğunu, bunların izinlerini, sahiplerini ve boyutlarını görmek için ls ve çeşitli seçeneklerini kullanırız.

Temel Kullanım

* Mevcut dizinin içeriğini listelemek:

ls

Bu komut, mevcut dizindeki dosya ve dizinleri alfabetik sıraya göre listeler. Varsayılan olarak, gizli dosyalar (nokta ile başlayanlar) gösterilmez.
* Belirli bir dizinin içeriğini listelemek:

ls /var/log

Bu komut, /var/log dizininin içeriğini listeler, mevcut dizininiz ne olursa olsun.

Sık Kullanılan Seçenekler ve Anlamları

ls komutu, çıktısını özelleştirmek için çok sayıda seçeneğe sahiptir. İşte en sık kullanılanlar:

* -l (long format): Uzun liste formatında çıktı verir. Bu, her dosya veya dizin hakkında detaylı bilgi sağlar:
* Dosya tipi ve izinler
* Bağlantı sayısı (hard links)
* Sahip kullanıcı adı (owner)
* Sahip grup adı (group)
* Dosya boyutu (bayt cinsinden)
* Son değiştirilme tarihi ve saati
* Dosya veya dizin adı

ls -l

Örnek çıktı:

-rw-r--r-- 1 kullanici grup    1024 May 15 10:30 dosya.txt
    drwxr-xr-x 2 kullanici grup    4096 Apr 20 09:00 dizin/
    lrwxrwxrwx 1 kullanici grup      10 Mar 10 14:15 link -> hedef.txt

* -a (all): Gizli dosyalar (. ile başlayanlar) dahil olmak üzere tüm dosyaları listeler. Her dizinde bulunan . (mevcut dizin) ve .. (üst dizin) girdilerini de gösterir.

ls -a

* -h (human-readable): Dosya boyutlarını insan tarafından okunabilir formatta (KB, MB, GB gibi) gösterir. Genellikle -l ile birlikte kullanılır.

ls -lh

* -t (time): Dosyaları en son değiştirilme zamanına göre sıralar, en yeni olanlar en başta görünür.

ls -lt

* -r (reverse): Sıralamayı tersine çevirir. -t ile kullanıldığında en eski dosyalar en başta görünür.

ls -ltr

* -R (recursive): Dizinlerin içeriğini ve alt dizinlerin içeriğini de özyinelemeli olarak listeler. Büyük dizin yapıları için dikkatli kullanılmalıdır, çıktı çok uzun olabilir.

ls -R /var/www

* -d (directory): Normalde ls bir dizinin içeriğini listeler. -d seçeneği, dizinin kendisi hakkında bilgi listelemesini sağlar, içeriğini değil. Genellikle -l ile birlikte kullanılır.

ls -ld /var/log

Bu, /var/log dizininin izinlerini ve diğer özelliklerini gösterir, içindeki dosyaları listelemez.
* -F (classify): Listelenen girişlerin türünü belirtmek için sonlarına bir karakter ekler:
* / dizinler için
çalıştırılabilir dosyalar için
* @ sembolik bağlantılar için
* | FIFO (named pipe) dosyaları için
* = soket dosyaları için

ls -F

* -i (inode): Her dosya veya dizinin inode numarasını gösterir. Inode, Linux’ta bir dosya veya dizinin meta verilerini depolayan benzersiz bir tanımlayıcıdır.

ls -i

Çıktıyı Anlama (ls -l ile)

ls -l çıktısı, Linux dosya sistemi hakkında derinlemesine bilgi sağlar. Her sütunun ne anlama geldiğini anlamak önemlidir:

-rw-r--r-- 1 kullanici grup    1024 May 15 10:30 dosya.txt

1. -rw-r--r-- (İzinler ve Dosya Tipi):
* İlk karakter (-): Dosya tipini belirtir.
* -: Normal dosya
* d: Dizin
* l: Sembolik bağlantı
* c: Karakter aygıt dosyası
* b: Blok aygıt dosyası
* p: Adlandırılmış boru (pipe)
* s: Soket
* Sonraki dokuz karakter (üçerli gruplar halinde): Dosya izinlerini belirtir.
* İlk üç: Dosya sahibi (owner) için izinler (rwx = okuma, yazma, çalıştırma)
* İkinci üç: Dosya grubu (group) için izinler
* Üçüncü üç: Diğerleri (others) için izinler
2. 1 (Bağlantı Sayısı): Dosyaya kaç tane “hard link” olduğunu gösterir. Dizinler için, içerdikleri alt dizin ve dosya sayısını (nokta ve çift nokta dahil) gösterir.
3. kullanici (Sahip): Dosyanın sahibi olan kullanıcının adını gösterir.
4. grup (Grup): Dosyanın ait olduğu grubun adını gösterir.
5. 1024 (Boyut): Dosyanın boyutunu bayt cinsinden gösterir. (-h ile insan okunur formata çevrilir).
6. May 15 10:30 (Son Değişiklik Tarihi): Dosyanın en son değiştirildiği tarih ve saati gösterir.
7. dosya.txt (Dosya/Dizin Adı): Dosya veya dizinin adıdır.

Örnekler ve Kombinasyonlar

* En yeni 5 dosyayı insan okunur formatta listele:

ls -lth | head -n 6 # İlk satır toplam bilgisi olduğu için 6.

* Mevcut dizindeki tüm dosyaları (gizli olanlar dahil) uzun formatta göster:

ls -la

* Belirli bir dizindeki .conf uzantılı tüm dosyaları listele:

ls /etc/nginx/*.conf

Burada * bir “wildcard” (joker karakterdir) ve sıfır veya daha fazla karakteri temsil eder.
* Bir dizin içindeki tüm alt dizinleri ve dosyaları özyinelemeli olarak listele, ancak sadece dizinleri belirt:

ls -RF | grep "/$"

Bu komut, ls -RF çıktısını (/ ile biten dizinler dahil) grep komutuna yönlendirerek sadece dizinleri filtreler.

Gelişmiş Kullanım İpuçları

* Aliaslar (Aliases): Sık kullandığınız ls komutu kombinasyonları için takma adlar oluşturabilirsiniz. Örneğin, ll komutunu ls -lah olarak ayarlamak yaygın bir uygulamadır.

alias ll='ls -lah'

Bu komutu .bashrc veya .zshrc dosyanıza eklerseniz, her kabuk oturumunda kullanılabilir olur.
* Boru Hatları (Piping) ve Yönlendirmeler (Redirection): ls çıktısını başka komutlara yönlendirmek (|) veya bir dosyaya kaydetmek (>) çok güçlüdür.
* ls -l /var/log | grep "access.log": /var/log dizinindeki access.log içeren satırları filtreler.
* ls -R /home/kullaniciadi > ~/home_files.txt: /home/kullaniciadi altındaki tüm dosyaları ve dizinleri home_files.txt dosyasına kaydeder.

Gerçek Dünya Senaryoları ve Pratik Uygulamalar

Bu üç komutun birleşimi, çeşitli gerçek dünya senaryolarında size yardımcı olacaktır:

* Web Sunucusu Yapılandırmasını İnceleme:

cd /etc/nginx/sites-available # Nginx site yapılandırma dizinine git
    ls -l # Mevcut yapılandırma dosyalarını listele
    cd ../sites-enabled # Etkin sitelerin olduğu dizine git
    ls -l # Etkin siteleri listele (genellikle sembolik bağlantılardır)

* Log Dosyalarını Kontrol Etme:

cd /var/log # Log dizinine git
    ls -lt # En yeni log dosyalarını listele
    cd apache2 # Apache loglarına git
    ls -lh access.log # access.log dosyasının boyutunu ve bilgilerini göster

* Kullanıcı Dosyalarına Erişim:

cd ~ # Kendi ana dizininize git
    ls -a # Gizli dosyalar dahil tüm dosyaları gör (örneğin .bashrc)
    cd public_html # Web sitesi dosyalarınıza git (eğer varsa)
    ls -R # Tüm web dosyalarını ve alt dizinlerini listele

* Sistem Kaynaklarını Kontrol Etme:

cd /proc # İşlem bilgileri sanal dosya sistemine git
    ls # Çalışan her işlem için bir dizin olduğunu gör
    cd 1 # PID 1 (init/systemd) dizinine git
    ls # İşlemle ilgili bilgilere bak

Sonuç

cd, pwd ve ls komutları, bir Linux sunucusuyla etkileşim kurmak için sahip olmanız gereken temel araçlardır. pwd ile nerede olduğunuzu anlar, cd ile istediğiniz yere gidersiniz ve ls ile gittiğiniz yerde ne olduğunu görürsünüz. Bu üç komutun kombinasyonu, dosya sistemini keşfetmenize, dosyaları bulmanıza, dizin yapılarını anlamanıza ve sunucunuzu etkin bir şekilde yönetmenize olanak tanır.

Bu komutlarda ustalaşmak, Linux sistem yönetimi ve geliştirme yolculuğunuzun ilk ve en önemli adımıdır. Unutmayın, pratik yapmak en iyi öğrenme yöntemidir. Bir Linux sanal makinesi veya deneme sunucusu kurarak bu komutları ve çeşitli seçeneklerini deneyerek bilginizi pekiştirebilirsiniz. Zamanla, bu komutları kullanmak ikinci doğanız haline gelecek ve Linux dosya sistemi içinde akıcı bir şekilde gezinebileceksiniz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.