Linux Başlangıcı & Temel Linux Komutları — 1

Oğuz Erdoğan
6 min readOct 25, 2020

Merhaba, bu yazımda kısaca Linux’un tanımından ve en yaygın komutlarından bahsedeceğim.

Linux nedir?

Bilinenin aksine Linux bir işletim sistemi değil, işletim sistemi çekirdeğidir.

GNU/Linux, Linus Torvalds adında Finlandiyalı bir bilgisayar mühendisinin 1991 yılında Helsinki Üniversitesi’nde bir öğrenci iken geliştirmeye başladığı Unix tabanlı bir işletim sistemi çekirdeğidir.

Halen daha gelişmekte olan açık kaynak kodlu, özgür bir yazılımdır. Linux dağıtımları bu çekirdeği kullanarak ihtiyaç ve amaçlar doğrultusunda geliştirilerek özelleştirilebilir.

Ubuntu, CentOS, Debian, RedHat, Solaris bu Linux dağıtımlarına örnektir.

Dilerseniz GNU/Linux çekirdeğinin ve GNU/Linux dağıtımlarında kullanılan programların çoğunun kaynak kodlarını görebilir veya değiştirebilirsiniz ve isterseniz GNU/Linux çekirdeğini ve GNU/Linux dağıtımlarında kullanılan programların çoğunu kaynak kodu değiştirerek veya değiştirmeden de ilgili platformlar üzerinden herkese dağıtabilirsiniz.

Özetle Linux kullanımının temel nedenlerini şu üç maddede sayabiliriz:

  • Ücretsiz ve özgür
  • Açık kaynak kodlu
  • Geniş bir kullanıma sahip

Linux Kök Dizin

Linux içindeki her şey bir dosyadır

Örneğin; Linux ile sistem üzerindeki ethernet kartına ulaşmak için /dev/eth0 dosyası kullanılır.

Benzer şekilde kamera, klavye, sabit disk ve hatta çalışan uygulamalar bile dizin yapısı içinde yer alan dosyalarda tutulur.

Linux, Windows işletim sistemlerdeki gibi C:, D: vb. sözde sürücüler bulundurmaz.

Linux, Unix yapısını takip ettiğinden Tekil Hiyerarşik Dizin Yapısını kullanır.

Tekil Hiyerarşik Dizin Yapısında tüm dosya, dizin, sabit disk, işlemler eğik çizgi (/) ile belirtilen, kök dizin’de tutulur.

TEMEL KOMUTLAR

Öncelikle Linux komut sisteminin temel yapısını anlatmak istiyorum.

Linux’ta komut — option — argüman sırasıyla terminale komutlarımızı yazıyoruz.

Yukarıda gösterildiği gibi sırasıyla

komut: ls

option: -l

argüman: /etc

Yapısını kullandık. Buradaki yazan komutun ne anlama geldiğini yazının sonunda kavrayabilmiş olacağız.

Yazının devamında sezgisel olması açısından bazı komutlarda Windows işletim sisteminden örnekler vereceğim. İlk önce o çoğumuzun görmekten kaçtığı siyah terminalle ilk buluşmamızı yapalım.

Temel Komutlar

pwd : Hangi dizinde (klasörde) olduğumuzu bulmak için kullanıyoruz.

ls: Bir dizinin içeriğini görmek için kullanıyoruz. Şimdi komut söz diziminde yazdığımız -l optionunu burada kullanalım ve aradaki farkı görelim.

ls -l

Gördüğümüz gibi -ls ile dizin içeriğini gördük. Daha sonra buna -l optionunu belirttik ve bize dizin içerisindeki klasörlerin daha detaylı bilgilerini listeledi.

Linux’ta bunun gibi birçok option var ve bunların hepsini akılda tutmak çok zor. Bunun için komut sonrasında yazdığımızhelp -- ile bu ayarları listeliyoruz ve kullanmak istediğimize bakıyoruz.

Şuan bunu denediyseniz muhtemelen terminalinizde çok fazla bilgi olacaktır, yok mu bunu temizlemenin bir yolu diyorsanız:

clear komutu ile terminali temizleyebilirsiniz. Kısayol : CTRL + L

history yazılan komut geçmişini gösterme

CTRL + R komut geçmişinde arama yapma

alias yazması uzun olan komutları etiketleme

Örnek :

[train@localhost ~]$ alias doco = "docker container"

ORTAM DEĞİŞKENLERİ

Env ile bakabiliyoruz. Bilgisayar açtığımızda gelen, çalışan değişkenler olarak anlatabiliriz.

Local Değişken Oluşturma

my_name=oguz

echo ==> print fonksiyonu

echo my_name

yazdığımızda çıktı olarak bize “my_name” döndürüyor, çünkü değişkenin değerinin çıktısını almak istiyorsak bunun başına değişken adından önce $ işareti koymamız gerekiyor.

Burada dikkat etmemiz gereken bir diğer nokta:

Shell içerisinde değişken tanımlarken değişken adı ve değişken değeri arasında =den sonra boşluk kullanmamalıyız.

Bu oluşturduğumuz bir local değişkendi. Peki bunu global yapmak istiyorsak?

Global Değişken Oluşturma

export my_name=oguz

env yazıp kontrol ediyoruz. env içerisi çok kalabalık, filtreleme yapmak için:

| pipe

| yani pipe’ı önceki komuttan dönen sonucu diğer komuta yönlendirmek için kullanıyoruz.

grep

grep bir nevi filtreleme işlemleri için kullanıyoruz.

Birleştirelim

env | grep my_name

ile kontrol işlemini gerçekleştirdim.

Ne öğrendik ?

Bir değişken oluşturduğumuzda bunu export ile kullanmadığımız sürece local değişken oluyor.

export kullanarak her şey tarafından ulaşılabilen bir global değişken oluşturuyoruz.

| ile komutlar arası bağlantı kuruyoruz ve grep ile dönen çıktıda filtreleme işlemleri uyguluyoruz.

unset

oluşturulan değişkeni silmek için kullanıyoruz.

unset my_name

Klasör İşlemleri

. bulunduğumuz dizin

.. bir üst dizin için kullanıyoruz. Birazdan daha iyi anlayacağız.

mkdir

mkdir medium

mkdir (make directory) klasör oluşturmamızı sağlıyor. medium adında bir klasör oluşturdum.

cd

cd ./medium

cd dizin değiştirmemize yarıyor. . ile bulunduğum dizini gösterip bu dizinde oluşturduğum medium klasörüne bu sayede gidebiliyorum.

[train@localhost medium]$ [train@localhost medium] medium ifadesinden medium klasöründe olduğumuzu anlayabiliyoruz.

touch

touch myfile

nano editörü ile dosyanın içine bilgi girme

nano myfile```
editörden çıkmak için CTRL + O ==> ENTER ==> CTRL + X ile text editöründen çıkıyorum.
```

rm ( remove )

dosya veya klasörü silmemizi sağlıyor

rm myfile

cp (copy)

Dosya veya klasör kopyalarken kullanıyoruz. Windows’taki kopyala + yapıştır

cp -r medium medium_copy

Burada medium klasörünün kopyasını aynı dizinde oluşturduk.

Kopyayı silelim:

rm -r medium myfolder_copy

mv (move)

Dosya veya klasörü taşırken kullanıyoruz. Windows’taki kes + yapıştır

mv medium/myfile .

Yaptığımız işlem: myfolder içerisindeki myfile dosyasını . ile bulunduğumuz dizine taşıdık.

Yaptığım işlemlere terminal üzerinden bakalım:

PATH

Gelin şimdi ufak bir script yazalım ve dizin mantığını beraber daha iyi kavrayalım.

nano ile bir text file oluşturuyoruz.

nano myscript.sh#!/bin/bash

echo "Merhaba"

```
editörden çıkmak için CTRL + O ==> ENTER ==> CTRL + X ile text editöründen çıkıyorum.
```

bu scripti çalıştırabilmek için yetki vermemiz gerekiyor.

chmod 755 myscript.sh

ls ile dizini kontrol ediyorum.

./myscript.sh

ile scripti çalıştıralım.

bunu myscriptin olduğu dizinde çalıştırdım.

cd ile farklı bir dizine gittiğim zaman, burada myscript.sh scriptini çalıştırmaya çalıştığımızda bu işlem gerçekleşmiyor.

İşte farklı dizinlerde çalıştırılabilir bir script işlemini gerçekleştirmek istiyorsak PATH kullanıyoruz.

PATH içerisine script ekleme

export PATH="your-dir:$PATH"your-dir : scriptin bulunduğu dizinexport PATH="home/train:$PATH"

artık myscript dosyasının içerisinde bulunma zorunluluğumuz kalktı, her yerden bunu çalıştırabiliyoruz

Bölüm notu : aynı dizinden çalıştırmak istiyorsak ./dosyadı şeklinde çalıştırmak zorundayız. Farklı bir dizinde path içerisinde eklediğimiz dizindeki scripti direk dosya adını yazarak çalıştırabiliyoruz. . bulunduğumuz dizini temsil ediyor. bunun uzun hali

/home/train/myscript.sh

Not bulunduğumuz dizini pwd ile görebildiğimizden bahsetmiştik.

Terminalde görelim:

Artık farklı dizinlerde de olsak yazdığımız zaman çalıştırabildiğimiz bir scriptimiz var! Burada chmod 755 kavramı anlaşılmamış olabilir. Linux üzerindeki dosyalarda okuma yazma çalıştırma gibi izinler oluyor ve burada scriptimizi çalıştırabilmek için yetki ayarlaması yaptık.

Yetki konusunun detaylarını bir sonraki yazımda göstereceğim. Orada görüşmek üzere!

Neler yaptık?

Yazımda sizlere Linux terminalinde en sık kullandığımız komutlardan, klasör ve dosya işlemlerinden ve PATH ile farklı dizinlerde çalıştırılabilir bir script oluşturmaktan bahsettim.

Bir sonraki yazımda, Linux üzerindeki yetki konularını, terminal üzerinden belirli patternlere uyan kelimeleri çekmeyi (Regex) ve kullandığımız diğer komutları göstermeye çalışacağım.

DİPNOT

Öğrendiklerini en iyi anlama yolunun onları başkalarına anlatmak olduğunu düşünen birisi olarak bu yazıları yazıyorum. Her ne kadar araştırma yapsam ve aldığım eğitim ile bu yazıları yazsam da kendi yaptığım yorumlarda hatalar olabilir. Bu hatalarımı veya görüşlerinizi benimle paylaşabilirsiniz. Sağlıcakla kalın!

Son olarak;

Bana bu adreslerden ulaşabilirsiniz.

Kişisel Web Sitem: https://www.oguzerdogan.com

Linkedin: https://www.linkedin.com/in/oguzerdo/

Mail: mail@oguzerdogan.com

--

--