Open Source

Linux Essentials Sertifikasyon Sınavına Hazırlık – Modül 2

Merhaba arkadaşlar, bir önceki makalemizde Linux temel kavramları, lisanları, donanım süreçleri gibi temel bilgilerden bahşetmiştik. Artık komut satırının gücünü keşfedebiliriz. Vakit kaybetmeden işleyeceğimiz konulara başlayalım. Öğrenmek için, Modülleri sırası ile okuyarak ve uygulayarak yapınız.

Modül 1 için bakınız: https://www.cozumpark.com/linux-essentials-sertifikasyon-sinavina-hazirlik-modul-1/

Modül 2 konuları;
1. Komut Satırının Gücü
2. Yardım Alma
3. Dosya Sistemleri

KOMUT SATIRININ GÜCÜ

Bir kullanıcı CLI (Command-line interface) ile ilk karşılaştığında, büyük ihtimalle ekrana bakakalacaktır. 🙂 CLI kullanımı çok sayıda komut ve seçenekleri ezberlemeyi gerektirir. Ama kullanıcı komutların nasıl kullanıldığını, gerekli dosya-dizinlerin nerede bulunduğunu ve bir dosya sisteminin hiyerarşisinde nasıl gezinileceğini öğrendikten sonra, son derece üretken olabilir. Dahası, bir kullanıcı CLI’yi öğrenerek, herhangi bir Linux dağıtımında uzmanlaşabilir. Yani sürekli uygulama yapmak faydalı olacaktır. Eğer ingilizce biliyorsanız, zaten her zaman bir adım öndesiniz bu kesin.

KABUK (SHELL)

Kullanıcı bir komut girdikten sonra, terminal kullanıcının yazdıklarını kabul eder ve bunu bir kabuğa aktarır. Kabuk, bir kullanıcı tarafından girilen komutları işletim sistemi tarafından gerçekleştirilecek eylemlere çeviren komut satırı yorumlayıcısıdır. Komut sonrası çıktı üretilirse, metin terminalde görüntülenir. Komutla ilgili bir sorunla karşılaşılırsa, bir hata mesajı görüntülenir.

Shell kullanılarak bütün yönetimsel işlemler gerçekleştirilebilir.
Command > options > arguments > yapısı şeklinde şablonu mevcuttur.
•Birbiri ardına yürütülen birden çok komut çalıştırılabilir.
•Terminal üzerinden bir dosyaya erişmek, bir program çalıştırmak isteniliyorsa tam yol adı verilmesi gerekmektedir.
NOT: Unix & Linux işletim sistemlerinde her şey bir dosyadan ibarettir, eğer kullandığınız şeyin bir dosya olmadığına eminseniz o bir process ’ tir ve başka bir ihtimal yoktur.

Bu görselin boş bir alt özelliği var; dosya ismi: 2021-03-29-16_52_41-Window.png

Linux ortamında, uzun yıllardır kullanılan birçok farklı kabuğun kullanımına izin verilir. Linux dağıtımları için en yaygın kullanılan kabuğa Bash kabuğu adı verilir . Bash, komut geçmişi ve satır içi düzenleme gibi birçok gelişmiş özellikler sağlar.

Bash kabuğunun bir çok popüler özellikleri de vardır ve bunlardan birkaçı aşağıda listelenmiştir;

  • Komut dosyası oluşturma: Komutları bir dosyaya yerleştirme ve ardından dosyayı yorumlayabilir. Böylece tüm komutların yürütülmesi ile sonuçlanma yeteneği sağlar. Bu özellik aynı zamanda koşullu ifadeler ve işlevler oluşturma yeteneği gibi bazı programlama özelliklerine de sahiptir.
  • Takma adlar: Daha uzun komutlar için kısa takma adlar oluşturma yeteneği vardır.
  • Değişkenler: Bash kabuğu ve kullanıcı,c bilgi depolamak için kullanılır. Bu değişkenler, komutların ve özelliklerin çalışma şeklini değiştirmek ve önemli sistem bilgileri sağlamak için kullanılabilir.

• Sistemde kullanılabilecek tüm kabuklar /etc shells dosyasında tanımlanmaktadır.

Bir terminal çalıştırdığımızda komut girmemiz dışında bir çok yararlı bilgileri de bize sunmaktadır. Komut istemi tamamen yapılandırılabilir. Dağıtımlar arasında değişebileceği gibi, çoğunlukla kullanıcı ve sistem hakkında bilgiler içermektedir.

Yukarıdaki gösterilen komut istemi aşağıdaki sarı renkle boyanmış bilgileri içerir:

Kullanıcı adı:

Bilgisayar Adı:

Mevcut Dizin:

~(tilde) sembol’ü ise kullanıcının ev dizini için kısaltma olarak kullanılır. Genellikle kullanıcının ana dizini altındadır.

Komutlar

Bir komutu yürütmek için ilk adım, komutun adını yazmaktır. Komutu veya betiği (script) çalıştırabilmek için programa ait dosyanın çalıştırma yetkisinin olması gerekmektedir. Bir komut eğer çalışma yolunda (PATH) ise herhangi bir dizinden çalıştırılabilir. Sistem komutları çalışma PATH’ine yerleştirildiği için tam yolunu vermeden çalıştırılabilir. Ancak kendi programlarımız veya scriptler genelde standart sistem PATH’inde olmadığı için tam yolu verilerek çalıştırılmalıdır.
Hemen bir komut çalıştıralım ve sonuçları görelim. Arkadaşlar genelde ilk öğrendiğimizde komut çıktılarına odaklanıyoruz. Bunlara çok takılmayalım, komutların nasıl biçimlendirileceğine ve çalıştırılmasına odaklanalım.

NOT: “ls” komutu, kendi başına, geçerli çalışma dizininde bulunan dosyaları ve dizinleri listeler. ls komutu sistemin çalışma yolunda olduğundan her yerden çalıştırılabilmektedir. İlerleye süreçlerde daha detaylı komutlara ele alacağız.

ls yazıp enter tuşuna basıyorum.

Birçok komut, başka girdi olmaksızın kendi başına kullanılabilir. Bazı komutların düzgün çalışması için ek girdi gerekir. Bu ek girdi iki biçimde gelir: seçenekler ve bağımsız değişkenler .

Bir komutun tipik biçimi aşağıdaki gibidir:

command [options] [arguments]

Seçenekler, bir komutun temel davranışını değiştirmek için kullanılırken, bağımsız değişkenler ek bilgi sağlamak için kullanılır (dosya adı veya kullanıcı adı gibi). Her seçenek ve bağımsız değişken normalde bir boşlukla ayrılır, ancak seçenekler genellikle birleştirilebilir.
NOT: Linux’un büyük / küçük harfe duyarlı olduğunu unutmayın. Komutlar, seçenekler, bağımsız değişkenler ve dosya adları tam olarak gösterildiği gibi girilmelidir.

Argümanlar (Arguments)

command [options] [arguments]

Komutun üzerinde hareket edeceği bir şeyi belirtmek için bir argüman kullanılabilir. Eğer ls komut bağımsız değişken olarak bir dizin ismini verilir, o dizinin içeriğini listeler. Aşağıdaki örnekte, ls /etc/cockpit dizin bir bağımsız değişken olarak kullanılmıştır. Ortaya çıkan çıktı, bu dizinde bulunan dosya ve dizinleri listelemektedir. Dizinleri Windows ortamındaki klasörler olarak düşünebiliriz.

ls komutu  aynı zamanda birden fazla bağımsız değişkenleri kabul eder. Her iki içeriği listelemek için ls /etc/cockpit/ ve /home/ kullanalım.

Seçenekler (Options)

command [options] [arguments]

Seçenekler, bir komutun davranış şeklini genişletmek veya değiştirmek için komutlarla birlikte kullanılabilir. Örneğin  ls -l komut seçeneğinin kullanılması, izinler, dosyanın boyutu ve diğer bilgiler gibi listelenen dosyalar hakkında ek bilgiler sağlayan bir liste çıktısı vermektedir.

Varsayılan olarak sonuçlar alfabetik sırada yazdırırlır. Komuta seçenek eklemeden yazarsak alfabetik sıraya göre alırız veya -r(reverse)-(ters) seçeneği ekleyerek sonuçları ters alfabetik sırada yazdırabiliriz. Aşağıdaki görseli inceleyip uygulayalım.

Çoğu durumda, seçenekler diğer seçenekler ile birlikte kullanılabilir. Ayrı seçenekler olarak -l, -r veya kombine olarak -lr gibi. Bu iki seçeneğin kombinasyonu, ters alfabetik sırayla uzun bir liste çıkmasını sağlar. Kombine olarak kullanmanızı öneriyorum. Tercih sizin 🙂

Çoğu durumda birleşik seçeneklerin sırası önemli değildir. Tüm bu örneklerin çıktısı aynı olacaktır.
ls -l -r
ls -rl
ls -lr

Varsayılan -l olarak, ls komut seçeneği dosya boyutlarını bayt cinsinden görüntüler. Eğer -h seçeneğini eklersek dosya boyutları anlayabileceğimiz formatta gözükmektedir.

Seçenekler genellikle tek harflerdir; ancak bazen bunlar kelime veya kelime öbeğidir. Tipik olarak, eski komutlar tek harf kullanırken, daha yeni komutlar seçenekler için tam sözcükler kullanır. Tek harfli seçeneklerden önce "-h" seçenek gibi tek bir çizgi karakteri gelir . Tam sözcük seçeneklerinden önce iki kısa çizgi --karakteri gelir. “-h” eşdeğer bir tam kelime formatına sahiptir; ” –human-readable

Geçmiş (History)

Terminalde bir komut yürütüldüğünde, bir geçmiş listesinde saklanır. Bu, aynı komutu yürütmeyi kolaylaştırmak ve daha sonra tüm komutu yeniden yazma ihtiyacını ortadan kaldırmak için tasarlanmıştır.

Yukarı Ok ↑ tuşuna basmak, komut satırında önceki komutu görüntüler. Geçerli oturumda çalıştırılan komutların tüm geçmişi ve çalıştırılan komutların geçmişinde geri getirmek için Yukarı tuşuna art arda basılarak görüntülenebilir . Enter tuşuna basarak görüntülenen komutu yeniden çalıştırabiliriz.
İstenen komut bulunduğunda, Sol Ok ← ve Sağ Ok → tuşları imleci düzenleme için konumlandırabilir. 

Ek olarak;
•TAB: Komut yazılırken tab tuşuna basılırsa komut otomatik tamamlanır.
•CTRL+C : Çalışan süreci sonlandırır.
•CTRL+Z : Çalışan programı durdurur.
•CTRL+A : İmleci komutun en soluna getirir.
•CTRL+E : İmleci komutun en sağına getirir.
•CTRL+U : Komutu siler.

Bir terminalin geçmiş listesini görüntülemek için history komutunu kullanalım. Görseldeki gibi çalıştırılan komutları ve değişken olarak numaralı görüyoruz.

Bu kısımda neler yapabiliriz biraz bahsedelim. Mesela yazılan son 5 komuta bakalım. Bunun için history 5 komutunu çalıştırmamız yeterlidir.

Peki komut çok uzun ben bunu tekrar yazmak istemiyorum ve Yukarı Ok ↑ tuşu ile uğraşmak istemiyorum. Çok basit “!” sembolü yazıp geçmiş listesindeki komuta atanan numarayı yazmak yeterlidir. Örnek !2hemen uygulayalım.

Biraz daha düşünürsek ne kadar önemli bir komut olduğunu aslında anlayabiliriz. Sektörde kullanılan birkaç hile(trick) vermek istiyorum sizlere. Bir yere gittiniz ve sunucu çalışmıyor. Bazen sorunları çözmek zor oluyor. Hemen history yazıp komut geçmişine bakıp sorun tespiti yapabilirsiniz.
Ben bu komutları yazıyorum da kayıt olmasını istemiyorum. Bunun için komutu yazmadan bir boşluk bırakıp komutu yazarsanız kayıt olmaz. Tabi bu dağıtımlara göre değişebilir. Bizim kullandığımız dağıtımda bu işe yaramaz: )
Ya da ben kötü biriyim bir yere zarar verdim ve yazdığım komutların hepsini silmek istiyorum. Bu da mümkün history -c yazarak hepsini silebiliriz. Bunların hepsini faydalı işler için öğreniyoruz. Kötü şeyler yapmıyoruz.

Son olarak bu geçmiş ne kadar tutuluyor ? Çevre değişkenleri kısmında bahsedeceğim ama hazır buradayken buna da bakalım. echo $HITSIZE yazarak çıktıda 1000 olduğunu görebiliriz. Tabi ki bu rakam değiştirilebilir.

Değişkenler (Variables)

Değişken, kullanıcının veya kabuğun verileri depolamasına izin veren bir özelliktir. Bu veriler, kritik sistem bilgileri sağlamak, Bash kabuğunun veya diğer kabukların çalışma şeklini değiştirmek için kullanılabilir. Değişkenlere isim verilir ve geçici olarak bellekte saklanır. Bash kabuğunda kullanılan iki tür değişken vardır. Yerel ve Ortam Değişkenleri şimdi bunları inceleyelim.

YEREL DEĞİŞKENLERİ (Local Variables)

Yerel ve kabuk değişkenleri yalnızca geçerli kabukta bulunur ve diğer komutları veya uygulamaları etkileyemez. Kullanıcı bir terminal penceresini veya kabuğunu kapattığında, tüm değişkenler kaybolur. Genellikle kullanıcı tabanlı görevlerle ilişkilendirilirler ve geleneksel olarak küçük harflidirler.
Bir değişkenin değerini ayarlamak için aşağıdaki atama ifadesini kullanın. Değişken zaten mevcutsa, değişkenin değeri değiştirilir. Değişken adı zaten mevcut değilse, kabuk yeni bir yerel değişken oluşturur ve değeri ayarlar.

variable=value

Hemen bir tane örnek yapalım daha iyi anlaşılabilmesi için.
mehmetoz=’Umarım herşey yolundadır’
Değişken değerini görüntülemek için echo $mehmetoz yazıyoruz.

ÇEVRE DEĞİŞKENLERİ (Environment Variables)

Çevre değişkenleri, programlama dillerindeki değişkenler gibi belirli bilgileri taşıyan özel stringlerdir. Uygulamalar, bu çevre değişkenlerinin değerlerine göre davranışlarını değiştirebilir. Çevre değişkenlerine, değişken adının başına $ eklenerek ulaşılır.

env komutu ile o anda tanımlı tüm çevre değişkenleri listelenir. Komutu uygulayalım ve bir göz gezdirelim. env yazıp enter tuşuna basıyorum.

Sık kullanılan bazı çevre değişkenleri :
Kullanılan kabuğu görüntülemek için echo $SHELL komut kullanılır, Echo $SHELL komutunu çalıştırıyorum.

Biz şuan bash kullanıyoruz peki sh kullanmak istiyorsanız ne yapmamız gerekiyor? Terminal ekranınında sh komutunu çalıştırmam yeterli oluyor. Bash’e geçmek için tekrar bash yazıp dönüyorum.

History kısmında yazılan komut geçmişine bakmıştık. echo $HISTSIZE komutunu çalıştırdığımda 1000 adet komutu tuttuğunu görebiliyorum. Bir değişkenin değerini ayarlamak için atama ifadesini kullanmamız gerekmektedir. HISTSIZE=1 yazıp enter tuşuna basıyorum. Görseldeki gibi 1 olarak değişti.

Doğrulamak için Terminal ekranına bir kaç tane komut yazıyorum ve history ile gerçekten 1 adet komut tutup tutmadığına bakıyorum. Başarılı 🙂 Tekrar 1000 olarak değiştiriniz.

HOME : Kullanıcının ev dizinini gösterir. Nerede olduğuna bakalım. echo $HOME Hemen ardından kullanıcı adına ve bilgisayar adımıza bakalım.

YOL DEĞİŞKENLERİ (Path Variable)

Anlaşılması gereken en önemli Bash kabuğu değişkenlerinden biri PATH değişkendir. Kabuğun komutları bulmak için hangi dizinlere bakacağını tanımlayan bir liste içerir. Geçerli bir komut girilirse ve kabuk bir “komut bulunamadı” hatası döndürürse, bunun nedeni Bash kabuğunun yolda bulunan dizinlerin hiçbirinde bu ada sahip bir komutu bulamamasıdır. Aşağıdaki komut, mevcut kabuğun yolunu görüntüler. Bu değişkende kolon ayracı “:” ile ayrılmış birden fazla dizin yolu tanımlanabilir.
İlk olarak hangi yolların tanımlı olduğuna echo $PATH ile bakalım.

Listedeki her dizin, iki nokta üst üste : karakteriyle ayrılır . Önceki çıktıya bağlı olarak, yol aşağıdaki dizinleri içerir. Kabuk, dizinleri listelendikleri sırayla kontrol edecektir:

/home/mehmetoz/.local/bin:
/home/mehmetoz/bin
/usr/local/bin
/usr/local/sbin
/usr/bin
/usr/sbin


Bu dizinlerin her biri bir yol ile temsil edilir. Yol “/” karakteriyle ayrılmış dizinlerin listesidir.

Dersin ilerleyen bölümlerinde bu konuyu daha ayrıntılı ele alacağız.

Peki ben bu varsayılan olarak gelen yollara ek olarak spesifik bir yol belirlemek istiyorsam ne yapmam gerekiyor.
PATH=$PATH:/etc veya tam tersi PATH=/etc/:$PATH yazarak etc dizininide eklemiş bulunuyorum. $ sembolü ile değişkeni belirtip, kolon ayırıcı “:” kullanarak işlemi başarı bi şekilde uyguluyorum. Her kolon ayırıcı dizinleri birbirinden ayırmaktadır. Değişkeni ve kolon ayırıcı kullanmayı unutmayınız.


KOMUT TÜRLERİ

Bir komut hakkında daha fazla bilgi edinmenin bir yolu, nereden geldiğine bakmaktır. type komutu, komut türü hakkında bilgi almak için kullanılabilir.
“type command
İç komutlar, harici komutlar, takma adlar ve işlevler dahil olmak üzere CLI’nin kabuğunda birkaç farklı komut kaynağı vardır.

INTERNAL COMMANDS (İÇ KOMUTLAR)
cd komutu Bash kabuğunun bir parçası olan ve en çok kullanacağımız komutlardan birisi olan dizin değiştirme komutuna iyi bir örnektedir. type cd yazalım.

Görselde yazdığı gibi cd bir kabuk yerleşkesidir. Bash kabuğu çalışıyor, onu nasıl yorumlayacağını biliyor ve başlatılması için ek programa ihtiyaç duymuyor.

EXTERNAL COMMANDS (HARİCİ KOMUTLAR)
Harici komutlar, kabuk tarafından aranan dosyalarda saklanır. Bir kullanıcı ls komutu yazarsa, kabuk , yürütülebileceği PATH adlı bir dosya bulmaya çalışmak için değişkende listelenen dizinleri arar.
Bir komut beklendiği gibi davranmazsa veya olması gereken bir komut erişilebilir değilse, kabuğun komutu nerede bulduğunu veya hangi sürümü kullandığını bilmek faydalı olacaktır. PATH değişkende listelenen her dizine manuel olarak bakmak zahmetli olacaktır.
Bunun yerine, komutun tam yolunu görüntülemek için which komutunu kullanalım. which ls komutunu çalıştırıyorum.

NOT: Yardım kısmında daha detaylı göreceğiz. Karışıklık olmaması adına kısa bilgi vermek istedim.
which : Komutun çalıştırılabilir dosya konumunu gösteririr.
whereis: Komutun çalıştırılabilir dosya konumu ve kütüphane dosya yolunu gösterir.
whatis : Komutla ilgili kısa bilgi verir.

ALIASES (TAKMA ADLAR)
Takma adlar, daha uzun komutları daha kısa tuş dizilerine eşlemek için kullanılabilir. Kabuk çalıştırılan bir takma ad gördüğünde, komutları yorumlamaya geçmeden önce daha uzun sırayı değiştirir. Mevcut kabukta hangi takma adların ayarlandığını belirlemek için alias komutu kullanılır.
alias çok kullanılışlı bir komut ve kullanması çok basit hemen bir örnek yapalım. Ben mehmet yazdığımda tarihin ve saatin görüntülenmesini istiyorum. Bunun içim alias mehmet=date komutunu çalıştırmamız yeterlidir. Komutu uyguladıktan sonra takma adımızı yazıp enter tuşuna basalım. Aşağıdaki gibi bir çıktı almalısınız. Farklı uzun yollarda belirtebilirsiniz.

QUOTING (ALINTI YAPMAK)

Alıntı yapmak Kabuğa belirli karakterlerin veya kelimelerin özel anlamını kaldırmak için kullanılır. Bash kabuğunun kullandığı üç tür tırnak vardır:
tek tırnak '), çift tırnak ") ve ters tırnak `). Bu alıntıların Bash kabuğunda aşağıda açıklandığı gibi özel özellikleri vardır.

  • Tek 'tırnak işaretleri, kabuğun tüm özel karakterleri “yorumlamasını” veya genişletmesini engeller. Genellikle tek tırnak işaretleri, bir dizeyi kabuk tarafından değiştirilmekten korumak için kullanılır, böylece dize, komutun çalıştırılma şeklini etkilemek için bir komut tarafından bir parametre olarak yorumlanabilir.
  • Çift "tırnak işaretleri, yıldız işareti ( *), soru işareti ( ?) ve köşeli parantez ( []) gibi glob karakterlerinin genişlemesini durdurur . Çift tırnak gerçekleşmesi değişken genişleme ve komutu her ikisi için izin verir.
  • Geri `tırnaklar , bir komutun başka bir komut satırı içinde yürütülmesine izin veren komut ikamesine neden olur .

Tırnak işaretlerini kullanırken, bunlar çiftler halinde girilmelidir, aksi takdirde kabuk komutu tamamlanmış olarak değerlendirmez.

İlk başta anlamak biraz zor olacaktır. Örnekler ile daha iyi anlaşılacaktır. Çift tırnak ile başlayalım.

Çift tırnak karakterlerinin geri alıntı karakterleri üzerinde herhangi bir etkisi yoktur. Kabuk bunları komut ikamesi olarak kullanmaya devam edecektir. 

NOT: Joker kart olarak da adlandırılan glob karakterler, kabuk için özel anlamı olan sembollerdir. Herhangi bir komutu çalıştırmadan önce kabuğun kendisi tarafından yorumlanırlar. 
Glob karakterler, diğerleri arasında yıldız işareti *, soru ? işareti karakteri ve köşeli parantezleri [ ]içerir.

Çift tırnak içinde bir yıldız işareti yalnızca bir yıldız işaretidir, soru işareti yalnızca bir soru işaretidir ve bu, ekranda normalde kabuğun özel bir karakteri olan bir şeyi görüntülemek istediğinizde kullanışlıdır.

Tek Tırnak
Tek tırnak işaretleri, kabuğun globlar, değişkenler, komut ikamesi ve henüz tartışılmamış diğer meta karakterler dahil olmak üzere özel karakterleri yorumlamasını engeller.
Örneğin, $ karakterin $ bir değişkenin değerini aramak için kabuğa bir gösterge olarak davranması yerine basitçe a anlamına gelmesi için , aşağıda görüntülenen ikinci komutu yürütün

Ters Eğik Çizgi

Ters Eğik Çizgiye bir karakterden tek alıntı yapmak için alternatif bir teknik de vardır. Aşağıdaki örneği inceleyelim.
Bir cümlede çift tırnak içine alınmışsa $HOME değişken olarak kabul edilir ve * ? gibi glob karakterlerin çalışmasını engeller.
Bir cümlede tek tırnak içine alınmışsa $HOME değişken olarak kabul edilmez.
Bir cümlede $HOME değişken olarak kabul etmesini isteyip $USERNAME değişken olarak kabul etmek istiyorsak $ karakterinin önüne \ karakterini kullanmalıyız.

Ters Tırnak

Ters tırnaklar veya ters işaretler , bir komut içindeki bir komutu, komut değiştirme  adı verilen bir işlemi belirtmek için kullanılır . Bu, komutların güçlü ve sofistike kullanımına izin verir. İlk önce klavye üzerinde AltGr tuşuna basıp sonra virgül tuşuna basarak ters tırnak yapabilirsiniz. Aramakla uğraşmayın 🙂
Aşağıdaki görseli incelerseniz daha iyi anlaşılacaktır.

Şimdi bütün alıntıları daha iyi anlaşılması için kısa bir açıkla yapıyım ve tek bir örnekte uygulayalım. İster istemez biraz karışıklık olmuştur. Zamanla daha iyi anlayacaksınız.
Çift tırnak ile $ değişkenleri etkilemez. Çift tırnak olmadan da değişken aynı olacaktır. 2 çıktıda sonucu aynı alacaksınız.
Tek tırnak ile ve $ değişkenin başına \ karakterini koyarak değişkenin değerini göstermez.
Ters tırnak ile bir komutu çalıştırabilirsiniz.
Umarım şuan daha anlaşılır olmuştur. Hemen örnekleyelim. Çıktı aşağıdaki gibi olmalıdır.

NOT: Alıntı yapmak şu anda önemsiz ve tuhaf görünebilir, ancak komut kabuğunda daha fazla deneyim kazandıkça, farklı alıntıların nasıl çalıştığını iyi bir şekilde anlamanın kabuğu kullanmak için kritik olduğunu göreceksiniz.

CONTROL STATEMENTS (KONTROL İFADELERİ)

Tipik olarak, tek bir komut yazarsınız ve bunu Enter’a bastığınızda yürütürsünüz . Bash kabuğu, birlikte yazılan birden çok komutu ayırmak için kullanılabilecek üç farklı ifade sunar.

En basit ayırıcı noktalı virgüldür ;). Birden fazla komut arasında noktalı virgül kullanmak, bunların birbiri ardına, soldan sağa sırayla çalıştırılmasına izin verir.
İlk olarak bir kelime uydurdum ve yanına doğru bir komut yazdım. Çalıştıramadığı komutu atladı ve diğerini çalıştırdı. Sonra doğru komutu yazdım ve bir kelime uydurdum yine doğru olanı çalıştırıp, yanlış olanı çalıştıramadı. En son olarak hepsini doğru yazdım ve hepsini çalıştırdı.

command1 ; command2 ; command3

Yukarıdaki örnekte, ilki başarısız olmasına rağmen ikinci komutun hala yürütüldüğüne dikkat edin. Hatalı komutun çıktısını göremezken, komutu çalıştırdı. Komutlar, karakter ile ayrıldığında tamamen birbirinden bağımsızdır.

ve olarak adlandırdığımız bir diğer karakter ise &&‘dir. && karakteri ile ayrılan komutlar koşullu olarak yürütülür. Solundaki komut && başarılı olursa, sağındaki komut  && yürütülecektir. Solundaki komut  && başarısız olursa, sağındaki komutu çalıştıramaz. Yukarıdaki örnek ile && karakterine bakalım.
İlk olarak bir kelime uydurdum ve yanına doğru bir komut yazdım. Komut başarısız oldu. Sonra doğru komutu yazdım ve bir kelime uydurdum yine doğru olanı çalıştırıp, yanlış olanı çalıştıramadı. En son olarak hepsini doğru yazdım ve hepsini çalıştırdı.

command1 && command2 && command3

Yukarıdaki örnekte, her ifade doğru şekilde yürütüldüğünde, bir sonraki ifadenin de yürütülmesine izin verir. Yanlış olduğu yerde bir sonraki komutu yürütmez.

veya olarak adlandırdığımız bir diğer karakter ise ||‘dir. Komutlar ile ayrıldığında ||, yalnızca soldaki komut başarısız olursa,  sağındaki komutu çalıştırır. Solundaki komut başarılı olursa sonra ki sağındaki komutu çalıştırmaz.

command1 || command2 || command3

Yukarıdaki örnekte ilk komut doğru yazıldığında diğer komutu çalıştırmaz. Eğer ilk komut yanlış ise diğer komuta geçer ve doğru ise çalıştırır. Son olarak 3 komutta doğru olduğunda ilk komutu çalıştırır ve diğerlerini çalıştırmaz

Arkadaşlar şuan komutları öğrenmek yerine çalışma mantığını öğrendiğimiz için farklı komutlar ile örnekler yapmıyorum. İleride fazlasıyla uygulama yapacağız.

GETTING HELP (YARDIM ALMAK)

Geldik en önemli kısımlardan birtanesine artık nasıl yardım alacağınızı keşfedeceksiniz. Bu, kendinizi sıkışmış bulduğunuzda veya bir komutun nasıl çalıştığını hatırlayamadığınızda kurtarıcınız olacaktır.
İnternet aramalarına ek olarak, Linux İşletim Sistemi, belirli bir komut veya özellik hakkında daha fazla bilgi edinmek için çeşitli teknikler sağlar. Bu farklı teknikleri bilmek, ihtiyacınız olan cevabı daha kolay ve hızlı bir şekilde bulmanızı sağlayacaktır.
•man : Komut hakkında detaylı doküman sağlar.
•help : Komutun yanına yazılarak nasıl devam edileceğiyle alakalı yardım eder.
•info : Komut hakkında detaylı bilgi
•whatis : Komutla ilgili kısa bilgi

MAN

Komut hakkında daha fazla bilgi edinmek için komutun klavuz sayfasına erişelim.

man ls yazıp enter tuşuna basıyorum.

ls -a komutunun gizli dosya ve klasörleri de göstermesini sağlar. Linux’ta gizli dosya ve klasörler . (nokta) karakteriyle başlar.
ls -l : Yukarıdan aşağıya listelemek için kullanılır ve dosya hakkında bize bilgilerde verir.
ls -h : Dosya boyutları normalde byte olarak gösterir Linux, biz burada kullandığımız parametre ile megabyte, gigabyte cinsinden gösterir.
ls -R : Listelenen dizinin içinde bulunan alt dizinleride içeriğini listelemek için kullanırız.

Tüm komutlarda man ile bu şekilde detaylı bilgiler alabiliriz. Man sayfalarının şu anda sizin için biraz gizem olabileceğini unutmayın, ancak Linux hakkında daha fazla şey öğrendikçe, bunların çok değerli bir kaynak olduğunu göreceksiniz.
Komutla görüntülenen belgelere “Man Pages” adı verilmektedir. Manuel sayfa ekranının çıkışı kontrol etmek için komutla birlikte kullanılabilecek yararlı tuşlardan bahsedelim. Aşağıdaki işlemlerin hepsini uygulayınız.

ANAHTAR AMAÇ

h –>> Yardımı göster
q ->> Yardım veya klavuz sayfasından çık
f –>> Ekranı bir ileri taşı
b –>> Ekranı bir geri taşı
Aşağı ok –>> Bir satır aşağı git
 Yukarı ok –>> Bir satır yukarı git
/ (ardından aranacak metni giriniz) –>> İleriye doğru aramayı başlatın
? (ardından aranacak metni giriniz) –>> Geriye doğru aramayı başlatın
n –>> Aramayla eşleşen sonraki metne git
N –>> Aramayla eşleşen önceki metne git

Yukardaki işlemlerin bir kaçını uygulayalım. man history komutunu inceleyelim bu sefer. / sembolü ile geçmişi nasıl sileceğimi bulmak istiyorum ve /history yazıp enter tuşuna basıyorum. Görselde gözüktüğü gibi -c option (seçeneği) ile yapabileceğimi söylüyor. q tuşuna basıp çıkış yapabilirsiniz.

Bazı durumlarda komutun tam adını hatırlayamayabilirsiniz. Bu durumdalarda -k, man komutu seçeneğini kullanabilir ve bir anahtar kelime argümanı sağlayalabilirsiniz. Örneğin, passwd anahtar kelimesine sahip tüm man sayfasının bir özetini görüntüleyelim. man -k passwd komutunu çalıştıralım.

apropos komutun, bir anahtar sözcükle man sayfası özetlerini görüntülemenin başka bir yolu olduğunu unutmayın. Çıktıyı incelediğimiz zaman aynı sonucu aldığımızı görebiliyorum. Eğer yetki sorununa takılırsanız bu adımı atlayıp daha sonra uygulayabilirsiniz.
Not: Yetkili kullanıcıda mandb komutunu çalıştırmanız yeterli. Yetki kısmını öğrendikten sonra uygulayınız.

WHATIS

whatis ile komut hakkında kısa bilgiler alabiliriz. whatis passwd komutunu çalıştırıyorum. Görseldeki gibi bize passwd adında parola dosyası olduğunu ve kullanıcıların parolasını değiştirebileceğimizi söylemektedir.

Not: man -f ve whatis arasında hiçbir fark yoktur.

Hemen hemen tüm sistem özelliklerinin (komutlar, sistem dosyaları, vb.) Man sayfaları vardır. 

–HELP

Yardım almanın başka bir yolu –help komut seçeneğini kullanmaktır . Çoğu komut, –help temel komut kullanımını görüntülemek için bir argüman geçirmenize izin verir.
Not: date mevcut saat ve tarihi görüntüleyen komut.

İlk olarak date komutunu çalıştırıp saat ve tarihi görüntülüyorum. Akabinde date –help komutunu çalıştırıyorum. Örnek olarak saatimizi değiştirebiliriz. Ama yetkili bir hesap olmadığımız için hata verecektir. İlerleye aşamalarda date -s “11:13:00” gibi istediğiniz saat aralığısnı vererek değiştirebilirsiniz.

INFO

info ile komut hakkında detaylı bilgi alabiliriz.

Genelde man ve –help komutlarını aktif olarak kullanıyoruz. İsteğe bağlı değerlendirebilirsiniz.

FINDING FILES (Dosyaları Bulma)

Yardım kısmında son olarak dosyaları nasıl bulacağımızı öğreneceğiz. Sistemde bir dosyanın nasıl aranacağını ve kendi oluşturduğunuz veya başka biri tarafından oluşturulmuş bir dosyayı bulamadığınız durumlarda bilmemiz çok yararlı olacaktır.

Dosya aramanın kolay bir yolu locate komutu kullanmaktır . Örneğin, aşağıdaki komutu çalıştırarak Music dizinin konumunu bulabilirsiniz. Tabi ki kendi kullanıcımızda olduğum için yetkiden dolayı sadece belli kısımlarda arama yapacaktır. locate Music komutunu yürüttüğümüzde aşağıda görseldeki gibi hangi konumda olduğunu bize gösterdi.

Not: locate komutu, geleneksel olarak günde bir kez güncellenen bir veritabanını kullanır. Bu veritabanı, veritabanı en son güncellendiğinde sistemde bulunan tüm dosyaların bir listesini içerir. Yani yeni bir dosya oluşturulduğunda arama yaptığımızda bunu bulamayacaktır. Yetkili hesabımız ile updatedb komutunu çalıştırırak manuel olarak güncelleyebiliriz.

Daha yeni dosyaları aramak için başka bir çözüm, find komutu kullanmaktır . Bu komut, statik bir veritabanı yerine canlı dosya sistemini arar. find komutunu kullanmak için arayacağımız dizini options ve sorgu şeklinde yapıyoruz. Aşağıda ki örnek mehmetoz dizininde 1kilobytes olan dizinlerin ve dosyaların aramasını gerçekleştirdik.
command [arguments] [options]
find [/home/mehmetoz] [-size 1k]

  • k kilobytes (1024 bytes)
  • M megabytes (1024 kilobytes)
  • G gigabytes (1024 megabytes)
  • T terabytes (1024 gigabytes)
  • P petabytes (1024 terabytes)

Sadece bir komutun nerede olduğunu bulmak istiyorsanız, whereis komutunu kullanmanız çok iyi bir seçim olacaktır.

NAVIGATING the FILESYSTEM (Dosya Sistemlerinde Gezinme)

Linux’ta her şey bir dosya olarak kabul edilir. Dosyalar, metin, grafik ve programlar gibi verileri depolamak için kullanılır. Dizinler, diğer dosyaları depolamak için kullanılan bir dosya türüdür. Windows ve Mac OS X kullanıcıları, bunlara genellikle klasör adını verir. Her durumda, dizinler hiyerarşik bir organizasyon yapısı sağlamak için kullanılır. Bununla birlikte, bu yapı, kullanılan sistem tipine bağlı olarak biraz farklı olabilir.

Bir Linux işletim sisteminde çalışırken, dosyaları ve dizinleri nasıl değiştireceğinizi bilmek önemlidir. Bazı Linux dağıtımları, dosyaları yönetmenize izin veren GUI tabanlı uygulamalara sahiptir, ancak bu işlemlerin komut satırı aracılığıyla nasıl gerçekleştirileceğini bilmek avantajlıdır.

Nasa, Twitter ve görseldeki gibi bir çok firma linux kullanmaktadır.

DİZİN YAPISI

•Günümüzde yüzlerce linux dağıtımı bulunmaktadır. Her bir dağıtım kendi dizin yapısı hiyerarşisi kullanmaya
başladığında her bir linux dağıtımına özel dizin yapısını bilmek gerekiyordu. Bu sorunu aşmak için Dosya sistemi hiyerarşi standartı Filesystem Hierarchy Standard(FHS) belirlendi.
Bu standartın amacı kurulan yazılımların ve kullanıcıların kullanacağı dosya ve dizinleri belirlemektir. Bu standartlara göre man dosyalarının, programların yeri, veri tutan dizinlerin yeri vs hepsi belli bir kurala göre düzenlenmiştir.

Bir Windows sisteminde, dizin yapısının en üst seviyesi Bilgisayarım olarak adlandırılır . Sabit sürücüler, USB sürücüler, ağ sürücüleri gibi fiziksel aygıtlar Bilgisayarım altında görünür ve her birine C: veya D: gibi bir sürücü harfi atanır.

Aşağıda gösterilen dizin yapıları yalnızca örnek olarak verilmiştir. Bu dizinler, bu kursun sanal makine ortamında bulunmayabilir.

Windows dizin yapısının görsel bir temsili:

Windows gibi, tipik olarak bir dosya sistemi olarak adlandırılan Linux dizin yapısı da bir üst seviyeye sahiptir. Ancak, Bilgisayarım yerine kök dizin olarak adlandırılır ve eğik çizgi / karakteriyle sembolize edilir . Ek olarak, Linux’ta sürücü yoktur, her fiziksel aygıta bir sürücü harfinin aksine bir dizin altından erişilebilir.

Aşağıdaki görüntü, tipik bir Linux dosya sisteminin görsel bir temsilini göstermektedir:

Kök dizinin içeriğini görüntülemek için , ls komutu ile birlikte argüman olarak / (eğik çizgi) kök dizini kullanalım.

DİZİN YAPISI
Kısaca ne olduklarını anlamaya çalışalım ve detaylıca inceleyelim.
/bin Temel komutlar
/boot dizini bilgisayarı önyüklemek için gerek dosyaları içerir.
/dev Aygıt dosyaları
/etc Sistem yapılandırma dosyaları
/home Kullanıcının ev dizini
/lib Paylaşılan temel kütüphaneler ve çekirdek modülleri
/mnt Dosya sistemlerini geçici olarak bağlama noktası
/proc Sistemin genel ve anlık bilgilerini içeren sanal dosya sistemi
/sbin Temel sistem yöneticisi komutları
/tmp Geçici dosyalar
/usr ikincil kök, kullanıcı için yeni dizilim noktası
/var Değişken veriler, log dosyaları vb.

Dizin yapısını biraz daha ayrıntılı inceleyecek olursak

/bin dizini sistem yöneticileri ve normal sistem kullanıcıları için kullanışlı temel komutları barındırır. Kullanıcı kabuğu bash ve ls , cp , rm , cat gibi pek çok temel komutu içermesi nedeni ile en basit sistem kurulumunda bile oluşturulur.

/sbin Sistem programları ( system binary ) bu dizinde bulunur. Sistem programlarının normal programlardan (/bin) farkı sistem yönetimine yönelik olmalarıdır. Büyük bir kısmını çalıştırmaya normal kullanıcılar yetkili değildir. Çalıştırabildikleri ise sistemden bilgi almaya yönelik, sistemde değişiklik yapmayan sistem komutlarıdır. mkfs disk biçimlendirme komutu, grub , fsck , dump , init , modprobe gibi sistem komutları bu dizindedir

/boot İşletim sisteminin açılması için gerekli bütün dosyalar bu dizindedir. Çekirdekler ve initrd kalıpları bu dizinde yer alır.

/dev Bu dizin özel veya aygıt dosyalarının konumudur. UNIX dünyasındaki “her şey bir dosyadır” kuralının bir göstergesi olarak bilgisayara bağlı aygıtlar, donanımlar /dev altında kendilerine erişimi sağlayan bir dosyaya sahiptirler.

/etc Sistemin önemli yapılandırma dosyaları bu dizindedir. Yapılandırma dosyaları çalıştırılamayan fakat okunan ve
yorumlanan dosyalardır. Bir programın nasıl çalışacağını belirlerler. Buradaki dosyalar olmadan sistem programları düzgün çalışmayacaktır. etc için sistemin kalbidir diyebiliriz. Her zaman yedeklemede önceliğe sahiptir.

/home Linux çok kullanıcılı bir işletim sistemi olarak kullanıcıların dosyalarını başkalarına karşı koruduğu gibi herkese çalışması için bir ev ( home ) dizini sunar. Linux’te standart olarak kullanıcı dizinleri / home altında yer alır. Buraya kullanıcı istediği dosyaları yerleştirir, programları kurar veya siler. Çok fazla kullanıcı olan sistemlerde bu dizinin ayrı bir disk bölümü olması tavsiye edilmektedir.

/lib Bu dizin çekirdek modülleri ve sistem kütüphanelerini içerir. Çekirdek modülleri sistemin açılışı için gerekli olup bazı
donanımların sistem tarafından tanınmasını sağlar. Sistem kütüphaneleri ise /bin ve / sbin altındaki programların
çalışması için gerekli C kütüphaneleridir. Kütüphane dosyalarının uzantısı *. so şeklindedir. Çekirdek modülleri ve aygıt sürücüleri / lib modules kernel version ‘ dizini altındadır.

/proc proc sanal bir dosya sistemidir. Linux’un sunduğu en güçlü özelliklerden biri de / proc dosya sistemidir. Buradaki dosyalar gerçek içerik taşımaz. Çalışma zamanında çekirdek tarafından içerikler güncellenebilir. Sistem belleği, bağlanmış aygıtlar, donanım bilgisi, süreçlerin durumu gibi çekirdeğe ait bilgileri barındırır.

/mnt Dosya sistemlerini veya aygıtları bağlamak için kullanılan genel bağlama noktasıdır. Bağlama işlemi mount komutuyla yapılır

/tmp Geçici olarak kullanılacak dosyalar bu dizinde oluşturulur. Bütün programlar ve kullanıcılar bu dizine yazabilirler. Buradaki dosyaları ne yaptığınıza emin olmadan silmeniz tehlikeli olabilir. Çünkü silinen dosyaları o an çalışan süreçlerden biri kullanıyor olabilir.

/usr Sistemde en çok yer kaplayan dizin / usr dizinidir. Bu dizin kullanıcı için ikinci bir kök dizin olarak düşünülebilir.
Nasılki sistemin /bin, / sbin dizinleri var; / usr /bin ve usr sbin dizinleri de vardır. Sisteme sonradan kullanıcı tarafından kurulan programlar / usr ‘ı kök kabul ederek dosya sistemine yerleşirler.

/var Genel olarak değişken ( variable ) veriler/dosyalar bu dizinde tutulur. Örneğin sistem günlükleri, mail kuyruğu, gelen mailler, yazıcı kuyruğu, programların kilit dosyaları vs…

•Directory : Bize içinde bulunan nesneleri i node ve isimleriyle gruplamamıza yardımcı olan file system’dir
•Dizinlerin içinde bir üst dizini gösteren ‘ .. ‘ ve kendini gösteren ‘ . ‘ dizincikleri bulunur.
•Dizinler; Root Directory ve Sub Directory olmak üzere ikiye ayrılır.
•/ dizini ulaşılabilecek en üst noktadır. Tüm diğer dizinler / dizini altında toplanmıştır.
•/root ile karıştırılmamalıdır. /root , root kullanıcısının home dizinidir.

Ana Dizin

Ev dizini terimi genellikle yeni Linux kullanıcılarının kafasını karıştırır. Başlangıç ​​olarak, çoğu Linux dağıtımında kök /dizinin altında home dizini vardır.

/home dizinin altında, sistemdeki her kullanıcı için bir dizin vardır. Dizin adı, kullanıcının adı ile aynıdır. Aşağıdaki görseldeki sysadmin yazan yeri kendi açtığınız kullanıcı gibi düşünebilirsiniz.

Ev dizini önemli bir dizindir. Başlangıç olarak bir kullanıcı kabuğu açtığında, genellikle işlerimizin çoğunu burada yaparız. Önemli noktalardan bir tanesi ise kendi dizin yapımızın üzerinde dosya ve dizin oluşturup silmek için tam denetime sahip olduğumuz dizindir.

Çoğu linux dağıtımında, bir ana dizindeki dosyalara erişebilen tek kullanıcı sistemin sahibi ve yöneticisidir. Bir linux dosya sistemindeki diğer bir çok dizin ve dosyalar izinler ile korunurlar.

Ev dizinini temsil etmek için kullanılan özel bir sembol vardır. ~ (tilde) dolasıyla mehmetoz kullanıcısı oturum açtıysa ~ , /home/mehmetoz dizin yerine tilde karakteri kullanılabilir. Hemen örnekleyelim. Yazdığım komuta çok takılmayalım. Neyi göstermek istediğime bakalım.

Tilde karakterini ve ardından kullanıcı hesap adını kullanarak başka bir kullanıcının ev dizinine geçebiliriz. Yani ~mehmetoz eşittir /home/mehmetoz ifade eder.

Artık komutlara geçebiliriz. Kullanıcının şu anda dosya sisteminde nerede olduğunu bulmak için pwd komutunu kullanabiliriz.

pwd komutu dosya sistemi içinde kullanıcının o anki konumunu yazdırır. Bu komutu unutmayalım.

Dizinleri Değiştirme

Bir kullanıcı kabuğu açtığında, genellikle kendi ev dizininde başlar. Aşağıdaki görselde sysadmin kullanıcısı oturum açtığında bu kullanıcı için ana dizinde başlar.

En çok kullanacağımız komutlardan bir tanesi, dosya sisteminde gezinmek için cd (change directory–dizin değiştir) komutunu kullanıyoruz.

Yukarıda ki görselde dizinleri görebiliyoruz. Ana dizinden Desktop dizinine geçmek için cd komutu ve argümanı yazıyoruz. Yani cd Desktop sonra enter tuşuna basıyoruz. Makalemizin önceki kısımlarda Büyük küçük harf duyarlılığından bahsetmiştim. Bunları tekrarlamama gerek yok diye düşünüyorum. Tab tuşu ile komutu tamamlayabilirisiniz.

Komutu yazıp akabinde hangi dizinde olduğu bulmak için pwd komutunu çalıştırıyorum. Görselde dikkat ettiyseniz yeni konum olarak Desktop yolu da eklenmiş oldu. Çıktı aşağıdaki gibi olmalıdır.

Kullanıcı mevcut olan bir dizine cd komutu ile geçtiğinde herhangi bir çıktı vermez. Ancak mevcut olmayan bir dizine geçmeye çalışırsa, komut hata mesajı verir.

Dosya sistemini bir harita olarak düşünün. Yollar, adım adım gezineceğimiz dizin adresleridir. Herhangi bir dosyanın konumunu belirtmek için Örnek /home/mehmetoz ama dizinin yoludur.

Absolute ve Relative olarak iki tür yol vardır.

Absolute (Mutlak) yollar, kullanıcının bir dizinin tam konumunu belirlemesine izin verir. Her zaman kök dizinde başlar ve bu nedenle her zaman / karakteriyle başlamalıdır. Yukarıda verdiğim örnekte bir mutlak yoldur. Sisteme kök / dizinden başlamasını home ve ardından mehmetoz ‘a geçmesini söyler.

Yani argüman olarak arkadaşlar / kök dizini sembolünü koyarsanız hangi dizinde olursanız olun. Ana dizinden yolu tarif etmeniz gerekmektedir. Aşağıdaki görselde ilk olarak mutlak yol ile gittim. Gördüğünüz gibi / karakterini koyduğum için tam yol yazmam gerekti.

NOT: Hangi dizinde olursanız olun cd komutunu çalıştırırsanız, o kullanıcının ev dizinine gider.

Rekative (Göreli) yollar ise mevcut dizinde başlar. Yani geçerli konuma göre dosyaya yön verir. / karakteriyle başlamazlar. Bunun yerine, bir dizinin adıyla başlar. Yukarıda örneğin tam tersi. Hemen uygulayalım. cd komutu ile ev dizinime geçiyorum. cd yazıp tab tuşuna basıp dosya ve dizinleri görmek istiyorum. Ardında cd Music ile müzik dizinine başına / koymadan erişim gerçekleştiriyorum. Lütfen uygulamalı olarak yapın.

İki örnekte
Absolute Path: cd /home/mehmetoz/Documents
Relative Path: cd Music/
Her geçişte pwd komutunu aktif olarak kullanınız. Umarım anlaşılır olmuştur.

Kısayollar

.. Karakterleri (iki nokta)

Kullanıcının hangi dizinde bulunduğuna bakılmaksızın, iki nokta karakteri her zaman geçerli dizine göre bir üst dizini temsil eder. Çift noktayı daha uzun yollarda kullanabilirsiniz.

. karakteri (tek nokta)

Kullanıcın hangi dizinde olduğuna bakılmaksızın, tek nokta her zaman geçerli dizini temsil eder.

cd .. yazıp enter tuşuna bastığımız zaman bir üst dizine geçecektir. pwd komutu ile ilk olarak nerede olduğuma bakıyorum.

cd .. ile bir üst dizine geçiş yapıp akabinde pwd komutu ile tekrar nerede olduğuma bakıyorum.

cd yazıp enter tuşuna basıp tekrar kendi evimize geçiyoruz.

Ek olarak bir kez daha tekrarlamakta var…

•Komut satırında dizinler arasındaki geçişler cd komutuyla yapılır.
•Cd komutu yalnız kullanılırsa kullanıcının home dizinine geçilir.

cd


•cd . : bulunduğu dizinde kalır.

cd .


•cd .. : Bir üst dizine geçer.

Bu kısımda kafanız karışabilir. Bir alt dizine geçiyor gibi düşünmeyin. Aşağıdaki görseldeki gibi ok işaretlerini takip ederseniz. Hiyeraşide bir üst dizine geçiş yapıyoruz. Çünkü /root en üst dizindir ve onun üstü yoktur.


•cd / : Root dizinine gider.

cd /

Bir Dizindeki Dosyaları Listeleme

Önceki örnekler için, sürekli kullandığımız komut olan ls, bir dizinin içeriğinin görüntülemek için ve dosyalar hakkında daha detaylı bilgileri vermektedir. Varsayılan olarak, hiç bir opsiyon ve argüman kullanılmadığında geçerli dizindeki dosyaları listeler.

ls komutu ayrıca dosya sistemindeki herhangi bir dizinin içeriğini listelemek için kullanılır. Dizine giden yolu söylemeniz yeterlidir. Örnek olarak boot dizinin içini listeleyelim.

NOT: Bir çok linux dağıtımında komut dosya türünü ayırt etmek için renk kullanılır. Örneğin, dizinler mavi, çalıştırılabilir dosyalar yeşil, arşivlenmiş dosyalar kırmızı ve sembolik bağlantılar turkuaz görüntülenebilir.

Gizli Dosyaları Listeleme

ls komutunu çalıştırdığımızda tüm dosyalar otomatik olarak gösterilir. Varsayılan olarak gizli dosya ve dizinler listelenmez. (.) nokta ile başlaya herhangi bir dosya veya dizin gizlidir.
Gizli dosya ve dizinleri görmek için ls -a komutunu çalıştırıyorum. Görseldeki gibi bir çok dosya ve dizin geldi.

Peki bu dosyalar ilk başta neden gizlidir. Linuxta kabuğun veya programlarının nasıl çalıştığını özelleştirmek için tasarlanmış özelleştirme dosyaları vardır. Örneğin .bashrc ana dizindeki bu dosya, değişkenleri ve takma adları oluşturmak veya değiştirme gibi kabuğun özelliklerini özelleştirir.
Bu özelleştirme dosyaları, düzenli olarak çalıştığınız dosyalar değildir bu yüzden dosyaların görüntülenmesi ve bulunması daha da zordur.

Uzun Ekran Listesi

Her dosyanın kendisiyle ilişki meta veri adı verilen ayrıntıları vardır. Bu, boyut sahiplik veya zaman damgaları gibi bilgileri içerebilir. Bu bilgileri görüntülemek için -l opsiyonunu kullanmamız gerekmektedir. Örnek olarak /var/log çıktılarının bir listesine bakalım.

ls -l /var/log çalıştıralım.

Yukarıdaki çıktıda, her satır tek bir dosya hakkındaki meta verilerini gösterir. Şimdi her bir veri alanlarını inceleyelim. Bu kısımlar çok önemli arkadaşlar lütfen dikkatlice okuyup uygulayalım.

NOT: Arkadaşlar hazır verileri listelemişken ekranda gördüğümüz çıktıyı yorumlamaya çalışalım. Eğitim bir ilerleyen zamanlarında daha detaylı değineceğim. Önemli konuları birden fazla tekrarlıyorum daha iyi anlaşılabilir olması için.

Dosya Tipi

Aşağıdaki görselde kırmızı olarak işaretlediğim kısma dikkat ederseniz. “d” ile başlayanları “-“ ile başlayanlar ile normal dosyayı ifade eder.

Her satırın ilk karakteri dosyanın türünü gösterir. Diğer dosya türlerine bakalım.

Sembol Dosya Tipi Açıklama

d directoy Diğer dosyaları saklamak için kullanılır.
– file Okunabilir dosyalar, görüntü dosyaları, ikili ve sıkıştırılmış dosyaları içerir.
l symbolic link Başka bir dosyayı işaret eder. (Kısayol gibi düşünebilirsiniz)
s socket İşlemler arasında iletişime izin verir.
p pipe İşlemler arasında iletişime izin verir.
b block file Donanımla iletişim kurmak için kullanılır.
c character file Donanımla iletişim kurmak için kullanılır.

İzinler

Kırmızı olarak işaretlediğim son 9 karakter dosyanın izinlerini göstermektedir. İzinler, belirli kullanıcıların bir dosyaya nasıl erişebileceğini gösteririr.

Sabit Bağlantı Sayısı

Bu sayı, kaç tane sabit bağlantının bu dosyayı işaret ettiğini gösterir.

Kullanıcı Sahibi

Her dosya bir kullanıcı hesabına aittir. Bu önemlidir, çünkü sahibin bir dosyada izinleri belirleme hakları vardır.

Grup Sahibi

Bu dosyanın hangi gruba ait olduğunu gösterir. Bu önemlidir çünkü bu grubun herhangi bir üyesinin dosya üzerinde bir dizi izni vardır.

Dosya Boyutu

Dosyanın varsayılan boyutunu bayt olarak görüntülenir.

Zaman Damgası

Dosya içeriğinin en son değiştirildiği zamanı gösterir. Dizinler için bu zaman damgası, bir dosyanın dizine en son ne zaman eklendiğini veya dizinden silindiğini gösterir.

Dosya adı

Son alan dosyanın veya dizinin adını içerir.

Dizinleri Listeleme

-d opsiyonu kullanıldığı zaman geçerli dizini ifade eder ve onun içinde değil içeriği. Başka seçenekler kullanılmadan, oldukça anlamsızdır. Geçerli dizin her zaman tek bir nokta (.) karakteriyle ifade edilmektedir.

Uzun listenin sonundaki tek noktaya dikkat edin. Bu, içeriğin değil, geçerli dizinin listelendiğini gösterir.

Yineleme Listeleri

Bir dizindeki tüm dosyaları ve bu dizinin altındaki tüm alt dizinler -deki tüm dosyaları görüntülemek istediğiniz zamanlar vardır. Buna Recursive Listing (Yineleme Listesi) denir.
Yinelemeli bir listeleme gerçekleştirmek için, ls komutu ile R opsiyonunu kullanmalıyız. ls -R

NOT: Örneğin, kök dizinde komutu çalıştırmak, sistemdeki herhangi bir takılı USB cihazındaki ve DVD’deki tüm dosyalar dahil olmak üzere dosya sistemindeki her dosyayı listeler. Yinelemeli listelerinin kullanımını daha küçük dizin yapılarıyla sınırlayın.

Listeyi Sıralama

ls komutu ile bize faydalı olacak bir kaç tane daha opsiyonları inceleyelim. Örneklerde “l” opsiyonunu ile uzun liste çıktıları alarak daha anlaşılır olması için hepsinde kullanacağım.

Varsayılan olarak çıktılar alfabetik sıraya göre listelenir. Bazı durumlarda alfabetik sıranın tam tersi almak isteyebiliriz. Bu durumlarda r opsiyonunu kullanmamız yeterlidir.

Liste alfabetik sıraya geldiği için dosya boyutuna göre sıralı değildir. Dosya boyutuna göre sıralamak için -S opsiyonunu kullanıyoruz. Bu opsiyon ile büyükten küçüğe doğru sıralayacaktır.
ls -Sl

Dosyaları büyükten küçüğe sıralamıştık. Biraz daha kafa yorarsak küçükten büyüğe nasıl sıralayabileceğimizi anlayabiliriz. r opsiyonun ters işlemlerde işimize yarıyordu. Yani ben ls -lrS kombinasyonunu uyguladığım zaman küçükten büyüğe sıralaması gerekiyor. Hemen örnekleyelim.
ls -rSl

-h opsiyonu önemli bir komut olduğu için tekrar vurgulamakta fayda görüyorum. Bu opsiyon ile anlayabileceğimiz bir şekilde dosya boyutlarını görüntüleyebiliyoruz. Görselde görüldüğü gibi komut, argüman ve opsiyon şeklinde bir sıralama ile çıktı aldım.
ls /var/log/ -lhS

Geldik güvenlik alanında önemli opsiyonlardan bir tanesine. Yapılan işlemlerin saat ve tarihini bilmek çok önemlidir. Opsiyonu söylemeden önce modifiye edilmiş zamana dayalı dosyaları sıralar. İlk olarak en son değiştirilen dosyaları listeleyecektir. Ek olarak eski dosyalar için yalnızca tarih gösterildiğini de unutmayalım.  -t opsiyonunu kullanıyorum.
ls -lt

Peki ya tam tersi yani değişiklik zamanının en yeni yerine en eskiden yeniye göre listelemek istersek ne yapmalıydım? Yine -r opsiyonunu kullanıp, bir kombinasyon yapıyorum.
ls -ltr

NOT: Dizinlerdeki değiştirilme tarihinin, bir dosyanın dizine en son eklendiği veya dizinden kaldırıldığı zamanı temsil ettiğini unutmamak önemlidir.

Bir dizindeki dosyalar günler veya aylar önce değiştirildiyse, eski dosyalar için yalnızca tarih sağlandığından tam olarak ne zaman değiştirildiklerini söylemek zor olabilir. Daha ayrıntılı değişiklik zamanı bilgisi –full –time yazarak tam zaman damgasını (saatler, dakikalar, saniyeler dahil) görüntüleme seçeneğini kullanabilirsiniz. -l opsiyonunu kendi üstleneceği için yazmamıza gerek yoktur.
ls -t –full-time

NOT: Fark ettiyseniz opsiyonların sürekli sırasını karıştırarak uyguladım hepsinde çalıştı ve aynı çıktıyı verdi. Yani bir önemi yok, istisnalar dışında ilerleyen konularda bunlardan da bahsedeceğim.

Bu makalemizde sizlerle komut satırının gücünü, sorun yaşadığımız yerlerde nasıl yardım alabileceğimizi ve dosya sistemleri gibi konular ile güzel bir giriş yaptık. İlk başta kafa karışıklığı olacağını düşündüğüm için en basit seviyede anlatmaya çalışıyorum.  Makaleyi yazarken, Networking Academy ve Oracle Linux’ten faydalandım. Bol bol uygulama yapmanızı bekliyorum. Anlamadığınız yerleri kesinlikle tekrar tekrar uygulayın araştırın ve yorumlarda yazınız. Makaleyi yazarken, Networking Academy ve Oracle Linux 8.3’ten faydalandım. Modül 3’de Dosya ve dizinleri yönetme, arşivleme ve sıkıştırma ile devam edeceğim. Merak ettiklerinizi eksikleri veya eklemek istediklerinizi yorumlarda belirtebilirsiniz. Umarım faydalı olmuştur. Başka bir makalede görüşmek üzere. Sağlıcakla kalın 🙂

İlgili Makaleler

4 Yorum

Bir yanıt yazın

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

Başa dön tuşu