Özel Kabuk İşlevleri ve Kitaplıkları Nasıl Yazılır ve Kullanılır


Linux'ta kabuk komut dosyaları, belirli sistem yönetimi görevlerini gerçekleştirmek ve hatta otomatikleştirmek, basit komut satırı araçları oluşturmak ve çok daha fazlası dahil olmak üzere pek çok farklı şekilde bize yardımcı olur.

Bu kılavuzda, yeni Linux kullanıcılarına özel kabuk komut dosyalarını güvenilir bir şekilde nerede saklayacaklarını göstereceğiz, özel kabuk işlevlerinin ve kitaplıklarının nasıl yazılacağını açıklayacağız, diğer komut dosyalarında kitaplıklardaki işlevleri nasıl kullanacaklarını açıklayacağız.

Kabuk Komut Dosyalarının Nerede Saklanacağı

Komut dosyalarınızı tam/mutlak yol yazmadan çalıştırmak için, bunların ` PATH ortam değişkenindeki dizinlerden birinde saklanması gerekir.

` PATH'inizi kontrol etmek için aşağıdaki komutu verin:

echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Normalde, bin dizini kullanıcının ana dizininde mevcutsa, otomatik olarak kullanıcının ` PATH dizinine dahil edilir. Kabuk komut dosyalarınızı burada saklayabilirsiniz.

Bu nedenle bin dizinini oluşturun (bu dizin aynı zamanda Perl, Awk veya Python komut dosyalarını veya diğer programları da depolayabilir):

mkdir ~/bin

Daha sonra, kendi kitaplıklarınızı tutacağınız lib (kitaplıkların kısaltması) adında bir dizin oluşturun. Ayrıca C, Python ve benzeri diğer dillere ait kütüphaneleri de içinde tutabilirsiniz. Altında sh adında başka bir dizin oluşturun; bu özellikle kabuk kitaplıklarınızı saklayacaktır:

mkdir -p ~/lib/sh 

Kendi Kabuk İşlevlerinizi ve Kitaplıklarınızı Oluşturun

Kabuk işlevi, bir komut dosyasında özel bir görevi gerçekleştiren bir komut grubudur. Diğer programlama dillerindeki prosedürlere, alt rutinlere ve işlevlere benzer şekilde çalışırlar.

Bir işlevi yazmanın sözdizimi şöyledir:

function_name() { list of commands }

Örneğin, tarihi gösterecek şekilde bir komut dosyasına aşağıdaki gibi bir işlev yazabilirsiniz:

showDATE() {date;}

Tarihi görüntülemek istediğinizde, yukarıdaki işlevi adını kullanarak çağırmanız yeterlidir:

showDATE

Kabuk kitaplığı yalnızca bir kabuk komut dosyasıdır, ancak yalnızca daha sonra diğer kabuk komut dosyalarından çağırabileceğiniz işlevlerinizi depolamak için bir kitaplık yazabilirsiniz.

Aşağıda, ~/lib/sh dizinimdeki libMYFUNCS.sh adlı ve daha fazla işlev örneği içeren bir kitaplık örneği verilmiştir:

#!/bin/bash 

#Function to clearly list directories in PATH 
showPATH() { 
        oldifs="$IFS"   #store old internal field separator
        IFS=:              #specify a new internal field separator
        for DIR in $PATH ;  do echo $DIR ;  done
        IFS="$oldifs"    #restore old internal field separator
}

#Function to show logged user
showUSERS() {
        echo -e “Below are the user logged on the system:\n”
        w
}

#Print a user’s details 
printUSERDETS() {
        oldifs="$IFS"    #store old internal field separator
        IFS=:                 #specify a new internal field separator
        read -p "Enter user name to be searched:" uname   #read username
        echo ""
       #read and store from a here string values into variables using : as  a  field delimiter
    read -r username pass uid gid comments homedir shell <<< "$(cat /etc/passwd | grep   "^$uname")"
       #print out captured values
        echo  -e "Username is            : $username\n"
        echo  -e "User's ID                 : $uid\n"
        echo  -e "User's GID              : $gid\n"
        echo  -e "User's Comments    : $comments\n"
        echo  -e "User's Home Dir     : $homedir\n"
        echo  -e "User's Shell             : $shell\n"
        IFS="$oldifs"         #store old internal field separator
}

Dosyayı kaydedin ve betiği çalıştırılabilir hale getirin.

Bir Kütüphaneden Fonksiyonlar Nasıl Çağırılır

Bir lib'de bir işlevi kullanmak için, öncelikle lib'i işlevin kullanılacağı kabuk betiğine aşağıdaki biçimde eklemeniz gerekir:

./path/to/lib
OR
source /path/to/lib

Yani aşağıda gösterildiği gibi başka bir komut dosyasında ~/lib/sh/libMYFUNCS.sh kütüphanesindeki printUSERDETS fonksiyonunu kullanırsınız.

Belirli bir kullanıcının ayrıntılarını yazdırmak için bu komut dosyasına başka bir kod yazmanıza gerek yoktur; yalnızca mevcut bir işlevi çağırmanız yeterlidir.

test.sh adında yeni bir dosya açın:

#!/bin/bash 

#include lib
.  ~/lib/sh/libMYFUNCS.sh

#use function from lib
printUSERDETS

#exit script
exit 0

Kaydedin, ardından betiği çalıştırılabilir hale getirin ve çalıştırın:

chmod 755 test.sh
./test.sh 

Bu makalede size kabuk komut dosyalarını güvenilir bir şekilde nerede saklayacağınızı, kendi kabuk işlevlerinizi ve kitaplıklarınızı nasıl yazacağınızı, normal kabuk komut dosyalarındaki kitaplıklardan işlevleri nasıl çağıracağınızı gösterdik.

Daha sonra, Vim'i Bash komut dosyası oluşturma için bir IDE olarak yapılandırmanın basit bir yolunu açıklayacağız. O zamana kadar TecMint'le daima bağlantıda kalın ve aşağıdaki geri bildirim formunu kullanarak bu kılavuz hakkındaki düşüncelerinizi de paylaşın.