Alıştırma - Bash'i deneme

Tamamlandı

Kendi Linux bilgisayarınızda Bash komutlarını yerel olarak çalıştırabilirsiniz. Linux sunucularına erişiminiz varsa uzaktan oturum açabilir ve Bash komutlarını orada çalıştırabilirsiniz. Ancak kimse canlı üretim sisteminde, özellikle de Northwind'deki ilk günlerinde deneme yapmak istemez.

Bu ünitede, Linux terminaliniz olarak sağ taraftaki Azure Cloud Shell'i kullanacaksınız. Azure Cloud Shell, Azure portalından veya adresinden https://shell.azure.comerişebileceğiniz bir kabukdur. Bunu kullanmak için masaüstü veya dizüstü bilgisayarınıza herhangi bir program yüklemenize gerek yoktur.

Cloud Shell hakkında bilgi edinin

Öncelikle öğrendiğiniz Bash komutlarını kullanarak Cloud Shell'de olan biteni keşfedelim.

  1. ls komutunu kullanarak geçerli dizindeki tüm dosyaları ve alt dizinleri listeleyin:

    ls
    
  2. Şuna benzer bir çıkışla karşılaşmanız gerekir:

    yourname@Azure:~$ ls
    clouddrive
    

    clouddrive, geçerli dizininizin alt dizinidir. Cloud Shell'i kendi hesabınızda kullandığınızda kalıcı olan bağlanmış bir dosya paylaşımıdır. Şu anda bunu Microsoft Learn korumalı alanında kullanıyorsunuz.

  3. Ancak geçerli dizin nedir? Öğrenmek için komutunu kullanalım pwd . "çalışma dizinini yazdır" anlamına gelir. pwd Şu anda hangi dizinde olduğunuzun uzun biçimli yolunu yazdırır.

    pwd
    
  4. Şunun gibi bir çıktı görmeniz gerekir:

    yourname@Azure:~$ pwd
    /home/yourname
    

    Bu çıkış, Linux dosya sisteminin kökünde yer alan home adlı dizinin içindeki yourname adlı dizinde olduğunuzu gösterir.

  5. Geçerli dizinde pek fazla şey yokmuş gibi görünüyor. Bash bayrağını kullanarak tüm gizli dosyaları ve dizinleri yazdıralım ve bunun doğru olup olmadığını kontrol edelim.

    ls -a
    
  6. O da ne! Bu çıkış, bu dizinde düşündüğümüzden çok daha fazla öğe olduğunu gösterdi.

    yourname@Azure:~$ ls -a
    .  ..  .azure  .bash_history  .bash_logout  .bashrc  clouddrive  .profile  .tmux.conf  .viminfo
    
  7. Bu dosyalar ve alt dizinler de ne? Bazıları Cloud Shell'in çalışmasını sağlayan arka plan dosyaları. Diğerlerinin bazılarını inceleyelim.

    • . geçerli dizininizi, .. ise üst dizininizi gösterir. Nerede olursanız olun tüm gizli dosyaları ve dizinleri yazdırdığınızda . ve .. öğelerinin de yazdırıldığını görürsünüz.
    • .bash_history, kabuğa girdiğiniz tüm komutların depolandığı özel bir Bash dosyasıdır. Bash, komut geçmişinizi hatırlar ve bu oldukça faydalı bir özelliktir.
    • .bash_logout, oturum açma kabuğu mevcut olduğunda okunan ve çalıştırılan bir diğer özel Bash dosyasıdır. Linux süper kullanıcıları bunu değiştirerek ortamınızı özelleştirebilir.
    • .bashrc, yeni bir kabuk başlattığınızda çalıştırılan önemli bir Bash yapılandırma dosyasıdır. Bu dosyayı incelemek üzere açmak isterseniz değişiklik yapmamaya dikkat edin. Aksi takdirde istenmeyen sonuçlarla karşı karşıya kalabilirsiniz.

Geçmişinizi çağırma ve komutları otomatik olarak tamamlama

Buna benzer karışık komutlar girerken hata yapmak çok olasıdır:

ls -a .azure/commands/202?*.log

Neyse ki Bash, işinizi kolaylaştıracak işlevlere sahiptir.

Önceki komutları çağırma

  1. Yazım hatası içeren şu komutu girmeyi deneyin (202? yerine 203?):

    ls -a .azure/commands/203?*.log
    
  2. Bu desenle eşleşen herhangi bir dosya olmadığını bildiren şu çıkışı görmeniz gerekir:

    ls: cannot access '.azure/commands/203?*.log': No such file or directory
    
  3. Hatanızı düzeltmek için komutun tamamını yeniden girmek yerine Yukarı ok ve Aşağı ok tuşlarını kullanarak önceden girilen komutları çağırabilirsiniz. Yukarı ok tuşunu kullanarak hatalı komutunuzu çağırmayı deneyin. Ardından Sol ok tuşunu kullanarak düzeltin ve sondaki 3 yerine 2 yazın. Düzeltilen komutu göndermek için Enter tuşuna basın.

    Yukarı ok tuşunu birden fazla kez kullanarak daha önceki komutlara dönebilirsiniz. Aşağı ok tuşuyla da sonraki komutlara geçebilirsiniz.

  4. Şimdi aşağıdaki çıkışa benzer bir şey görmeniz gerekir. Komutunuzun doğru şekilde çalıştığını belirtir ve verilen desenle eşleşen dosyaları listeler.

    .azure/commands/2020-01-29.21-56-35.login.103.log
    .azure/commands/2020-01-29.21-56-38.account_set.112.log
    

Otomatik tamamlama

Az önce bulduğunuz dosyalardan birinin içeriğini okumak istediğinizi düşünelim. Dosyanın içeriğini ekrana yazdırmak için cat ("zincirle") komutunu kullanabilirsiniz.

  1. Bu komutu kullanmak için tam dosya adını kullanmanız gerekir; örneğin:

    cat .azure/commands/2020-01-29.21-56-35.login.103.log
    
  2. Ancak dosya adı oldukça uzundur ve hata yapmanız olasıdır. Bunun yerine Bash'in otomatik tamamlama özelliğini kullanarak işin çoğunu sizin için yapmasını sağlayabilirsiniz. Şunu yazmayı deneyin:

    cat .a
    

    Ardından Sekme tuşuna basın. Ne olur?

  3. Komutunuzda "azure/" kelimesinin devamının görünmesi gerekir:

    cat .azure/
    

    Kelimelerin başlangıcını yazıp Sekme ile otomatik tamamlama özelliğini kullanmaya devam edin. Belirsizlik olduğunda Bash'in herhangi bir sonuç göstermeyeceğini unutmayın. Sekme tuşuna iki kez bastığınızda Bash belirtilen yolda bulunan ve yazdığınız harflerle eşleşen tüm dosyaları ve dizinleri yazdırır.

  4. Komut dizininde gerçek bir .log dosyası bulana kadar devam edin. Ardından Enter tuşuna basın ve cat komutunu kullanarak içeriğini ekrana yazdırın. Şuna benzer olacaktır:

    CMD-LOG-LINE-BEGIN 103 | 2020-01-29 21:56:35,426 | INFO | az_command_data_logger | command args: login --identity
    CMD-LOG-LINE-BEGIN 103 | 2020-01-29 21:56:37,604 | INFO | az_command_data_logger | exit code: 0
    

    Yanlış bir harf girmeniz durumunda Bash, yazmaya çalıştığınız şeyi doğru olarak tahmin edemeyecektir.

man komutunu kullanma

Az önce cat komutunu kullandınız ancak henüz hakkında bilginiz yok. cat komutu hakkında daha fazla bilgiye ulaşmak için man komutunu kullanın.

  1. cat komutunun ne işe yaradığını ve nasıl kullanılacağını anlamak için aşağıdaki komutu girin:

    man cat
    

    Evet, kabuğunuza "man cat" yazdınız. Bash komutları hem karmaşık hem de şaşırtıcı olabilir.

  2. Şunun gibi bir çıktı görmeniz gerekir:

    CAT(1)                                       User Commands                                       CAT(1)
    
    NAME
           cat - concatenate files and print on the standard output
    
    SYNOPSIS
           cat [OPTION]... [FILE]...
    
    DESCRIPTION
           Concatenate FILE(s) to standard output.
    
           With no FILE, or when FILE is -, read standard input.
    
           -A, --show-all
                  equivalent to -vET
    
           -b, --number-nonblank
                  number nonempty output lines, overrides -n
    
           -e     equivalent to -vE
    
    ...
    
  3. Kılavuz sayfasını kaydırmak için yukarı ve aşağı ok tuşlarını kullanabilir, çıkmak için ise q yazabilirsiniz.

Dizin değiştirme

Şimdi temel Bash komutlarından bir diğerini inceleyelim: cd.

Kabuğu kullanırken Windows veya Mac tabanlı bilgisayarlarınızda olduğu gibi her zaman bir dizinin içinde olursunuz. Başka bir klasöre değiştirmek için cd (dizini değiştir) komutunu kullanmanız gerekir.

Bu komut oldukça basittir ancak biraz pratik yapmanız gerekir.

  1. Öncelikle doğru yerde olduğunuzdan emin olmak için şu komutu girin:

    cd ~
    

    Bu komutla kabuğunuzdaki özel home dizinine geçmiş oldunuz (daha önce orada değilseniz).

  2. pwd komutunu bir kez daha kullanarak yeniden kontrol edin:

    pwd
    
  3. Şunun gibi bir çıktı görmeniz gerekir:

    /home/yourname
    

    ~, Bash'in bu home dizinine başvurmak için kullandığı başka bir özel karakterdir. Kabukta nerede olursanız olun ~ ile /home/yourname konumuna başvurabilirsiniz.

  4. Şimdi günlük dosyalarının bulunduğu dizine geçelim (daha önce olduğumuz yer):

    cd .azure/commands/
    

    Tam komutu girebilir veya Sekme tuşuyla otomatik tamamlamayı kullanabilirsiniz.

    Şimdi komutları girdiğiniz yer değiştir ve kabukta olduğunuz yeri gösterir:

    yourname@Azure:~/.azure/commands$
    
  5. Bir dizin yukarı çıkmak için özel .. söz dizimini kullanmayı deneyin:

    cd ..
    

    Şimdi dizin yapısında bir üst düzeyde olmanız gerekir ve komut satırınız şu şekilde görünmelidir:

    yourname@Azure:~/.azure$
    

Tebrikler! Bash uzmanı olma yolunda ilk adımlarınızı attınız. Öğrenmeye devam edin.

Bilginizi ölçün

1.

Bash komutu olarak girdiyseniz hangi dizine cd . geçersiniz?