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


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

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

シェルスクリプトを保存する場所

フル/絶対パスを入力せずにスクリプトを実行するには、スクリプトを/ usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ usr/bin:/のいずれかのディレクトリに保存する必要があります。 sbin:/ bin環境変数。

/ usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ usr/bin:/ sbin:/ binを確認するには、以下のコマンドを発行します。

$ echo $PATH

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

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

したがって、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〜/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 

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

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