ウェブサイト検索

カスタム シェル関数とライブラリを作成して使用する方法


Linux では、シェル スクリプトは、特定のシステム管理タスクの実行や自動化、シンプルなコマンド ライン ツールの作成など、さまざまな方法で役立ちます。

このガイドでは、新しい Linux ユーザーにカスタム シェル スクリプトを確実に保存する場所を示し、カスタム シェル関数とライブラリの作成方法、他のスクリプトでライブラリの関数を使用する方法を説明します。

シェルスクリプトの保存場所

完全/絶対パスを入力せずにスクリプトを実行するには、` PATH 環境変数内のいずれかのディレクトリにスクリプトを保存する必要があります。

` PATH を確認するには、以下のコマンドを実行します。

echo $PATH

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

通常、ディレクトリ bin がユーザーのホーム ディレクトリに存在する場合、そのディレクトリはユーザーの ` PATH に自動的に含まれます。ここにシェル スクリプトを保存できます。

したがって、bin ディレクトリを作成します (Perl、Awk、Python スクリプト、またはその他のプログラムも保存できます)。

mkdir ~/bin

次に、独自のライブラリを保存する lib (ライブラリの略称) というディレクトリを作成します。 C、Python などの他の言語のライブラリをその中に保持することもできます。その下に、sh という名前の別のディレクトリを作成します。これは特にシェル ライブラリを保存します。

mkdir -p ~/lib/sh 

独自のシェル関数とライブラリを作成する

シェル関数は、スクリプト内の特別なタスクを実行するコマンドのグループです。これらは、他のプログラミング言語のプロシージャ、サブルーチン、関数と同様に機能します。

関数を記述するための構文は次のとおりです。

function_name() { list of commands }

たとえば、次のように日付を表示する関数をスクリプトに記述できます。

showDATE() {date;}

日付を表示したい場合は、その名前を使用して上記の関数を呼び出すだけです。

showDATE

シェル ライブラリは単なるシェル スクリプトですが、後で他のシェル スクリプトから呼び出すことができる関数を保存するだけのライブラリを作成することもできます。

以下は、私の ~/lib/sh ディレクトリにある libMYFUNCS.sh というライブラリの例と、その他の関数の例です。

#!/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
}

ファイルを保存し、スクリプトを実行可能にします。

ライブラリから関数を呼び出す方法

lib 内の関数を使用するには、まず関数が使用されるシェル スクリプトに次の形式で lib を含める必要があります。

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

したがって、以下に示すように、別のスクリプトでライブラリ ~/lib/sh/libMYFUNCS.sh の関数 printUSERDETS を使用します。

特定のユーザーの詳細を出力するためにこのスクリプトに別のコードを記述する必要はなく、既存の関数を呼び出すだけです。

test.sh という名前の新しいファイルを開きます。

#!/bin/bash 

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

#use function from lib
printUSERDETS

#exit script
exit 0

それを保存し、スクリプトを実行可能にして実行します。

chmod 755 test.sh
./test.sh 

この記事では、シェル スクリプトを確実に保存する場所、独自のシェル関数とライブラリを作成する方法、通常のシェル スクリプトでライブラリから関数を呼び出す方法について説明しました。

次に、Bash スクリプト用のIDEとしてVimを構成する簡単な方法を説明します。それまでは、常に TecMint にアクセスし、以下のフィードバック フォームからこのガイドについてのご意見を共有してください。