Linux Kabuk Erişimi ve Yönlendirmeler

Shell kullanımı, stdin/stdout/stderr yönlendirmeleri ve ortam değişkenleri

Kubedo Academy’e hoş geldiniz! Bu laboratuvarda kabuk üzerinden erişim, dosya yapıları, dizinlere erişim, temel komutlara giriş ve filtreleme komutlarını öğreneceksiniz.


Zorluk seviyesi: Başlangıç
Süre: Yaklaşık 30 dakika

İçindekiler


Laboratuvar Kullanım İpuçları

Eğitim içerisinde, komut satırı bilgileri aşağıdaki üç farklı şekilde belirtilmiştir:

  1. buradaki gibi görünen kod betimleri genellikle örnekler ve yazılması gereken komutları tanımlamak için kullanılır.

  2. Terminal bloklarındaki kod tıklanabilir ve otomatik olarak çalıştırılır:

Terminal
$ uname -a
  1. <değişken> içerisinde bulunan maddeler sizin değiştirmeniz gereken veriyi gösterir:
hostnamectl set <sunucu_adı>

1. Shell Arayüzüne Bağlanma ve Linux Dizin Yapısı

Linux’ta ve tüm UNIX benzeri işletim sistemlerinde genellikle “Her şey bir dosyadır” denir. Bu, ister normal veri dosyaları ister ses kartları ve yazıcılar gibi aygıtlarla uğraşıyor olun, aynı tür Giriş/Çıkış (I/O) işlemleriyle etkileşimde bulunduğunuz anlamına gelir.

Linux İlk Bağlantı ve Kabuk (Shell) Kullanımı

Linux, çoğunlukla Unix’ten gelen altyapıları barındırır. Unix metin tabanlı bir işletim sistemi olarak başladı, bu nedenle Linux’ta çok sayıda metin tabanlı yazılım bulunur.

[!TIP] Özellikle Linux’u yönetirken, komut satırı araçlarının en azından temellerini anlamalısınız.

WSL2 üzerinden shell erişimi
WSL2 üzerinden kabuk (shell) erişimi

Komut Satırı Temellerini Anlama

Linux ile çalışmaya başlamadan önce bir Linux kabuğunu nasıl kullanacağınızı anlamalısınız. Birkaç shell mevcuttur, ancak çoğu benzer yetenekler sağlar.

Bourne Again Shell (bash), Unix için daha önceki Bourne kabuğunu temel alır. Linux’ta bash, kullanıcı hesapları için en yaygın varsayılan kabuktur.

Diğer yaygın kabuklar:

  • Zsh - Yazılım geliştiriciler için özellikle tavsiye edilir
  • Fish - Kullanıcı dostu ve modern
  • Ksh - Korn Shell

İç ve Dış Komutlar

Bir komutun iç (built-in) veya dış olduğunu anlamak için:

Terminal
$ type echo

Tüm iç komutların listesine ulaşmak için:

Terminal
$ help

PATH Ortam Değişkeni

Kabuk tarafından tanınmayan bir komutu yazdığınızda, kabuk PATH ortam değişkeninde tanımlı dizinleri kontrol eder.

# Mevcut dizindeki programı çalıştır
./calistirbeni

# Tam yol ile çalıştır
/home/senol/calistirbeni

[!NOTE] ./ kullanımı: Linux’ta PATH içinde tanımlı olmayan dosyalar, bulunduğunuz dizinde dahi olsa tam yol belirtmeniz gerekir.

Sekme ile Otomatik Tamamlama

Tab tuşu ile komut ve dosya adlarını otomatik tamamlayabilirsiniz:

  • Bir komutun başını yazın ve Tab’a basın
  • Birden fazla eşleşme varsa, iki kez Tab’a basın

Komut Geçmişi (History)

  • Yukarı/Aşağı ok: Önceki komutlar arasında gezinme
  • Ctrl+R: Geçmişte arama
  • Ctrl+P / Ctrl+N: Sayfa yukarı/aşağı

2. Kabuk Giriş ve Çıkışlar ile Yönlendirmeler

Linux’ta komut satırı üzerinden yapabilecekleriniz, yönlendirmeler ile daha da çeşitli hale gelir.

Akış Türleri

AkışSembolAçıklama
stdin0Standart Giriş (klavye)
stdout1Standart Çıktı (ekran)
stderr2Standart Hata (hata mesajları)

Noktalı Virgül (;) - Ardışık Komutlar

Birden fazla komutu tek satırda çalıştırma:

komut_1; komut_2; komut_3

&& - Koşullu Çalıştırma

Bir önceki komut başarılıysa sonrakini çalıştır:

Terminal
$ apt-get update && apt-get upgrade

Pipe (|) - Boru

Bir komutun çıktısını başka bir komuta yönlendirme:

Terminal
$ ls / | cat

Çıktı Yönlendirme

stdout’u dosyaya yönlendirme:

Terminal
$ ls / > /tmp/kokdizinlistesi.txt

Dosya içeriğini görüntüleme:

Terminal
$ cat /tmp/kokdizinlistesi.txt

stdout ve stderr Yönlendirme

OperatörAçıklama
> veya 1>stdout’u dosyaya
2>stderr’i dosyaya
2>&1stderr’i stdout ile aynı yere
&>Her ikisini de aynı dosyaya

Örnek - Hata ve çıktıyı ayırma:

./script.sh 1> output.txt 2> error.log

Her ikisini aynı dosyaya:

./script.sh > all.log 2>&1

tee Komutu

stdin’den okur, hem stdout’a hem de dosyalara yazar:

Terminal
$ ls -la | tee /tmp/dosya1.txt /tmp/dosya2.txt

3. Ortam Komutları

history - Komut Geçmişi

Önceden yazılan komutları listeler:

Terminal
$ history

[!CAUTION] ~/.bash_history dosyası shell üzerinden yazılmış parolaları içerebilir, güvenlik açısından dikkatli olunmalıdır.

alias - Takma Ad

Uzun komutlar için kısayol tanımlama:

alias getir='ls -la'

Takma adı kaldırma:

unalias getir

[!TIP] Kalıcı alias’lar için ~/.bashrc dosyasına ekleyin.

Ortam Değişkenleri

Değişken görüntüleme:

echo $SHELL
echo $PATH

Yeni değişken tanımlama:

export VARIABLE=deger

Önemli Ortam Değişkenleri

DeğişkenAçıklama
$HOMEEv dizini (~ ile aynı)
$SHELLVarsayılan kabuk
$PATHKomut arama yolları
$PS1Komut istemi formatı

PATH’e Dizin Ekleme

Terminal
$ export PATH=$HOME/bin:$PATH

PS1 - Komut İstemi Özelleştirme

# Özel karakterler:
# \u - Kullanıcı adı
# \h - Hostname
# \w - Çalışma dizini
# \d - Tarih

export PS1='\u@\h:\w$ '

set Komutu

Shell davranışını kontrol eder:

Terminal
$ set -C

Bu komut dosya üzerine yazma işlemini engeller.

exit - Çıkış

exit      # Normal çıkış
exit 0    # Başarılı (return code 0)
exit 1    # Başarısız (return code 1)

Sonraki Adım

Bilgi ve El Kitabı (info/man) →