사용자 지정 셸 함수 및 라이브러리를 작성하고 사용하는 방법


Linux에서 셸 스크립트는 특정 시스템 관리 작업을 수행하거나 자동화하고, 간단한 명령 줄 도구를 만드는 등 다양한 방법으로 우리를 도와줍니다.

이 가이드에서는 새로운 Linux 사용자에게 커스텀 셸 스크립트를 안정적으로 저장할 수있는 위치를 보여주고, 커스텀 셸 함수와 라이브러리를 작성하는 방법을 설명하고, 다른 스크립트에서 라이브러리의 함수를 사용하는 방법을 설명합니다.

쉘 스크립트를 저장할 위치

전체/절대 경로를 입력하지 않고 스크립트를 실행하려면/usr/local/bin :/usr/local/sbin :/usr/bin :/opt/cuda/bin의 디렉토리 중 하나에 저장해야합니다. :/opt/cuda/integration/nsight-compute :/opt/cuda/integration/nsight-systems :/usr/lib/jvm/default/bin 환경 변수.

/ usr/local/bin :/usr/local/sbin :/usr/bin :/opt/cuda/bin :/opt/cuda/integration/nsight-compute :/opt/cuda/integration/nsight-systems를 확인하려면 :/usr/lib/jvm/default/bin, 아래 명령을 실행합니다.

$ echo $PATH

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

일반적으로 디렉토리 bin이 사용자 홈 디렉토리에 있으면 자동으로/usr/local/bin :/usr/local/sbin :/usr/bin :/opt/cuda/bin :/opt /에 포함됩니다. "cuda/integration/nsight-compute :/opt/cuda/integration/nsight-systems :/usr/lib/jvm/default/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에 연결되어 있고 아래 피드백 양식을 통해이 가이드에 대한 생각을 공유하십시오.