top of page

Temel bash Kabuk Komutları-2

  • Yazarın fotoğrafı: Huseyin Şahan
    Huseyin Şahan
  • 3 Mar
  • 8 dakikada okunur

Bu blog yazımız Temel bash Kabuk Komutları-1 kısmının devamı olacak ve bu bölümde dosya ve klasör arasında nasıl gezineceğinizi ve nasıl listeleyeceğiniz gibi komutları ele alacağız.Ayrıca komut çıktılarının da ne anlama geldiğini de detaylıca tartışacağız.


Dizinler Arasında Gezinme

İlk olarak ele alacağımız komutlardan biri cd komutu olacaktır.Bu komut ile dosyalar arasında geçiş yapabilirsiniz.İşte örnek bir cd(Change Directory) komutu kullanımı:

darkside@debian:~$ cd /usr/local/

Bu komut sizi /usr/local dizinine götürecektir.Ancak her zaman bir hedef belirtmenize gerek kalmayabilir.Eğer amacınız ana dizine gitmek ise:

darkside@debian:~$ cd

Komutunu hedef belirtmeden kullanırsanız bu sizi başlangıç yani ana dizininize götürecektir.


Mutlak Dizin Referansı (Absolute Directory Reference)

Mutlak dizin yolu bir dizinin tam yoludur ve kök dizinden başlar.Mutlak yolu belirtmek için /(Eğik Çizgi) ile başlatmanız gerekir.Mutlak yol ile bulunduğunuz dizin ne olursa olsun mutlaka oraya varmanızı sağlayacaktır.Örneğin şu anda ben başlangıç yani ana dizinimde bulunuyorum:

darkside@debian:~$

Burada ~ işareti bulunduğunuz başlangıç dizininizi belirtir.Bu dizine geçmek için sadece cd komutu yazabilirsiniz.


Şimdi mutlak yolu belirterek bulunduğum dizinimi değiştireceğim:

darkside@debian:~$ cd /usr/local

Burada çıktımızın sonucu işte bu olacaktır:

darkside@debian:/usr/local$

Burada fark etmiş olabilirsiniz artık ~ işaretimiz yok.Çünkü burada ana dizinimizde bulunmuyoruz.Eğer ana dizininizde bulunursanız bu işareti görebilirsiniz.


!! Uyarı

Mutlak dizin belirtirken lütfen belirttiğiniz yolun başına / işareti koyun.Bu hatasız bir biçimde bulunduğunuz yerden sizi belirttiğiniz dizine ulaştırır.Yani şunu yapmayın:


ree

Bu size hata verecektir.Eğik çizgi burada kök dizini temsil edecektir.Yani eğik çizgi sayesinde kök dizine atlayıp oradan istediğiniz dizine ulaşacaktır.Eğer ulaşmak istediğiniz dizin kök dizinden başlamıyorsa hata alırsınız.Yani burada cd /Belgeler yazmaya çalışırsanız Belgeler kök / dizinde olmadığından hata verecektir.Ancak /usr kök dizinde olduğundan sıkıntı olmayacaktır.


Ama bazen hangi dizinde bulunduğunuzu görmek için can atıyor olabilirsiniz.Bunun için pwd komutunu kullanacağız.Aklınızda kalması için ingilizce açılımı (Print Working Directory) anlamına gelir.Şimdi terminalinize giderek bu basit komutu girin:

darkside@debian:~$ pwd

Çıktı olarak size bulunduğunuz dizini gösterecektir.


Şimdi dizinler arasında geçişler yaparken bazen . veya .. şeklinde ifadeler kullanırız ve bunların ne olduğunu açıklayalım ve nasıl kullanacağımızı görelim.


Tek Nokta Kullanımı(.)

Aslında bu işaretin çok bir anlamı yoktur.Aşağıdaki kullanımı inceleyin:

darkside@debian:/usr/local$ cd .

ree

Bu komutun hiçbir anlamı yok sadece bulunduğunuz dizinde kalmanızı sağlar.Eğer bir gün arkadaşınıza şaka yapmak isterseniz bu komutu kullanabilirsiniz 🤣


İki Nokta Kullanımı(..)

İki nokta aslında bir üst dizine çıkmanızı sağlar.Tek noktadan daha işlevsel duruyor değilmi ? Şimdi çeşitli örneklerle bunu gösterelim.Aşağıdaki komutları girin ve bir üst dizine nasıl çıkacağınızı göreceksiniz.İlk olarak size bunu daha iyi açıklamak için dizin değiştirelim.Aşağıdaki komutu öğrendiğimiz gibi mutlak yol belirterek girin:

darkside@debian:~$ cd /var/www/html

Bu sizi istediğiniz dizine getirecektir.Daha sonra bakalım istediğimiz gibi çalışıyormu iki nokta işlevi ? İşte komutumuz:

darkside@debian:/var/www/html$ cd ..

Burada bir üst dizine geçmiş olmalısınız.İşte ekran görüntüsü:


ree

Burada gördüğünüz gibi bu komut bizi html klasöründen çıkarıp bir üst dizine götürdü.Şimdi başka bir örnek ile de bunu gösterelim.Örneğin terminalinizde şu komut ile belirtilen dizine gidin.

darkside@debian:~$ cd /opt

Burada /opt dizinine gittik peki bir üst dizine çıkıp var klasörüne nasıl gireriz tek komut ile işte bunu basit şekilde:

darkside@debian:/opt$ cd ../var

komutu ile yapabilirsiniz.Unutmayın !! Burada .. dan sonra istediğiniz dizinin mutlak yolunu eğik çizgi ile belirtmelisiniz aksi halde komut çalışmayacaktır.


İsterseniz birden fazlada .. nokta kullanarak dizin atlayabilirsiniz.İşte örnek bir ekran görüntüsü:



ree

Burada göründüğü gibi pwd komutu ile hangi dizindeyim diye baktımBu sizin bu komutu anlamanız için daha iyi olacaktır.Şimdi cd komutu ilk olarak ../ gördüğünde /darkside dizininden çıkar ve /home dizininde olur.Daha sonra ikinci iki noktayı görünce /home dizininden çıkar ve kök dizine / girer.Bu kök dizinden sonra cd komutu /var klasörün mutlak yolunu alır ve kök klasörden /var klasörüne girer.Bunu istediğiniz kadar kullanabilirsiniz tabii ki geçerli üst dizin mevcut varsa.Geçerli üst dizin yoksa bile cd .. komutu sizi orada tutmaya devam edecektir.


Şimdi eğlenceli bir konu olan klasör ve dosya listeleme ve buradan çıkan sonuçlar nedir ve ne anlama gelir bunları ele alıyoruz.


Dosya ve Klasör Listeleme

Aslında burada temel olarak ls komutunu ve hangi parametrelerin ne gibi çıktılar vereceğini tartışacağız o zaman terminalinize gidin ve şu komutu çalıştırın:

darkside@debian:~$ ls

Bu komut benim bilgisayarımda mevcut ev dizinimdeki klasörler ve dosyaları gösterecektir.İşte çıktısı:


ree

Bazen kullandığınız terminal renki çıktı vermiyor olabilir veya klasörlerle dosyaları birbirine karıştırıyor olabilirsiniz.Bunun için işte farklı bir ls komutu:

darkside@debian:~$ ls -F

Şu çıktıya bakın dosyaları ve klasörleri ayrımını bu omut ile daha net görmek için hello adında bir dosyada oluşturdum işte ekran görüntüsü:



ree

Burada gördüğünüz gibi dosyaların sonuna / işareti yerleştirerek bir dizin olduğunu belirtti.İşte bu komut çıktısında farklı işaretler görebilirsiniz.İşte diğerlerinin anlamı ve açıklaması.


  • Dizinler: ls -F komutu ile listelenen dizinlerin sonuna / işareti eklenir.

  • Yürütülebilir Dosyalar: Eğer bir dosya çalıştırılabilir (executable) ise, sonuna * işareti eklenir.

  • Sembolik Bağlantılar: Eğer bir dosya sembolik bağlantı (symlink) ise, sonuna @ işareti eklenir.

  • FIFO (First In First Out) Dosyaları: | sembolüyle gösterilir.(Bu dosyalar bir uygulamadan girişi diğer uygulamaya veya terminale aktarmak için kullanılır.)

  • Soket Dosyaları: = sembolüyle gösterilir.


Bu dosyaların ne anlama geldiği hakkında endişelenmeyin.Başka blog yazılarımızda dosya türleri hakkında bilgi vereceğiz.Yani tüm dosyalar hakkında herşey olacak nasıl kullanamanız gerektiğini detaylıca ve adım adım anlatacağız.Şimdilik eğer böyle çıktılar görürseniz ne anlama geldiğini bilin yeter.


Bir sonraki ls komutumuza ve parametresine geçelim.ls komutu varsayılan olarak gizli dosyaları göstermez.Gizli dosyalar başında nokta bulunan dosyalardır.İşte komutumuz ve örnek ekran çıktısının görüntüsü:

darkside@debian:~$ ls -a

İşte komutumuzun çıktısı:



ree

Burada başında nokta olan dosyaları görüyorum ama neden . ve .. gibi işaretler var bunlar ne anlama geliyor diyebilirsiniz.Biraz önce fark ettiyseniz bu komutları kullanarak dizinler arasında geçiş yapmıştık.Bunlar gizli ama özel olarak kullanılan yapılardır.Sanki burada gizli bir dosya gibi ele alınmıştır.Burada .(Tek nokta) bulunduğunuz dizini iki nokta (..) ise bir üst dizini belirten özel işaretlerdir.


Blogumuza güzel ve işe yarar bir komut ile devam ediyoruz.Bu sefer komutumuzu yukarıdaki kullandığımız -F parametresi ile birleştiriyoruz.Burada kullanacağımız yeni parametre -R(Recursive) yani özyinelemeli dahada açacak olursak bu komut size dizinlerin alt dizinlerini de gösterecektir.Örnek bir komut ile verelim burada hem çıktı türünü ve eğer klasör ise alt dosyalarınıda elde edeceğiz.Örnek komut:


darkside@debian:~$ ls -F -R

Şu terminal çıktısını inceleyin:



ree

Burada klasörleri alt klasörleri hatta o klasörün içinde neler bulunduğunu tümünü görebilirsiniz.Eğer klasör içi çok kalabalıksa bu çok uzun liste oluşturacaktır.


Bazen dosyalar hakkında daha fazla detay almak isteyebilirsiniz.Oluşturulma tarihi, yaratıcısı vb gibi.Bunun için ls komutunun -l parametresini kullanarak uzun listeleme(Long list) yapabilirsiniz.Örnek komutu çıktısı ve ne anlama geldiğini görelim:

darkside@debian:~$ ls -l

İşte terminal çıktımız:



ree

Burada birden fazla sütun var ve ne anlama geliyor haydi inceleyelim.Örneğin çıktının içinden bir bölümü alalım ve inceleyelim:


drwxr-xr-x 2 darkside darkside 4096 Şub 21 14:38 Belgeler

İlk olarak "drwxr-xr-x" kısmının ne anlama geldiğini açıklayalım burada başta bazılarında d var ve bazılarında - işareti var bunun manası d yazması bunun bir klasör anlamına geldiğini - olması ise bunun bir dosya olduğunu gösterir.

Bu listede hangi harflerin ne anlama geldiğini görebilirsiniz:


  • d: Bu bir dizin (directory) olduğunu gösterir.

  • -: Bu bir normal dosya olduğunu gösterir.

  • l: Bu bir bağlantı (symlink) olduğunu gösterir.

  • c: Bu bir karakter cihaz dosyası (character device file) olduğunu gösterir.

  • b: Bu bir blok cihaz dosyası (block device file) olduğunu gösterir.

  • p: Bu bir FIFO (named pipe) olduğunu gösterir.

  • s: Bu bir soket dosyası olduğunu gösterir.

Şimdi diğer kısmında gelelim yani rwxr-xr-x kısmına.Burada aslında 9 karakterden oluşuyor soldan sağa doğru en soldaki 3 harf kullanıcı iznini sonraki 3 harf grup izinlerini ve en sondaki 3 harf ise diğer kullanıcılar için izinleri gösterir.Burada 3 temel harf vardır.

  • r: Okuma izni (read) - Kullanıcı dosyayı okuyabilir.

  • w: Yazma izni (write) - Kullanıcı dosyada değişiklik yapabilir.

  • x: Çalıştırma izni (execute) - Kullanıcı dizini gezebilir (dizinse, içine girebilir).


Buradan yola çıkarak kullanıcının rwx okuma,yazma ve çalıştırma, grubun r-x sadece okuma ve çalıştırma , son olarak yine r-x sadece okuma ve çalıştırma olacaktır.Şu anda eğer anlamadıysanız endişelenmeyin.Linux güvenlik bölümü için bir blo yazımız oalcaktır.Orada dosya izinlerini nasıl değiştirebileceğinizi ve ne anlama geldiğini detaylıca açıklayacağız.


Şimdi en soldaki blok kısmını bitirdik.Daha sonraki 2 ne anlama geliyor? Bunun üzerinde duralım.Buradaki numara dosyanın kaç bağlantısı olduğu yani kaç farklı şekilde bu dosyaya erişebilirsiniz.Burada iki şekilde olduğunu gösteriyor.Bu büyük ihtimalle .(Kendi Dizini) ve ..(Üst Dizin)den erişimi olduğu için 2 farklı şekilde buraya ulaşılabilir.Burada neden bazılarının bağlantısı yüksek diye düşünebilirsiniz.Bu dizinin içinde başka dizinlerin bulunmasındandır.Bu bağlantı sayısını arttıracaktır.Ancak Belgeler içeriği boş olduğu için buraya sadece . ve .. dahil edildi.Herhangi bir klasör dahil edilmedi.Alt dizinlerde mevcut olsaydı bunlarıda toplama ekleyebilirdik.


Bu çıktıdaki darkside darkside iki ifadeye bakın.Burada soldaki kullanıcı adını sağdaki grup adını verecektir.Bunları sonraki bloglarımızda ele alacağız.Burada sadece yüzeysel çıktının anlamalarını söylüyoruz.


Gördüğünüz 4096 ise kbcinsinden dosya veya klasör boyutunu verecektir.

Daha sonra ise klasörün son değiştirilme tarihi ve adını göreceksiniz.Yani kısaca tabloya koyduk işte:


d

Dosya türü: d dizini (directory), - normal dosya, l sembolik bağlantı (symlink) vb.

rwxr-xr-x

Erişim izinleri: Her 3 karakter bir kullanıcı grubuna aittir: ilk 3 karakter kullanıcı, sonraki 3 karakter grup, son 3 karakter diğerleri için izinler. r okuma, w yazma, x çalıştırma (erişim izni) anlamına gelir.

2

Bağlantı sayısı: Bu dizinin içindeki alt dizin sayısı (dizin ve . ve .. dahil olmak üzere).

darkside

Kullanıcı adı (Owner): Dizin veya dosyanın sahibi.

darkside

Grup adı (Group): Dizin veya dosyanın ait olduğu grup.

4096

Dosya boyutu: Dizin için boyut, burada 4096 byte (4 KB).

Şub 21 14:38

Son değiştirilme tarihi: Dosya ya da dizinin son değiştirilme tarihi ve saati.

Belgeler

Dosya adı: Dizin veya dosyanın adı (burada Belgeler dizini).


Şimdi bir sonraki ls komutumuza ve parametremize geçelim.


ls -alF gibi parametreleri birlikte kullanarak akılda kalıcı ve işlevsel dosya görüntülemeleri yapabilirsiniz.


Tamam şimdi liste görüntülemesindeki filtrelemelerini inceleyelim:


Liste Çıktılarını Filtreleme

Listeleme komutu ile varsayılan dizininizde bulunan dosyaları listelemiş olabilirsiniz.Ancak listeleme komutu ile belirli bir klasörün içeriğini listeleyebiliriz.İşte örnek kullanım:

darkside@debian:~$ ls -l Belgeler

Burada komutu sadece Belgeler ile sınırlamış olduk ve bu komut ile sadece Belgeler içinde bulunan dosya ve klasörleri gösterecektir.İşte ekran görüntümüz:


ree

Şimdi bunu biraz daha ilerletelim ve joker karakterlerin nasıl kullanıldığına değinelim.


Wildcard karakterleri (Joker karakterler)

Wildcard yani joker karakterleri belirli bir desene uyan dosyaları aramak için kullanılır.İlk joker karakterimiz ile başlayalım.


? (Soru işareti)

Bu karakter bir karakterin yerini tutar yani herhangi bir karakterin yerini temsil eder?

Şimdi ana dizininizde iki farklı bnzer adlı dosya oluşturun aşağıdaki komutları girin:


darkside@debian:~$ mkdir new1 new2

Bu komutlarla iki farklı klasör oluşturduk.Şimdi ? joker karakterimizi kullanalım örneğin adı new ile başlayan ama 1 yada 2 gibi numaraların yerine ? kullanabiliriz çünkü bu herhangi bir karakter olabilir 3 yada 4 de olabilir.Örnek komutumuz:


darkside@debian:~$ ls -l new?

İşte terminal çıktımızın görüntüsü:


ree

Burada klasörlerin içi boş olduğu için klasör içeriği görünmüyor olabilir.Ama buradaki mantık size komutun nasıl çalıştığını ve çıktısını göstermekti.Eğer new1 new2....new9 a kadar klasör ismimiz olsaydı ve bu komutu girseydiniz tümünün içeriğini size gösterecekti.


*(Yıldız)


Bu karakter sıfır veya daha fazla karakteri temsil eder.Örneğin bunu daha net anlamanız için /etc dizinine cd komutu kullanarak gidin ve ardından şu komutu girin:

darkside@debian:/etc$ ls -l rc*

Tüm rc ile başlayan klasörlerin içeriğini ve dosyaları gösterecektir.


Köşeli Parantezler [ ]


Birden fazla seçenek sunarak, hangi karakterin kullanılacağını seçebilirsiniz.İşte örnek bir komut biraz önceki new1 new2 gibi new3 ve new 4 klasörleri oluşturun daha sonra şu komut ile istediğiniz ve eşleşen klasörlerin içeriğini görün:


darkside@debian:~$ ls -l new[24]

Komutun terminal çıktısı:



ree


burada new2 ve new4 içeriği listelenecektir.Yani sadece 2 ve 4 sayıları ile eşleşenler varsa new2 varmı yada new4 varmı diye bakıyor.Eğer bir aralık vermek istersek:


darkside@debian:~$ ls -l new[2-4]

Burada 2 ve 4 arasındaki herşeyi dahil edecek yani 2 ,3 ve 4 işte örnek çıktı:



ree

Başka bir kullanım ise eğer bir karakteri içermmesini istemiyorsak örneğin 2 değerini içermesin diyorsak işte komut:


darkside@debian:~$ ls -l new[!2]

Bu komut 2 değeri hariç tüm değerleri içeren klasörleri bulacak ve içeriğini listeleyecektir.Örnek çıktı:



ree

Bu gibi komutları kullanarak listeleme işlemlerinizi daha kolay hale getirebilirsiniz.


Bu blog yazımızda dizinler arasında geçiş yapma ve listeleme gibi konuları ele aldık.Bir sonraki blogumuzda dosya taşıma , kopyalama ve silme gibi temel işlemlere odaklanacağız ve yeni klasör ve dosya nasıl yaratılır bunun üzerinde duracağız.Şimdilik hoşçakalın...🙂

Comments


bottom of page