Basit Terminal Kullanımı

Serimizin bu noktasında, Linux tabanlı işletim sistemlerinde kullanabileceğiniz, ilerleyen süreçlerde sıklıkla ihtiyacınız olacak olan bazı komutlardan bahsedeceğiz. Her ne kadar Linux tabanlı işletim sistemlerinde desek de bahsedeceğimiz komutlar çok genel olduğu için diğer işletim sistemlerinde de aynılarını veya benzer komutları bulabilirsiniz.

Terminal seçimi#

Öncelikle hemen hemen tüm işletim sistemleri kendi içlerinde bir terminal emülatörü bulundurur, ancak şahsen sundukları ek özellikler nedeniyle ben ayrıca bir emülatör yüklüyorum.

Daha önce kullandığım terminal emülatörleri.

Siz de kendi platformunuza ve keyfinize göre herhangi bir emülatör seçip başlayabilirsiniz.

Windows kullanıcıları ** WSL ** vasıtasıyla bilgisayarlarında Linux tabanlı bir işletim sistemine sahip olabilirler, burada üstünden geçeceğimiz komutları deneyebilirler.

Mac kullanıcılarının ise komutları olduğu gibi kullanabilir.

Eğer terminal emülatörünü açtığınızda aşağıdakine benzer bir komut satırı görüyorsanız başlamaya hazırız.

Screenshot from 2022-01-08 22-00-34.png

Temel komutlar#

echo#

Bir programlama dilini öğrenmeye başladığımızda genelde ilk yaptığımız şey ekrana “Merhaba Dünya” yazdırmak olur. Burada da geleneği bozmayalım. echo komutu ekrana birşeyler bastırmanızı sağlar.

echo Merhaba Dünya

pwd (print working directory)#

Biliyorsunuz ki her işletim sisteminin sahip olduğu bir dosya dizin yapısı var, örneğin Windows’da bir uygulama yüklediğinizda genellikle “Program Files” isimli klasörde görürsünüz veya Linux tabanlı işletim sistemlerinde her kullanıcının dosyaları “/home” isimli dizinin altında yer alır.

Linux tabanlı bir işletim sisteminin dosya yapısı:

Linux file structure

Windows işletim sistemi dosya yapısı:

Windows file structure

Terminal içerisinde pwd komutunu kullandığınızda, o an o terminalin çalıştığı dizinin yol(path) bilgisini ekranda görürsünüz.

Screenshot from 2022-01-08 22-11-37.png

ls (list)#

ls komutu en basit haliyle bir dizindeki tüm dosyaları ve diğer dizinlerin listesini verir. Örneğin ls /usr/local komutunu çalıştırırsanız cihanızıdaki “/usr/local” klasörü altındaki tüm dosya ve dizinleri görürsünüz. Tabi ki cihazınızda “/usr/local” dizini bulunuyor olmalı. Aksi taktirde bir hata mesajıyla karşılaşırsınız.

Screenshot from 2022-01-08 22-28-23.png

Burada ls komutundan sonra boşluk bırakıp “/usr/local” yazdığımızda ls komut (çalıştırılacak program) iken “/usr/local” ise bu komuta gönderdiğimiz argüman olarak isimlendiriliyor.

Eğer ls komutunu hiç argüman göndermeden çalıştırırsak, o an bulunduğunuz dizindeki dosyaları listeleyecektir.

Tabi ls komutu listelenecek dizin dışında farklı argümanlar da alır. Örneğin bu komutu ls -l şeklinde çalıştıracak olursak, önümüze gelen çıktının daha detaylı bir liste olduğunu görebiliriz.

Screenshot from 2022-01-08 22-34-35.png

Aslında bu komut bir çok farklı argüman kabul ediyor peki biz bunların hepsini ezberlemeli miyiz? Tabi ki hayır! Çok sık kullandıklarımız muhtemelen aklımızda kalacaktır ancak hepsini ezberlemek hem zor hem gereksiz. İşte bu durumda sıradaki komutumuzu kullanabilirsiniz.

man (manual)#

man komutu diğer komutların kullanım kılavuzunu(manual) görmenizi sağlar. Geliştiriciler olarak birçoğumuz bu komutu biliriz, ancak nedense komutlarla ilgili cevaplarını çok kolaylıkla bulabileceğimiz sorular için Google’a başvururuz. Oysa ki bu komutu kullanmayı alışkanlık haline getirsek cevapları çok daha hızlı elde edebiliriz.

Örnek olarak daha öncedek gördüğümüz ls komutunun kullanım kılavuzunu görmek isterseniz man ls yazmanız yeterli olacaktır.

Screenshot from 2022-01-08 22-45-36.png

Diğer komutları çalıştırdığımızda sonuçları ekrana basılıyordu ve terminal tekrar komut almaya hazır hale geliyordu, ancak burada durum farklı, kullanım kılavuzları sayfalarca uzunlukta olabileceği için man terminal üstünde bir arayüz sağlayarak kılavuzun içeriside gezinmenizi sağlıyor. Dikkat ettiyseniz terminalimizin en altında bu arayüzü nasıl kullanacağınıza dair bazı ipuçları bulunuyor. Eğer bu konumdayken h tuşuna basarsanız kullanabileceğiniz tüm kısayolların bir listesini görürsünüz. Kılavuzda daha fazlasını görmek için (diğer sayfaları) “enter” tuşunu kullanabilirsiniz. Çıkmak için ise q tuşuna basmanız yeterli.

Bu yazıda kullanacağımız tüm komutların ayrıntılı kullanımını görmek için lütfen man komutunu kullanın en az bir kere bile olsa göz gezdirirseniz inanılmaz faydalı kullanımlarla karşılaşabilirsiniz.

cd (change directory)#

Bulunduğumuz konumun neresi olduğunu ve o konumun içerisindeki tüm dosya ve dizinleri gördük. İşte cd komutu da dizinler arasında gezinmenizi sağlar.

Örneğin cd /home/ugursogukpinar/Downloads kendi bilgisayarımdaki indirilenler klasörüne geçiş yapabiliyorum.

Screenshot from 2022-01-08 22-59-22.png

Burada öğrenmemiz gereken birkaç kavram bulunuyor.

Örneğin;

cd ./bir-dizin-adi komutunu çalıştırırsak bulunduğumuz konumdan “bir-dizin-adi” isimli dizine gitmek istediğimizi ifade etmiş oluruz. Dolayısıyla . ifadesi bulunduğumuz dizini ifade ediyor.

Bir başka örnek olarak;

cd .. şeklinde bir ifade kullanırsak, bulunduğumuz dizinden bir üst dizine gitmek istediğimizi söylemiş oluruz. Yani .. bir üst dizini ifade ediyor.

cd ../abc bu ifade ise bir üst dizindeki “abc” isimli klasöre geçiş yapmak istediğimizi söylüyor.

Bu ifadeleri cd komutuna özgü olarak düşünmeyin. . ve .. gibi ifadeler komut satırının size verdiği güçten geliyor, aynı özellikleri ls komutuna da uygulayabilirsiniz. ls .. dediğinizde bir üst dizindeki dosyaları listelemiş olursunuz.

mkdir (make directory)#

Komut satırında sadece dizinler arasında gezinmek yetmez, bir noktada birşeyleri oluşturmamız gerekecek. Bir dizin oluşturmak isterseniz mkdir komutunu kullanabilirsiniz.

Screenshot from 2022-01-08 23-07-06.png

İç içe birden fazla dizini aynı anda yaratmak isterseniz, -p argümanını kullanabilirsiniz.

Screenshot from 2022-01-08 23-09-40.png

Eğer varolan bir dizini tekrar oluşturmaya çalışırsanız hatayla karşılaşırsınız, eğer oluşturmak istediğiniz dizin zaten var ise hatayla karşılaşmak istemiyorsanız yine -p komutunu kullanabilirsiniz.

Screenshot from 2022-01-08 23-12-39.png

touch#

Dosya sisteminde bir dosyanın ne zaman oluşturulduğu, en son ne zaman açıldığı ve en son ne zaman güncellendiğine dair bazı bilgiler tutulur. touch komutu aslında bu tarihlerin güncellenmesi için hazırlanmıştır. Ancak çoğu geliştirici bu komutu içi boş yeni bir dosya oluşturmak için kullanır.

Screenshot from 2022-01-08 23-51-18.png

cat#

cat komutu en temelde bir dosyanın içeriğini ekrana bastırmak için kullanılır.

Screenshot from 2022-01-08 23-55-28.png

rm (remove)#

rm komutu dosya ve dizinleri silmek için kullanılır.

Bu komutu kullanırken verdiğiniz argümanlara özellikle dikkat etmelisiniz. Aksi taktirde çok büyük veri kayıpları yaşayabilirsiniz.

touch ./file-1
touch ./file-2
rm file-1 file-2

Örnekte önce file-1 ve file-2 isimli dosyaları touch komutuyla bulunduğumuz dizinde oluşturup, ardından rm komutuyla siliyoruz. Gördüğünüz gibi rm komutuna birden fazla argüman geçerek aynı anda birden fazla dosyayı silebiliyorsunuz.

mkdir -p /home/ugursogukpinar/my-new-dir/nested-dir
rm -r /home/ugursogukpinar/my-new-dir

Bir dizini silmek isterseniz yukardaki örnekte olduğu gibi -r parametresini kullanabilirsiniz. Bu durumda verdiğiniz dizin ve onların altında olan tüm dizinler silinecektir.

cp (copy)#

Adından da kolaylıkla anlaşılacağı gibi dosya veya dizinleri bir başka noktaya kopyalamak için kullanılır.

# my-new-dir/first-dir dizini oluşturalım.
mkdir -p /home/ugursogukpinar/my-new-dir/first-dir

# my-new-dir dizini içerisine geçelim.
cd /home/ugursogukpinar/my-new-dir

# first-dir dizini altına iki adet dosya oluşturalım.
touch ./first-dir/file-1
touch ./first-dir/file-2

# first-dir dizinini my-new-dir dizinine copied-second-dir olarak kopyalayalım.
cp -r /home/ugursogukpinar/my-new-dir/first-dir /home/ugursogukpinar/my-new-dir/copied-second-dir

# Kopyaladıktan sonra my-new-dir dizininde son duruma bakalım.
ls -la /home/ugursogukpinar/my-new-dir

# Aynı şekilde copied-second-dir dizini içerisine bakalım.
ls -la /home/ugursogukpinar/my-new-dir/copied-second-dir

Yukarıdaki komut dizisinin çıktısına baktığınızda aşağıdaki gibi olduğunu görebilirsiniz:

Screenshot from 2022-01-09 00-13-01.png

# ile başlayan satırların komut olarak değerlendirilmediğini fark etmişsinizdir. Bu karakter yazdığınız komutların arasına yorum ekleyebilmek için kullanılır.

mv (move)#

mv komutu ise bir dizini veya dosyayı bir noktadan başka bir noktaya taşımak için kullanılır. Yukardaki örneğin aynısını cp yerine mv komutuyla deneyebiliriz.

# my-new-dir/first-dir dizini oluşturalım.
mkdir -p /home/ugursogukpinar/my-new-dir/first-dir

# my-new-dir dizini içerisine geçelim.
cd /home/ugursogukpinar/my-new-dir

# first-dir dizini altına iki adet dosya oluşturalım.
touch ./first-dir/file-1
touch ./first-dir/file-2

# first-dir dizinini my-new-dir dizinine copied-second-dir olarak taşıyalım.
mv /home/ugursogukpinar/my-new-dir/first-dir /home/ugursogukpinar/my-new-dir/moved-dir

# Kopyaladıktan sonra my-new-dir dizininde son duruma bakalım.
ls -la /home/ugursogukpinar/my-new-dir

# Aynı şekilde copied-second-dir dizini içerisine bakalım.
ls -la /home/ugursogukpinar/my-new-dir/moved-dir

Bu komutun çıktısını incelediğinizde, my-new-dir klasörü altında artık first-dir klasörünün kaybolduğunu onun yerine moved-dir klasörünün oluştuğunu görebilirsiniz.

Screenshot from 2022-01-09 00-19-10.png

Aslında yukarıdaki örnekte “first-dir” isimli dosya “my-new-dir” klasöründe bulunuyor, taşıma işlemini de yine aynı dizine ancak farklı isimle yaptık. Bu durumda mv komutunu aslında dizinin adını değiştirmek için kullanmış olduk. Benzer şekilde dosya isimlerini değiştirmek için de kullanabiliriz.

mv ./old-file-name ./new-file-name