Linux BASH Scripting Dünyasına Yolculuk - Bölüm III


'Shell Scripting' serisinin önceki makaleleri büyük beğeni topladı ve bu nedenle bu makaleyi hiç bitmeyen öğrenme sürecini genişletmek için yazıyorum.

  1. Temel Linux Kabuk Komut Dosyası Dili İpuçlarını Anlayın – Bölüm I
  2. Linux'a Yeni Başlayanların Shell Programlamayı Öğrenmesi için 5 Shell Komut Dosyası - Bölüm II
Bash Anahtar Kelimeleri

Anahtar kelime, bilgisayar dili için özel bir anlam taşıyan bir kelime veya semboldür. Aşağıdaki semboller ve sözcükler, alıntı yapılmadığında ve bir komutun ilk sözcüğü olduğunda Bash için özel anlamlar taşır.

! 			esac 			select 		} 
case 			fi 			then 		[[ 
do 			for 			until 		]] 
done 			function 		while 		elif
if 			time 			else 		in 		{

Çoğu bilgisayar dilinin aksine, Bash, komut dosyalarının okunmasını zorlaştırsa da anahtar kelimelerin değişken adlar olarak kullanılmasına izin verir. Komut dosyalarının anlaşılır olmasını sağlamak için değişken adlarında anahtar kelimeler kullanılmamalıdır.

Bir komut kabukta $(komut) olarak uygulanır. Komutun tam yolunu eklemeniz gerekebilir. örneğin, doğru yürütme için $ (/bin/date).

'Nerede' komutunu kullanarak belirli bir programın yolunu öğrenebilirsiniz. örneğin, tarih nerede

[root@tecmint /]# whereis date
date: /bin/date /usr/share/man/man1/date.1.gz

Şimdilik bu kadar yeter. Şimdi bu teoriler hakkında fazla konuşmayacağız. Scriptlere geliyoruz.

Geçerli Çalışma Dizinini Taşı

Yürütme sırasında betiğin sonunda yalnızca sayısal değeri sağlayarak mevcut çalışma dizininden herhangi bir seviyeye geçin.

#! /bin/bash 
LEVEL=$1 
for ((i = 1; i <= LEVEL; i++)) 
do 
CDIR=../$CDIR 
done 
cd $CDIR 
echo "You are in: "$PWD 
exec /bin/bash

Yukarıdaki kodları masaüstünüze “up.sh“ olarak kaydedin. Çalıştırılabilir hale getirin (chmod 755 up.sh). Koşmak:

./up.sh 2 (Geçerli çalışma dizinini iki seviye yukarı taşıyacaktır).
./up.sh 4 (Geçerli çalışma dizinini dört seviyeye taşıyacaktır).

Kullanım ve Uygulama Alanı

Farklı konumlarda kitaplıklar, ikili dosyalar, simgeler, çalıştırılabilir dosyalar vb. içeren klasör içindeki klasörü içeren daha büyük komut dosyalarında konum, Bir geliştirici olarak siz, bu komut dosyasını istediğiniz konuma oldukça otomatik bir şekilde taşımak için uygulayabilirsiniz.

Not: For, yukarıdaki komut dosyasında bir döngüdür ve döngü için değerler doğru olana kadar çalışmaya devam edecektir.

Örnek Çıktı
[root@tecmint /]# chmod 755 up
[root@tecmint /]# ./up.sh 2
You are in: /

[root@tecmint /]# ./up.sh 4 
You are in: / 

[root@tecmint /]#

up.sh'yi indirin

Rastgele Bir Dosya veya Klasör Oluşturun

Çoğaltma şansı olmayan rastgele bir dosya (klasör) oluşturun.

#! /bin/bash

echo "Hello $USER";
echo "$(uptime)" >> "$(date)".txt
echo "Your File is being saved to $(pwd)"

Bu Basit bir betik ama çalışması o kadar da basit değil.

  1. 'echo' : Tırnak işaretleri içinde yazılan her şeyi yazdırır.
  2. $‘ : Bir kabuk değişkenidir.
  3. >>‘ : Çıktı, date komutunun ve ardından txt uzantısının çıktısına yönlendirilir.

Tarih komutunun çıktısının tarih ve saat, dakika cinsinden saat olduğunu biliyoruz. Strong> ikinci ve yıl. Bu nedenle, dosya adı çoğaltma şansı olmadan düzenli bir dosya adı üzerinden çıktı alabiliriz. Kullanıcının ileride başvurmak üzere zaman damgası ile oluşturulan dosyaya ihtiyacı olduğunda bu çok yararlı olabilir.

Örnek Çıktı
[root@tecmint /]# ./randomfile.sh  
Hello server 
Your File is being saved to /home/server/Desktop

Masaüstünde oluşturulan dosyayı Bugünün Tarihi ve güncel saati ile görüntüleyebilirsiniz.

[root@tecmint /]# nano Sat\ Jul\ 20\ 13\:51\:52\ IST\ 2013.txt 
13:51:52 up  3:54,  1 user,  load average: 0.09, 0.12, 0.08

Yukarıdaki prensibe göre çalışan ve bir Linux sunucusunun ağ bilgilerinin toplanmasında çok yararlı olan yukarıdaki betiğin daha ayrıntılı bir uygulaması aşağıda verilmiştir.

Randomfile.sh'yi indirin

Ağ Bilgilerini Toplayacak Komut Dosyası

Bir Linux sunucusunda ağ bilgilerini toplar. Komut dosyası çok büyük ve kodun tamamını ve komut dosyasının çıktısını buraya göndermek mümkün değil. Bu nedenle, aşağıdaki indirme bağlantısını kullanarak betiği indirip kendiniz test etmeniz daha iyidir.

Not: lsb-core paketini ve diğer gerekli paketleri ve bağımlılığı yüklemeniz gerekebilir. Gerekli paketleri Apt veya Yum. Açıkçası, betiği çalıştırmak için root olmanız gerekir çünkü burada kullanılan komutların çoğu root olarak çalıştırılacak şekilde yapılandırılmıştır.

Örnek Çıktı
[root@tecmint /]# ./collectnetworkinfo.sh  

The Network Configuration Info Written To network.20-07-13.info.txt. Please email this file to your_name@service_provider.com. ktop

Size postalanmasını sağlamak için komut dosyanızdaki yukarıdaki e-posta adresini değiştirebilirsiniz. Otomatik olarak oluşturulan dosya görüntülenebilir.

Collectnetworkinfo.sh'yi indirin

BÜYÜK HARF'i küçük harfe dönüştüren Komut Dosyası

BÜYÜK HARF'i küçük harfe dönüştüren ve çıktıyı, gerektiği gibi değiştirilebilecek bir "small.txt" metin dosyasına yönlendiren bir komut dosyası.

#!/bin/bash 

echo -n "Enter File Name : " 
read fileName 

if [ ! -f $fileName ]; then 
  echo "Filename $fileName does not exists" 
  exit 1 
fi 

tr '[A-Z]' '[a-z]' < $fileName >> small.txt

Yukarıdaki komut dosyası, herhangi bir uzunluktaki bir dosyanın büyük/küçük harf durumunu tek bir tıklamayla büyük harften küçük harfe ve gerekiyorsa tam tersi şekilde, çok az değişiklikle dönüştürebilir.

Örnek Çıktı
[root@tecmint /]# ./convertlowercase.sh  
Enter File Name : a.txt 

Initial File: 
A
B
C
D
E
F
G
H
I
J
K
...

Yeni Dosya (small.txt) çıktısı:

a
b
c
d
e
f
g
h
i
j
k
...

Convertlowercase.sh'yi indirin

Basit Hesap Makinesi Programı

#! /bin/bash 
clear 
sum=0 
i="y" 

echo " Enter one no." 
read n1 
echo "Enter second no." 
read n2 
while [ $i = "y" ] 
do 
echo "1.Addition" 
echo "2.Subtraction" 
echo "3.Multiplication" 
echo "4.Division" 
echo "Enter your choice" 
read ch 
case $ch in 
    1)sum=`expr $n1 + $n2` 
     echo "Sum ="$sum;; 
        2)sum=`expr $n1 - $n2` 
     echo "Sub = "$sum;; 
    3)sum=`expr $n1 \* $n2` 
     echo "Mul = "$sum;; 
    4)sum=`expr $n1 / $n2` 
     echo "Div = "$sum;; 
    *)echo "Invalid choice";; 
esac 
echo "Do u want to continue (y/n)) ?" 
read i 
if [ $i != "y" ] 
then 
    exit 
fi 
done
Örnek Çıktı
[root@tecmint /]# ./simplecalc.sh 

Enter one no. 
12 
Enter second no. 
14 
1.Addition 
2.Subtraction 
3.Multiplication 
4.Division 
Enter your choice 
1 
Sum =26 
Do u want to continue (y/n)) ? 
y
1.Addition 
2.Subtraction 
3.Multiplication 
4.Division 
Enter your choice 
3 
mul = 14812
Do u want to continue (y/n)) ? 
n

Simplecalc.sh'yi indirin

Hesaplamaları bu kadar basit bir şekilde yapan güçlü bir program oluşturmanın ne kadar kolay olduğunu gördünüz mü? Bu son değil. Yönetim açısından geniş bir perspektifi kapsayan bu serinin en az bir makalesini daha hazırlayacağız.

Şimdilik bu kadar. Okuyucu ve en iyi eleştirmen olarak bu yazıdan ne kadar keyif aldığınızı ve bir sonraki yazıda ne görmek istediğinizi bize söylemeyi unutmayın. Herhangi bir soru yorumda memnuniyetle karşılanır. O zamana kadar sağlıklı, güvende ve uyumlu kalın. Bizi Beğenin ve Paylaşın ve yayılmamıza yardımcı olun.