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.
- Temel Linux Kabuk Komut Dosyası Dili İpuçlarını Anlayın – Bölüm I
- 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.
- 'echo' : Tırnak işaretleri içinde yazılan her şeyi yazdırır.
- ‘$‘ : Bir kabuk değişkenidir.
- ‘>>‘ : Çı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.