Linux Temelleri

Gozde Saygili Yalcin
8 min readJan 29, 2023

--

Linux tek başına işletim sistemi değil çekirdektir(kernel).

GNU GPL(Genel Kamu Lisanı — General Public License) + Linux Cekirdegi = Linux isletim sistemini tanimlamaktadir.

GNU, GNU’s Not Unix kısaltmasıdır ve yazılımların özgür olmasını savunur.

Richard Stallman

Açık kaynak (open source) bir geliştirme metodolojisi iken, özgür yazılım (free software) ise sosyal bir harekettir.”

Linus Torvalds, UNIX türevi olan Minix işletim sisteminden esinlenerek sisteme eklemeler yapmak amacıyla 1991 yılında çekirdeği geliştirmeye başlamıştır. Tüm GNU/Linux dağıtımların ortak özelliği Linux çekirdeğini kullanmasıdır. Çekirdek(kernel), yazılımdan gelen istekleri donanıma yaptıran yapıdır. İşletim sistemi ise doğrudan ya da dolaylı olarak kullandığımız araçların bütününe verilen isimdir.

Linux, donanım üzerinde çeşitli yönetimsel işlemlerin kolayca yapılabilmesi için kullanılır.

Linux, sisteme ait donanımı kullanabilmek için altyapı hazırlar.

Linux çekirdeğini kullanan işletim sistemleri, sisteme ait donanımların çalışmasıyla ilgilenmez, Linux çekirdeğine çeşitli istekler göndererek istek sonuçlarını alır.

https://linux-dersleri.github.io

Çekirdek(kernel), donanımla yazılımın haberleşmesini sağlar, ancak direk olarak kullanıcıdan alınan komutlar Çekirdek’e geçmez. Bunun öncesinde komut satırı denilen bir kabuk(shell) programını temel alarak çalışan yapı, kullanıcı ile çekirdek arasında aracı bir katman görevi görür. Kabuk(shell), kullanıcıdan gelen girdileri kernele uygun şekilde iletmekle görevlidir.

Linux sistemlerinde esnekliği ve yapabildikleri dolayısıyla en çok BASH (Bourne-again shell) kabuk programı tercih edilmektedir bunun dışında ksh,tcsh,zsh,fish vb. birçok Shell (kabuk) programı mevcuttur.

shell flow

Ortam Değişkenleri(Environment Variables), işletim ve diğer yazılımların bilgisayarınıza özgü bilgileri belirlemek için kullanabileceği dinamik değerlerdir. Ortam değişkenlerinin en bilineni PATH’dir ancak diğer ortam değişkenlerini görüntülemek için şu komutlar kullanılır.

set: Shell’e ait olan değişkenlerin adını ve değerlerini verir.

printenv : Sistemde bulunan bütün çevresel değişkenleri verir.

env : Sistemde bulunan bütün “export” edilmiş yani değiştirilmiş değişkenlerle beraber değişkenleri gösterir.

Dosya sistemi hiyerarşisi

Linux, Unix yapısını takip ettiği için ”Tekil Hiyerarşik Klasör Yapısı”nı benimsemiştir ve her şey / (slash) simgesiyle ifade edilen root klasöründen başlayarak aşağıya doğru inmektedir.

https://www.geeksforgeeks.org/linux-file-hierarchy-structure/

Dizin Komutları

Tanım olarak, dizin veya klasör çeşitli dosya, dizin veya klasörleri gruplamak için kullanılan yapılardır.

pwd (Print Working Directory) => O an bulunduğumuz dizinin adını gösterir.

cd (Change Directory) => Dizinler arası geçiş yapmak için kullanılır.

cd Desktop /yeni_dizin /yeni/en_yeni

cd .., bu şekilde kullanarak bir üst dizine geri dönebiliriz. Direk ana dizine dönmek için sadece cd yazmamız yeterli.

Eğer üst bir klasördeki dosyanın içinden başka bir yere ulaşmak istiyorsak cd ../yeni_dizin

ls => Dizinde yer alan klasörleri bize gösterir. Farklı argümanlarla kullanımları vardır.

ls -a gizli dosyaları da göstermesi için bu şekilde kullanilir.

ls -l ayrıntılı olarak çıktı verir.

Linux komutları birbirine eklenerek farklı bir kaç işlemi bir arada yapabilir. Mesela çıktımızın listeli ve ayrıntılı şekilde olması için -a ve -l özelliklerini birleştirerek ls -al, ls -la, ls -a -l şeklinde yazabiliriz.

ls -hlistelenen dizinlerin boyutunu da okunaklı olarak görmeyi sağlar.

ls -Sdosyaları büyüklüğüne göre sıralar.

ls -tdosyaları değişiklik tarihine göre sıralar.

ls -r konsola basılan çıktı listesini tersine çevirerek basar.

Özet olarak komutları ls komutunu ls -ltr şeklinde kullandığımız bir komut list + time + reverse özelliklerini uygulayarak aşağıdaki gibi bir liste yazdıracaktır. ls komutunun aldığı daha fazla parametre var detaylı incelemek için yazının sonundaki kaynakları kullanabilirsiniz

mkdir (Make Directory)=> Klasör oluşturmayı sağlayan komuttur. En temel kullanımı mkdir klasör_adışeklindedir.

mkdir dizin1 dizin2 dizin3 çoklu klasör oluşturmak için bu şekilde klasör isimlerini sıralı şekilde yazılır.

Dosya İşlemleri Komutları

Dosya ile ilgili olan kopyalama, taşıma, değiştirme, görüntüleme, düzenleme gibi işlemleri yapabilmek için bu başlık altındaki komutlar ve kullanımları aşağıdaki gibidir.

touch=> Metin dosyası oluşturur. Dosyayı oluştururken uzantı belirtmeye gerek yoktur.

touch dosya_ismi

Birden fazla dosyayi ayni anda olusturmak için de aşağıdaki şekilde komuttan sonra dosya isimlerini sıralı verebiliriz.

touch yeni1 yeni2 yeni3

cat (Concatenate)=> Temelde dosya içeriğini terminal ekranından okumamıza olanak sağlar. En temel kullanımı aşağıdaki gibidir.

cat okunacak_dosya_ismi

cat komutu kullanarak dosya içeriğine yazı yazmak istenildiğinde cat > dosya_adışeklinde kullanılır. Bu şekilde dosya yaratılır ve alt satıra geçildiğinde dosyanın içine yazı yazılır. Daha fazla sayıda satır eklemek için her satırın sonunda Enter‘a basılır ve yazma işlemi bittiğinde kayıt etmek için CTRL+D‘ye basılarak dosyadan çıkılır.

Eğer bu isimle bir dosya varsa cat > yeni_dosyaşeklinde çalıştırdığımız her komut bu dosyanın üzerine kaydedecektir.

>> parametresi önceki verilerin silinmeden yeni verilerin eklenmesi için kullanılır mesela,cat >> yeni_dosyaşeklinde komutu kullanarak CTRL+D ile kaydederek dosyadan çıkış yapabiliriz.

>yönlendirme operatörü kullanılarak cat veri_alınan_dosya > veri_alan_dosyaşeklinde veriler kopyalanabilir.

echo=> Temel işlevi terminal ekranına istenilen bilgileri çıktı olarak göndermektir. echo "yazılacak_ifade"> dosya_adı şeklinde kullandığında dosya oluşturulur ve içine istenilen ifade yazdırılır.

head — tail => Bu komutlar birbirinin tamamlayıcısı gibidir. Bir dosyanın sadece baş kısmındaki ilk 10 satırı görüntülemek istersek head,son 10 satırı görüntülemek istersek tail komutunu kullanırız.

nl => Satırları numaralandırmayı sağlar. ‘head — tail’ komutlarıyla birlikte kullanıldığında düzenli bir çıktı alınmasını sağlar.

cmp => Herhangi iki tür dosyayı karşılaştırır ve sonucu standart çıktıya yazar.

Dosya içerikleri aynı değilse aşağıdaki gibi bir çıktı alınır. Eğer karşılaştırılan dosyalar aynıysa herhangi bir çıktı dönmez.

https://www.geeksforgeeks.org/cmp-command-in-linux-with-examples/

grep => Metin dosyaları içerisinde arama yapmaya yarayan bir komuttur.

grep "aranacak_ifade" dosya_adıdosya içerisindeki herhangi bir kelimeyi sorgulamayı sağlar.

Eğer arama işlemini bütün dosyaları kapsayacak şekilde yapmak istersek * karakteri kullanarak grep "aranacak_ifade" * şeklinde kullanırız.

Aramanın sonucunda kaç tane çıktı alacağımızı sınırlamak için -A parametresini kullanabiliriz. Kullanımı aşağıdaki gibidir.

grep -A satır_sayısı "aranacak_ifade"dosya_adı

https://linux-dersleri.github.io/docs/temel_linux/9.html

find => Kullanıcı tarafından verilen ifadeye göre bir dizin hiyerarşisinde dosya ve dizinleri arar ve eşleşen her dosya üzerinde kullanıcı tarafından belirlenen eylemi gerçekleştirebilir. Dosyaların tipi, boyutu, isminin bir kısmıyla ve daha fazla özelliğe göre arama yapmak mümkündür. Temel kullanımı aşağıdaki gibidir.

find dosya_yolu -name aranacak_ifade

Bazı örnek kullanımlar aşağıda gösterilmektedir, detaylı kullanımlar için referanslardan faydalanabilirsiniz.

Aranılan dosyanın adını kısmen biliyorsak aşağıdaki gibi * işaretiyle arama yapabiliriz.

find <arama_yeri> -name <ara*>

Uzantısı .txt olan dosyaları aramak için aşağıdaki şekilde arama yapılır.

find <arama_yeri> -name <*.txt>

Aranan ifadeye -size parametresi ekleyerek boyuta göre arama yapabiliriz.

find <arama_yeri> -name <aranan> -size +10k

cp => Kopyalama işlemi yapar. Temel kullanımı aşağıdaki gibidir.

cp kaynak hedef

Üzerinde o anda çalıştığımız dizine başka bir konumdan dosya kopyalamak istersek komutumuzucp kopyalanacak_dosya_konumu . şeklinde kullanabiliriz. Üzerinde çalışılan konum ‘Nokta( . )’ ile ifade edilmektedir.

rm => Dizin, iç içe sıralanmış klasör ve dosyalardan oluşan bir yol. Yani bu yolu silmek istediğimizde içerisindeki her şeyi de silmeliyiz. Bu yüzden komutumuzu -r parametresi ile birlikte kullanarak dizinin içerisindeki dosyalar da dahil her şeyi silmesini söylemiş oluruz.

rm -r silinecek_dizin

mv => Dosya taşıma ve uzantı değiştirme gibi işlemleri yapabilmek için kullanılır. Temel kullanımı aşağıdaki gibidir.

mv dosya_konumu taşınacak_konum

https://linux-dersleri.github.io/docs/temel_linux/9.html

Dosya Arşiv İşlemleri

tar(Tape ARchive) => Bir veya birden fazla dosya ve klasörlerin sıkıştırılması için kullanılır.

Bazı örnek kullanımlar aşağıda gösterilmektedir, tüm kullanım seçenekleri için tar --help komutunu çalıştırabilirsiniz.

Çalışma dizininde yer alan ve isimleri “dat” ile biten tüm dosyaları dat_dosyalar.tar adıyla birleştirir.

tar -cvf dat_dosyalar.tar *dat

dat_dosyalar.tar dosyasının içindeki tüm dosyaları /tmp/yeni_dizin dizinine çıkarır.

tar -xvf dat_dosyalar.tar -C /tmp/yeni_dizin

Yardım Komutları

help => Temel yardım alma komutudur.Bilgi almak istenilen komut ile ilgili bilgiler sunar. Yardım almak istenilen komuttan sonra –help yazarak komutla ilgili bilgilere erişebilir.

komut --help

man (Manuel) => Temel yardım alma dosyalarıdır, kılavuz sayfaları olarak da bilinir. Temel kullanımı man komut şeklindedir.

man kılavuzunun komutlarla ilgili tuttuğu bilgi sayfaları /usr/share/man konumu altında tutulur.

https://linux-dersleri.github.io/docs/temel_linux/5.html

Konsol ekranına basılan yardım(kılavuz) bilgileri bu konum içerisinde yer alan dosyalardan alınarak basılır

  • man1: genel kullanıcı programları
  • man2: sistem programları
  • man3: kütüphane fonksiyonları
  • man4: özel dosyalar
  • man5: dosya biçimleri
  • man6: ekran koruyucuları ve oyunlar
  • man7: diğer kategorilere girmeyen çeşitli komutlar.
  • man8: sistem yönetimi ve bakımı

whatis => Hangi komutun hangi man sayfasında olduğunu öğrenmemizi sağlar. Temel kullanımı whatis komut şeklindedir.

whatis chmod şeklinde komutu girdiğimizde, chmod komutunun man sayfasındaki açıklamalarının hangi dosyada olduğunu sorguluyoruz ve aşağıdaki çıktıda görüldüğü gibi sadece man1 dosyasında olduğunun bilgisine ulaşıyoruz.

Detaylı olarak kullanımını incelemek için aşağıdaki linki inceleyebilirsiniz.

Vim Editörü

Vim Editörü Terminalden kullanılabilen ve komut alabilen yaygın kullanıma sahip bir editördür.

Vim = Vi Improved => Unix’te uzun süredir kullanılan Vi metin editörünün Bram Moolenaar tarafından geliştirilerek, Linux ve Windows dahil pek çok platforma uyarlanması ile oluşturulmuştur.

Konsola vim yazdığımızda aşağıdaki gibi bir ekran açılacaktır.

Vim editörünün detaylı kullanımı için referanslardan faydalanabilirsiniz.

Log Dosyaları

Log kaydı, bir sistemdeki olayların, saat, kullanıcı adı ve eylem cinsinden otomatik olarak kaydedilmesi işlemidir. Bu kayıt, sistem hatalarının ve sistemde yapılan değişikliklerin sonradan kontrol edilebilmesi için de tutulmaktadır.

Linux sisteminde log dosyalarının büyük kısmı /var dizini altında log klasörde tutulmaktadır.

dmesg => Sistem açılışından itibaren çekirdek tarafından üretilen tüm iletiler ve kernel hakkındaki kayıtlar /proc/kmsg dizininde yer almaktadır.

Çıktıları filtrelemek için farklı kullanımlardan faydalanmak mümkündür dmesg | grep "fail"şeklinde sistemde hata alan log kayıtlarını listeyebiliriz.

Klavye Kısayolları

Ctrl + C => Komutu durdurur.

Ctrl + L => Ekranı temizler, ‘clear’ komutu ile aynı işlemi yapar.

TAB => Yazılan komutu tamamlamak için kullanılır.

Yukarı / Aşağı Yön Tuşları => Daha önce terminale girilmiş komutlar arasında gezinmeyi sağlar.

!! => Son yazılan komutu çalıştırır.

!X => Son yazılan X sayıdaki komutu çalıştırır.

~ => Kullanıcının home dizinini verir.

. => Mevcut dizini verir.

.. => Üst dizini verir.

Bu yazıda genel kavramlar açıklanmış ve sık kullanılan komutlardan bahsedilmiştir. Temel kavramların üzerine daha detaylı okuma ve araştırma yapmak isterseniz yararlanılan kaynaklar aşağıdaki gibidir.

--

--