Alıştırma - Bash'i deneme
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.
ls
komutunu kullanarak geçerli dizindeki tüm dosyaları ve alt dizinleri listeleyin:ls
Ş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.
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
Ş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.
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
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
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
Yazım hatası içeren şu komutu girmeyi deneyin (
202?
yerine203?
):ls -a .azure/commands/203?*.log
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
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
yerine2
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.
Ş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.
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
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?
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.
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.
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.
Ş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 ...
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.
Ö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).
pwd
komutunu bir kez daha kullanarak yeniden kontrol edin:pwd
Ş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.Ş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$
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.