Betik Yazımında En İyi Uygulamalar ve Lint Denetimi
Temiz, okunabilir ve hatasız Bash betikleri yazmak için kodlama kurallarını, açıklama eklemeyi ve ShellCheck gibi araçları kullanmayı öğrenin.
Betik Yazımında En İyi Uygulamalar ve Lint Denetimi, CoddyKit'te ücretsiz bir Linux Command Line & Bash Scripting Mastery dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Linux Command Line & Bash Scripting Mastery öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Linux Command Line & Bash Scripting Mastery kursu toplamda 4 dersten oluşur.
Betik Yazımında En İyi Uygulamalar Neden Önemlidir?
Bash betikleri yazmak güçlü bir yöntemdir; ancak iyi alışkanlıklar olmadan betiklerin anlaşılması, bakımı ve hata ayıklaması zorlaşabilir.
En iyi uygulamalar, temiz, sağlam ve okunabilir kod yazmanıza yardımcı olan yönergelerdir. Betiklerinizi şu açılardan geliştirir:
- Daha kolay okunur: Sizin ve başkalarının okuması kolaylaşır.
- Bakımı daha kolaydır: Güncellemek veya düzeltmek daha basit olur.
- Hataya daha az açıktır: Yaygın hataları önler.
- İş birliğine daha uygundur: Kodun görünümünü ve davranışını standartlaştırır.
Anlaşılır Kod için Açıklama Satırları
Açıklamalar, kodunuzun yalnızca ne yaptığını değil, neden yaptığını açıklamak için çok önemlidir. Gelecekteki hâliniz veya diğer geliştiriciler için not görevi görürler.
Açıklamaları şunlar için kullanın:
- Üst kısımda betiğin genel amacını açıklamak.
- Karmaşık mantığı veya anlaşılması zor bölümleri açıklamak.
- İşlevleri belgelemek: amaçlarını, bağımsız değişkenlerini ve dönüş değerlerini belirtmek.
Bir açıklamayı # (kare) simgesiyle başlatın.
#!/bin/bash
# This script demonstrates commenting best practices.
# Author: CoddyKit
# Date: 2023-10-27
# Function: greet_user
# Description: Prints a greeting message to the console.
# Arguments:
# $1 - The name of the user to greet.
greet_user() {
local name="$1" # Store the first argument in a local variable.
echo "Hello, ${name}!" # Output the greeting message.
}
# Main script execution starts here.
echo "Script execution started."
greet_user "CoddyKit Learner" # Call the function with a specific name.
echo "Script execution finished."Açık Adlandırma Kuralları
Anlamlı adlar, betiğinizi takip etmeyi kolaylaştırır. Yaygın döngü sayaçları (örneğin i veya j) olmadıkça tek harfli değişkenlerden kaçının.
Genel kurallar:
- Değişkenler: Açıklayıcı adlar kullanın (örneğin
user_name,log_file). Ortam değişkenleri veya genel sabitler içinUPPERCASEkullanın. Yerel betik değişkenleri içinlowercase_with_underscoreskullanın. - İşlevler: Genellikle bir fiille başlayan
lowercase_with_underscoresbiçimini kullanın (örneğinprocess_data,check_status). - Betikler:
lowercase_with_hyphensbiçimini kullanın (örneğinbackup-script.sh).
Tutarlı Biçimlendirme ve Girintileme
Girintileme ve boşluk kullanımı gibi tutarlı biçimlendirme, okunabilirliği büyük ölçüde artırır. Girintileri tutarsız bir kitap okuduğunuzu düşünün!
Önemli noktalar:
- Girintileme için 2 veya 4 boşluk kullanın (sekmeler genellikle önerilmez).
- Satırları kısa tutun (uçbirimler için 80 karakterin altında olması iyi bir genel kuraldır).
- İlgili kod bloklarını ayırmak için boş satırlar kullanın.
- İlişkili öğeleri uygun olduğu yerlerde hizalayın.
Seçtiğiniz belirli biçemden daha önemli olan tutarlılıktır.
Sağlamlık: 'set -u' (nounset)
set -u (veya set -o nounset) seçeneği, yazım hataları veya yanlışlıkla değeri kaldırılmış değişkenlerden kaynaklanan hataları önlemek için hayat kurtarıcıdır. Betiğiniz, kendisine değer atanmamış bir değişkeni kullanmaya çalışırsa set -u betikten hemen bir hatayla çıkar.
Bu, hataları erkenden yakalamanıza ve betiğinizin ilerleyen bölümlerindeki beklenmedik davranışları önlemenize yardımcı olur.
Aşağıdaki kodu çalıştırmayı deneyin. UNSET_NAME tanımlanmadığı için kod erken çıkacak şekilde tasarlanmıştır.
#!/bin/bash
# Demonstrating 'set -u' (nounset)
set -u # Exit if an unset variable is used
MY_GREETING="Hello"
echo "${MY_GREETING}, CoddyKit!"
# This variable is NOT set. With 'set -u', the script will exit here.
echo "Your name is: ${UNSET_NAME}"
echo "This line will NOT be reached if 'set -u' is active and UNSET_NAME is indeed unset."Sağlamlık: 'set -o pipefail'
Komutları bir ardışık düzende (örneğin cmd1 | cmd2 | cmd3) birbirine bağladığınızda Bash normalde yalnızca ardışık düzendeki son komutun çıkış durumunu bildirir. Bu, cmd1 başarısız olurken cmd2 ve cmd3 başarılı olursa ardışık düzenin yine de başarılı görünebileceği anlamına gelir!
set -o pipefail bu davranışı değiştirir. Ardışık düzendeki herhangi bir komut başarısız olursa (sıfır olmayan bir çıkış durumu döndürürse), ardışık düzenin tamamının çıkış durumu bu sıfır olmayan durum olur.
Bu, erken aşamadaki bir komutun başarısız olduğunu hemen bildirerek ardışık düzenlerinizi daha güvenilir hâle getirir.
#!/bin/bash
# Demonstrating 'set -o pipefail'
set -o pipefail # Ensures pipe's exit status is the last non-zero command
echo "Running a failing command in a pipe:"
echo "---"
# 'false' command always fails (exit status 1).
# 'cat /dev/null' always succeeds (exit status 0).
# With 'set -o pipefail', the pipe's overall exit status will be 1 from 'false'.
false | cat /dev/null
# This line will only be reached if the pipe above succeeds.
echo "---"
echo "Script finished successfully (this line won't show if pipe failed with set -o pipefail)."ShellCheck ile Tanışma
En iyi uygulamalar kullanılsa bile küçük sözdizimi hatalarını veya yaygın tuzakları gözden kaçırmak kolaydır. İşte ShellCheck bu noktada devreye girer!
ShellCheck, kabuk betikleri için statik analiz aracıdır (bir 'kod denetleyicisi'). Betiğinizi okur ve şunları belirtir:
- Sözdizimi hataları.
- Yeni başlayanların yaygın hataları.
- İnce anlamsal sorunlar.
- Farklı kabuklar arasındaki taşınabilirlik sorunları.
Genellikle daha ayrıntılı açıklamalara bağlantılar da içeren yararlı öneriler sunar.
Eylem Hâlinde ShellCheck: Hatalı Betik
Birkaç yaygın sorunu olan bir betiğe bakalım. Bunlar betiğin hemen çökmesine neden olmayabilir; ancak kötü uygulamalardır veya olası hatalara yol açabilirler.
Bu betiği bad_script.sh adıyla kaydettiğinizi düşünün. Üzerinde ShellCheck çalıştırmak için şunu yazmanız gerekir: shellcheck bad_script.sh
ShellCheck'i çalıştırmadan önce sorunları fark edip edemeyeceğinizi görün!
#!/bin/bash
# A script with some common issues
MY_NAME=coddykit # Variable assignment needs no space, but quoting is good for values
echo "Hello $MY_NAME!" # Missing quotes around variable expansion
if [ $1 = "admin" ]; then # Missing quotes around $1
echo "Welcome, administrator."
fi
# A simple loop with potential issues
for file in *.txt; do # Unquoted glob could expand to multiple arguments
echo File: $file # Missing quotes around $file
doneShellCheck Uyarılarını Düzeltme
ShellCheck şu tür bir çıktı verir: SC2086: Double quotes missing around "$MY_NAME". Daha fazla ayrıntı için bakabileceğiniz belirli bir kod (örneğin SC2086) da çoğu zaman gösterir.
Önceki betik, ShellCheck önerilerine ve genel en iyi uygulamalara göre düzeltilmiş hâliyle şöyledir:
Sözcük bölünmesini ve yaygın hata kaynakları olan joker karakter genişletmesini önlemek için değişken genişletmelerinin ve komut ikamelerinin çevresinde çift tırnakların "" kullanıldığına dikkat edin.
#!/bin/bash
# A script with issues fixed by ShellCheck
MY_NAME="CoddyKit" # Quote variable assignment values
echo "Hello ${MY_NAME}!" # Always quote variable expansions
if [ "$1" = "admin" ]; then # Quote positional parameters like $1
echo "Welcome, administrator."
fi
# A simple loop with corrected quoting
for file in *.txt; do
echo "File: ${file}" # Quote variable expansions, especially in loops
doneEn İyi Uygulamaları Denetleme
Bash betikleri yazarken aşağıdakilerden hangileri iyi uygulama olarak kabul edilir?
Özet: Profesyonel Betik Yazımı
Tebrikler! Bash betiklerinizi işlevsel olmaktan çıkarıp profesyonel düzeye taşımayı öğrendiniz.
Şunları ele aldık:
- Okunabilirlik ve sürdürülebilirlik açısından en iyi uygulamaların önemi.
- Açıklık sağlamak için açıklamaları ve adlandırma kurallarını kullanma.
set -uveset -o pipefailile betikleri dayanıklı hâle getirme.- Kodunuzdaki sorunları otomatik olarak bulup iyileştiren ShellCheck aracının gücü.
Bu ilkeleri uygulayarak daha güvenilir, anlaşılır ve birlikte geliştirilmeye uygun Bash betikleri yazacaksınız. Çalışmaya devam edin!
Sıkça Sorulan Sorular
“Betik Yazımında En İyi Uygulamalar ve Lint Denetimi” dersi ücretsiz mi?
Evet — “Betik Yazımında En İyi Uygulamalar ve Lint Denetimi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Linux Command Line & Bash Scripting Mastery kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Linux Command Line & Bash Scripting Mastery kursu toplamda 4 dersten oluşur.
“Betik Yazımında En İyi Uygulamalar ve Lint Denetimi” dersinde ne öğreneceğim?
Temiz, okunabilir ve hatasız Bash betikleri yazmak için kodlama kurallarını, açıklama eklemeyi ve ShellCheck gibi araçları kullanmayı öğrenin. Linux Command Line & Bash Scripting Mastery ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Linux Command Line & Bash Scripting Mastery öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Linux Command Line & Bash Scripting Mastery, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Betik Yazımında En İyi Uygulamalar ve Lint Denetimi” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Linux Command Line & Bash Scripting Mastery dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Linux Command Line & Bash Scripting Mastery dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Bash Betiklerinde Hata Ayıklama (set -x, trap)
- Hata İşleme ve Çıkış Durumu
- Betik Yazımında En İyi Uygulamalar ve Lint Denetimi
- Bash Betiklerini Bats ile Sınama