RDP Monster

.sh Dosyası Nedir? Shell Script, Bash ve Linux Rehberi

.sh Dosyası Nedir? Shell Script, Bash ve Linux Rehberi

Giriş

Shell betikleri Linux ve Unix sistem yönetiminin temelidir; üretkenliği ve sistem yönetiminin verimliliğini ciddi şekilde artıran güçlü otomasyon yetenekleri sunar. Bir .sh dosyası, komutları yorumlamak ve tekrar eden sistem görevlerini otomatikleştirmek için tasarlanmış özel bir programlama dili olan shell dilinde yazılmış bir betiktir.

Yüzlerce sunucuyu yöneten bir sistem yöneticisi, dağıtım pipeline'larını otomatikleştiren bir geliştirici veya teknik becerilerini geliştirmek isteyen bir Linux meraklısı olun, shell betiklerini anlamak vazgeçilmezdir. Bu kapsamlı rehber; .sh dosyalarının ne olduğunu, nasıl çalıştığını, farklı shell uygulamalarını ve gerçek dünyadan betikleme örneklerini açıklar.

 

.sh dosyası nedir?

Tanım

.sh file is a plain text file containing a series of shell commands executed sequentially by a shell interpreter. The .sh extension indicates the file is a shell script, though many shell scripts omit this extension in practice.

Shell betikleri, etkileşimli komut satırı kullanımı ile tam programlama arasındaki köprüyü temsil eder. Şunları yapmanıza olanak tanır:

  • Tekrarlanan görevleri otomatikleştirme

  • Birden çok komutu karmaşık iş akışlarında birleştirme

  • Yeniden kullanılabilir yönetim araçları oluşturma

  • Otomatik bakım işlemlerini planlama

  • Uygulamaları programatik olarak dağıtma


Özellikler

Plain Text Format: Unlike compiled programs requiring compilation, shell scripts are human-readable text interpreted directly by the shell.

Interpreter-Based: Execution depends on the specified shell interpreter (Bash, Ksh, etc.), not the underlying system architecture.

Shebang Satırı: Çoğu kabuk komut dosyası, hangi kabuk yorumlayıcısının kullanılacağını belirten bir shebang (#!/bin/bash) ile başlar.

Çapraz Platform: Kabuk komut dosyaları farklı Unix/Linux sistemlerinde tutarlı şekilde çalışır (uygun kabukların kurulu olduğu varsayılarak).


Gerçek Dünya Uygulamaları

  • Sistem başlatma ve kapatma betikleri

  • Yedekleme ve geri yükleme otomasyonu

  • Sunucu izleme ve uyarı

  • Uygulama dağıtım hatları

  • Günlük dosyalarının işlenmesi ve analizi

  • Kullanıcı hesabı sağlama

  • Ağ yapılandırma otomasyonu

  • Veritabanı bakım görevleri

 

Shell scripting temelleri

Shell Nedir?

Shell, kullanıcılar ile işletim sistemi çekirdeği arasında bir arayüz sağlayan komut yorumlayıcısıdır. Kullanıcı komutlarını alır, yorumlar ve karşılık gelen programları yürütür.

Shell İşlevleri:

  • Kullanıcı komutlarını okuma ve ayrıştırma

  • Çalıştırılabilir programları arama

  • Programları uygun argümanlarla yürütme

  • Giriş/çıkış yönlendirmesini yönetme

  • İşlem kontrolünü yönetme

  • Programlama yapılarını uygulama (döngüler, koşullar)


Neden Shell Betikleri Kullanmalı?

Automation: Execute complex sequences automatically without manual intervention.

Efficiency: Complete in seconds what might take hours manually.

Tutarlılık: Birden çok sistemde aynı işlemleri sağlayın.

Belgeleme: Komut dosyası yorumları, gelecekteki referans için prosedürleri belgeler.

Scalability: Scale operations from one server to hundreds without additional effort.

Recovery: Rebuild systems quickly using existing scripts.

 

Bash (Bourne-Again Shell)

Market Share: ~95% of Linux systems
Creator: Brian Fox (GNU Project)
Features: Kapsamlı feature set, scripting capabilities
Sözdizimi: Orijinal Bourne kabuğuyla uyumlu
Kullanım Senaryosu: Çoğu Linux dağıtımında varsayılan

Bash, Linux shell betikleri için fiili standarttır. Orijinal shell'lerle uyumluluğu modern özelliklerle dengeler.


Ksh (Korn Shell)

Creator: David Korn (AT&T Bell Labs)
Features: Gelişmiş programming capabilities, faster execution
Syntax: Superset of Bourne shell
Use Case: Preferred on Unix systems (Solaris, AIX)
Advantages: Daha iyi performance for compute-intensive operations

Ksh, kurumsal Unix ortamlarında, özellikle ticari Unix sistemlerinde yaygın olmaya devam ediyor.


Sh (Bourne Shell)

Original POSIX Standard Shell
Creator: Stephen Bourne (AT&T Bell Labs)
Features: Minimum, standardized functionality
Modern Status: Largely historical; contemporary shells provide compatibility

Sh, tüm Unix benzeri sistemlerde temel uyumluluğu sağlayan POSIX standardını temsil eder.


Zsh (Z Shell)

Creator: Paul Falstad
Features: Interactive features, scripting capabilities
Modern Focus: Enhanced user experience over pure scripting
Use Case: Growing in popularity among developers

Zsh, betikleme gücünü kullanıcı dostu etkileşimli özelliklerle dengeleyen modern shell evrimini temsil eder.


Tcsh/Csh

Csh Creator: Bill Joy (Berkeley)
Modern Version: Tcsh (enhanced csh)
Features: C-like syntax
Status: Declining usage, maintained primarily for compatibility

Csh türevleri bazı sistemlerde varlığını sürdürse de Bash/Ksh'a kıyasla giderek azalan avantajlar sunar.

 

Bash, Ksh ve diğer kabuklar

Karşılaştırma Tablosu

Feature Bash Ksh Zsh Sh
Komut Geçmişi Yes Yes Yes No
Komut Tamamlama Basic Basic Gelişmiş No
Diziler İndekslenmiş İndekslenmiş + İlişkisel Yes No
Desen Eşleştirme Glob desenleri Gelişmiş Gelişmiş Sınırlı
Fonksiyonlar Yes Yes Yes Yes
Aritmetik $(()) (()) $(()) Sınırlı
POSIX Uyumluluğu ~95% 100% ~90% 100%
Performans Good Daha iyi Good En hızlı
Komut Dosyası Özellikleri Kapsamlı Daha gelişmiş En gelişmiş Minimum
Uyumluluk Mükemmel Mükemmel Good Evrensel
Öğrenme Eğrisi Orta Orta Daha dik En kolay
Tipik Kullanım Varsayılan Linux Kurumsal Unix Geliştirici tercihi Compatibility


When to Choose Each Shell

Bash'i Şu Durumlarda Seçin:

  • Linux sistemleriyle maksimum uyumluluk

  • Bash sözdizimi bekleyen araçlarla çalışma

  • Ekibin Bash'e aşinalığı

  • Linux odaklı ortamlar

Ksh'yi Şu Durumlarda Seçin:

  • Performans kritik işlemler

  • Kurumsal Unix environments

  • Gelişmiş programlama özellikleri gerektiren

  • Eski Unix sistemlerini destekleme

Zsh'yi Şu Durumlarda Seçin:

  • Etkileşimli kabuk kullanımı önceliklendirildi

  • Gelişmiş user experience desired

  • Geliştirici odaklı ortamlar

  • Modern Linux dağıtımları

Sh'yi Şu Durumlarda Seçin:

  • Maksimum POSIX taşınabilirliği gereklidir

  • Çeşitli Unix platformlarını destekleme

  • Bağımlılıkları en aza indirme

  • Hafif yürütme gerekli


Shell betikleri oluşturma ve çalıştırma

Creating a Basic Shell Script

Step 1: Create File
touch myscript.sh


Step 2: Edit File
nano myscript.sh

Step 3: Add Shebang and Commands
#!/bin/bash echo "Hello, World!" date

Step 4: Make Executable
chmod +x myscript.sh

Step 5: Execute
./myscript.sh


Execution Methods

Direct Execution (requires executable permissions)
./myscript.sh

Explicit Interpreter
bash myscript.sh

Source Command (executes in current shell)
source myscript.sh or . myscript.sh


Understanding the Shebang

The shebang (#!) specifies which interpreter executes the script:
#!/bin/bash # Use Bash
#!/bin/ksh # Use Ksh
#!/usr/bin/env bash # Use Bash via environment (more portable)
#!/usr/bin/python # Use Python interpreter

 

Temel shell betiği söz dizimi

Variables


Conditional Statements

# If-else
if [ $age -gt 18 ]; then
  echo "Adult"
else
  echo "Minor"
fi
 
# Case statement
case $day in
  Monday)
    echo "Start of week"
    ;;
  Friday)
    echo "End of week"
    ;;
  *)
    echo "Midweek"
    ;;
esac


Loops

# For loop
for i in 1 2 3 4 5; do
  echo "Number: $i"
done
 
# While loop
count=0
while [ $count -lt 5 ]; do
  echo "Count: $count"   
  ((count++))
done
 
# Until loop
until [ $count -eq 10 ]; do
   echo "Count: $count"
  ((count++))
done


Functions

# Function definition
greet() {
 echo "Hello, $1!"
}
 
# Function with return value
add() {
  return $(($1 + $2))
}
 
# Function calls
greet "Alice"
add 5 3
echo "Sum: $?" # $? holds return value
 
 

İleri düzey betikleme kavramları

Error Handling

#!/bin/bash
set -e # Exit on error
 
# Check command success
if ! command_name; then
  echo "Command failed"
  exit 1
fi
 
# Trap errors
trap 'echo "Error on line $LINENO"' ERR


File Operations

# File existence checking
if [ -f "/path/to/file" ]; then
  echo "File exists"
fi
 
# Directory operations
if [ -d "/path/to/dir" ]; then
 echo "Directory exists"
fi
 
# Read file line-by-line
while IFS= read -r line; do
  echo "Line: $line"
done < filename.txt


User Input

# Read from user
read -p "Enter your name: " name
 
# Read multiple values
read -p "Enter values: " val1 val2 val3
 
# Read into array
read -a array_name
 
 

Pratik örnekler

System Backup Script

#!/bin/bash
 
# Backup important directories
BACKUP_DIR="/backup"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
echo "Starting backup..."
 
# Create backup directory
mkdir -p "$BACKUP_DIR"
 
# Backup home directory
tar -czf "$BACKUP_DIR/home_$TIMESTAMP.tar.gz" /home
 
# Backup system configuration
tar -czf "$BACKUP_DIR/etc_$TIMESTAMP.tar.gz" /etc
echo "Backup complete: $BACKUP_DIR/home_$TIMESTAMP.tar.gz"


Disk Space Monitor

#!/bin/bash
 
THRESHOLD=80
ALERT_EMAIL="[email protected]"
 
# Check disk usage
disk_usage=$(df / | awk 'NR==2 {print $5}' | cut -d'%' -f1)
 
if [ $disk_usage -gt $THRESHOLD ]; then
  echo "Disk usage critical: $disk_usage%" | mail -s "Alert" $ALERT_EMAIL
  echo "Alert sent to $ALERT_EMAIL"
fi


User Account Provisioning

#!/bin/bash
 
read -p "Enter username: " username
read -p "Enter email: " email
 
# Create user
useradd -m -s /bin/bash "$username"
 
# Set password (prompt method recommended)
echo "Set password for $username:"
passwd "$username"
 
# Add to groups
usermod -aG sudo "$username"
echo "User $username created successfully"
 
 

Uzak sunucu yönetimi neden shell betiklerine dayanır

RDP veya SSH bağlantıları aracılığıyla uzak sunucuları yöneten sistem yöneticileri, sıklıkla kabuk komut dosyaları çalıştırır:

  • Otomatik Dağıtımlar: Uygulamaları birden çok sunucuda eşzamanlı olarak dağıtın

  • Sistem Bakımı: Rutin bakım görevlerini planlayın ve yürütün

  • Monitoring: Continuously monitor system health and log anomalies

  • Backup Operations: Automate critical data backup procedures

  • Güvenlik Güncellemeleri: Güvenlik yamalarını altyapı genelinde dağıtın

Professional remote desktop management platforms like RDP.Monster enable shell script execution across enterprise infrastructure:


RDP.Monster ile Linux Altyapısı Yönetimi

Kurumsal Linux Yönetimi

  • Uzaktan kabuk komut dosyası yürütme için SSH erişimi

  • Otomatik dağıtım yetenekleri

  • Birden çok sunucuda toplu işlemler

  • Gerçek zamanlı izleme ve uyarı

Komut Dosyası Altyapısı için VPS Çözümleri

  • Hesaplama yoğun komut dosyaları için adanmış kaynaklar

  • Kalıcı cron iş zamanlaması

  • Planlanmış işlemler için güvenilir çalışma süresi

  • Artan komut dosyası karmaşıklığı için ölçeklenebilir altyapı

Deploy enterprise Linux infrastructure for sophisticated shell script operations with RDP.Monster

 

Sonuç

Shell scripts represent a powerful automation tool essential for Linux system administration and development. Understanding .sh files, shell implementations, and scripting techniques enables IT professionals to dramatically increase productivity, ensure consistency, and manage complex infrastructure efficiently.

Linux'ta Bash, kurumsal Unix'te Ksh veya etkileşimli geliştirme için Zsh kullansanız da, kabuk komut dosyası yazmada ustalaşmak yetenekli yöneticileri yalnızca yetkin olanlardan ayırır. Sağlam komut dosyası becerileri geliştirme yatırımı, on yıllarca Linux sistem yönetimi için getiri sağlar.

Managing complex Linux infrastructure requiring sophisticated automation? RDP.Monster provides SSH access and VPS infrastructure optimized for running mission-critical shell scripts at scale. Explore Linux-friendly VPS solutions today.

Güçlü Linux VPS barındırma

Linux VPS'lerimizle tam kontrolün ve şimşek hızında performansın tadını çıkarın. Uygulama barındırmak, sunucu yönetmek ve iş akışınızı optimize etmek için mükemmeldir.

Dedicated Servers

Yüksek performanslı dedicated sunucular

Maksimum kontrol ve güç mü gerekiyor? Dedicated sunucularımız zorlu görevler için eşsiz performans sunar.

Sıkça sorulan sorular

.sh ile bash betikleri arasındaki fark nedir?

.sh, herhangi bir kabuk için kullanılan genel bir uzantıdır; bash ise özellikle Bash kabuğunu ifade eder.

Bir bash betiği .sh olarak çalışır ama her .sh betiği bash değildir.

#!/bin/bash mi yoksa #!/usr/bin/env bash mı kullanmalıyım?

Bash'in standart olmayan konumlarda kurulu olabileceği sistemler arasında taşınabilirlik için #!/usr/bin/env bash kullanın.

Cron'dan çalıştırınca betiklerim neden hata veriyor?

Cron çok kısıtlı bir ortamda çalışır.

Mutlak yollar kullanın, ortam değişkenlerini açıkça tanımlayın ve shebang'da yorumlayıcının tam yolunu belirtin.

Bir betiği nasıl çalıştırılabilir hale getirebilirim?

Yürütme izni eklemek için chmod +x scriptname.sh kullanın.

Shell betiklerini Windows üzerinde çalıştırabilir miyim?

Windows Subsystem for Linux (WSL) veya Git Bash shell betiklerinin çalıştırılmasına olanak tanır.

Yerel Windows otomasyon için PowerShell'i tercih eder.

. ile source komutları arasındaki fark nedir?

Bash'te birbirine eşittirler; her ikisi de betikleri mevcut kabukta çalıştırır.

source daha açıktır; . ise eski kabuklarla uyumludur.

Bir shell betiğini nasıl hata ayıklarım?

İşte çözüm:

Satır satır yürütme izlemesi için bash -x scriptname.sh kullanın veya betiğe set -x ekleyin.

Shell betiklerine argüman geçebilir miyim?

Evet!

Konumsal parametreler kullanın: $1 (ilk argüman), $2 (ikincisi) vb. $@ tüm argümanları içerir.

Register to our reseller program

Your informations

If you have any question, contact us by clicking here !
Name(Required)
Enter your email address, you must have an account on manager.rdp.monster !

Your company

Enter your website address if you have one
Quickly explain how you're going to sell services to your customers. For example, talk to people on forums.

Çerez kullanıyoruz !

Tarama deneyiminizi geliştirmek, kişiselleştirilmiş reklam veya içerik sunmak ve trafiğimizi analiz etmek için çerez kullanıyoruz. «Kabul Et»'e tıklayarak çerez kullanımımızı onaylarsınız.