Linux’ta Dizinleri Listeleme: Başlayanlar ve Sistem Yöneticileri için Kapsamlı Rehber
Linux’te çalışmak genellikle geniş bir kütüphaneyi gezinmek gibi hissettirir. Raflar yerine dizinleriniz (klasörleriniz) vardır ve kitaplar yerine dosyalarınız vardır. İster deneyimli bir sistem yöneticisi, ister bir geliştirici, ister yeni başlayan meraklı bir başlangıç yapan biri olun, dosya sistemi navigasyonunun temellerini öğrenmek kaçınılmazdır. En kritik temel becerilerden biri, dizinleri verimli ve doğru bir şekilde nasıl listeleyeceğinizi bilmektir.
Bu rehber, Linux’ta dizinleri listelemenin her pratik yönteminde sizi yönlendirir, her yaklaşımın güçlü ve sınırlamalarını açıklar ve hangi aracı ne zaman kullanacağınızı tam olarak gösterir — komut dosyaları ve üretim sunucu ortamları dahil.
Dizinleri Listelemenin Neden Önemli Olduğu
Kişisel bir bilgisayarda, ara sıra “Belgeler” veya “İndirmeler” klasörünüzü grafik bir arayüz aracılığıyla gezebilirsiniz. Ancak bir Linux sunucusunda, dizinler neredeyse gerçekleştireceğiniz her yönetim görevinin merkezindedir:
- Sistem yönetimi:
/etc/,/var/log/veya/usr/local/bin/içinde neler yaşadığını hızlı bir şekilde denetleyin. - Web barındırma:
/var/www/veya/home/altında proje klasörlerini bulun ve yönetin. - Yazılım geliştirme:
.git/veya.venv/gibi sürüm kontrol ve ortam dizinlerini tanımlayın. - Güvenlik denetimi: Sistemde tam olarak neyin yüklü, yapılandırılmış ve çalışır durumda olduğunu doğrulayın.
- Otomasyon ve komut dosyası: Shell komut dosyaları ve cron işleri için kullanılmak üzere dizinleri güvenilir bir şekilde numaralandırın.
Dizinleri verimli bir şekilde listeleyemezseniz, özellikle grafik dosya yöneticisine geri dönüş yapamayacağınız uzak bir VPS Barındırma ortamında her zaman desoriente hissedeceksiniz.
Yöntem 1: ls Komutu — Hızlı ve Basit
ls komutu, bir dizinin içeriğini görüntülemek için varsayılan araçtır. Çoğu Linux kullanıcısının öğrendiği ilk komuttur ve iyi bir nedeni vardır: hızlı, insan tarafından okunabilir ve her Unix benzeri sistemde mevcuttur.
Temel kullanım
lsBu, geçerli çalışma dizinindeki tüm gizli olmayan dosyaları ve dizinleri listeler.
Yalnızca dizinleri listeleyin
ls -d */Her bir parçanın ne yaptığı aşağıda açıklanmıştır:
-d—lskomutuna alt dizinlere inmemesini, bunun yerine dizin girdilerini listelemesini söyler.*/— Geçerli klasördeki tüm dizinleri (ve dizinlere sembolik bağlantıları) eşleştiren bir shell glob deseni.
Dizinleri ayrıntılı bilgilerle listeleyin
ls -ld */-l eklemek, aşağıdakileri içeren uzun bir listeleme biçimi verir:
- Dosya izinleri
- Sabit bağlantı sayısı
- Sahip ve grup
- Dosya boyutu
- Son değiştirilme zaman damgası
Örnek çıktı:
drwxr-xr-x 3 root root 4096 Jun 10 14:22 backups/
drwxr-xr-x 5 www-data www-data 4096 Jun 12 09:15 html/
drwxr-xr-x 2 deploy deploy 4096 Jun 11 18:03 logs/Sınırlama: Gizli dizinler hariç tutulur
*/ glob, gizli dizinlerle eşleşmez — adları bir nokta (.) ile başlayanlar, örneğin .git/, .ssh/ veya .config/. Bu, özellikle güvenliğe duyarlı ortamlarda önemli bir uyarıdır.
ls -d */ ne zaman kullanılır: Yalnızca görünür dizinlere ihtiyaç duyduğunuz ve komut dosyası güvenilirliği gerektirmeyen hızlı, etkileşimli kontroller.
Yöntem 2: find Komutu — Güçlü ve Güvenilir
find komutu, dizinleri numaralandırmak için profesyonelin seçimidir. ls komutundan farklı olarak, programlı kullanım için tasarlanmıştır, özyinelemeli geçişi destekler, gizli dizinleri varsayılan olarak içerir ve farklı Linux dağıtımları ve yerel ayarlar arasında tutarlı davranır.
Tüm dizinleri özyinelemeli olarak listeleyin
find . -type d.— Geçerli dizinden başlayın.-type d— Yalnızca dizin girdilerini eşleştirin (dosyalar, sembolik bağlantılar veya diğer türler değil).
Bu, geçerli konumunuzun altındaki her derinlik seviyesinde her dizini özyinelemeli olarak listeleyecektir.
Yalnızca üst düzey dizinleri listeleyin (taşınabilir yöntem)
find . -mindepth 1 -maxdepth 1 -type d-mindepth 1— Geçerli dizinin kendisini (.) sonuçlardan hariç tutar.-maxdepth 1— Doğrudan alt öğelerin ötesinde özyinelemeyi engeller.
Bu, geçerli klasörün yalnızca doğrudan alt dizinlerini listelemenin en taşınabilir ve güvenilir yoludur ve GNU/Linux, macOS ve BSD sistemlerinde aynı şekilde çalışır.
GNU/Linux sistemleri için alternatif
Dedicated Servers üzerinde çalışan olanlar da dahil olmak üzere çoğu modern Linux dağıtımında şunları da kullanabilirsiniz:
find . -maxdepth 1 -type dBunun çıktıya . kendisini dahil edeceğini unutmayın. Bunu temiz bir şekilde hariç tutmak için -mindepth 1 ile birlikte -maxdepth 1 kullanın.
Gizli dizinleri dahil edin
find komutunun shell glob’lara güvenmediği için, gizli dizinleri otomatik olarak içerir:
find . -mindepth 1 -maxdepth 1 -type dBu, .git/, .ssh/, .config/ ve görünür olanlarla birlikte diğer nokta ön eki olan dizinleri gösterecektir.
Komut dosyalarında find kullanın
find, shell komut dosyası oluşturmak için doğru araçtır çünkü:
- Boşluk ve özel karakterler içeren dosya adlarını güvenli bir şekilde işler.
- Yerel ayar ayarlarından veya terminal renk yapılandırmalarından etkilenmez.
- Tutarlı, ayrıştırılabilir çıktı üretir.
Örnek: Tüm üst düzey dizinler üzerinde döngü yapın
find . -mindepth 1 -maxdepth 1 -type d | while read -r dir; do
echo "Processing: $dir"
donefind ne zaman kullanılır: Gizli dizinlerin dahil edilmesi, özyinelemeli sonuçlar veya komut dosyası oluşturma ve otomasyon için güvenilir çıktı gerektiğinde.
Yöntem 3: tree Komutu — Görsel Dizin Haritaları
tree komutu, dizin yapınızın görsel, hiyerarşik bir haritasını oluşturur. Tüm dağıtımlarda varsayılan olarak yüklü değildir, ancak belgeleme, işe alım ve karmaşık proje düzenlerini anlamak için son derece kullanışlıdır.
tree yükleyin
Debian/Ubuntu:
sudo apt install treeCentOS/RHEL/AlmaLinux:
sudo yum install treeYalnızca dizinleri listeleyin (dosya yok)
tree -dÇıktıyı ezici olmaktan kurtarmak için derinliği sınırlayın
tree -d -L 2-d— Yalnızca dizinleri göster.-L 2— Ekranı 2 seviye derinliğe sınırla.
Örnek çıktı:
.
├── backups
│ └── daily
├── html
│ ├── assets
│ └── uploads
└── logsGizli dizinleri dahil edin
tree -d -atree ne zaman kullanılır: Proje yapılarını görselleştirme, belgeleme yazma veya ilk kez unfamiliar bir sunucu düzenini keşfetme.
Yöntem 4: ls -l | grep "^d" Neden Kaçınmalısınız
Çevrimiçi olarak bu deseni önerilen bazen göreceksiniz:
ls -l | grep "^d"Fikir, bir dizini gösteren ls komutunun uzun listeleme çıktısını filtrelemektir — d ile başlayan satırlar. Bu akıllıca görünse de, temelde kırılgan ve herhangi bir ciddi bağlamda kaçınılmalıdır:
| Sorun | Açıklama |
|---|---|
| Yerel ayar duyarlılığı | Bazı yerel ayarlar veya terminal yapılandırmaları ls -l çıktı biçimini değiştirir ve grep deseni bozar. |
| Renk kodları | ls ANSI renk kaçış kodlarını çıktılarsa, ^d deseni eşleşmeyebilir. |
| Gizli dizinler | ls -d */ ile olduğu gibi gösterilmez. |
| Sembolik bağlantılar | Dizinlere işaret eden sembolik bağlantılar l olarak gösterilir, d değil, bu nedenle sessizce hariç tutulur. |
| Komut dosyası güvenilirliği | Komut dosyalarında ls çıktısını ayrıştırmak, shell komut dosyası en iyi uygulamalarında açıkça önerilmez. |
Bunun yerine find kullanın. Bu görev için özel olarak tasarlanmıştır ve yukarıdaki tüm tuzakları önler.
Hızlı Referans: Doğru Yöntemi Seçme
| Hedef | En İyi Komut |
|---|---|
| Hızlı etkileşimli kontrol (yalnızca görünür dizinler) | ls -d */ |
| İzinler ile ayrıntılı listeleme | ls -ld */ |
| Gizli olanlar dahil üst düzey dizinler | find . -mindepth 1 -maxdepth 1 -type d |
| Tüm dizinler özyinelemeli olarak | find . -type d |
| Görsel ağaç yapısı | tree -d |
