Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

15가지 유용한 Bash 셸 내장 명령(예제 포함)

15가지 유용한 Bash 셸 내장 명령(예제 포함)Bash에는 셸과 함께 제공되는 여러 명령이 있습니다(즉, bash 셸 내부에 빌드됨).

내장 명령을 실행하면 bash 셸이 다른 프로그램을 호출하지 않고 즉시 실행합니다.

Bash 셸 내장 명령은 일반적으로 프로세스를 실행하기 위해 외부 명령을 분기하므로 외부 명령보다 빠릅니다.

이 기사에서는 몇 가지 유용한 bash 셸 내장 기능을 예제와 함께 검토해 보겠습니다.

1. Bash 내보내기 명령 예제

export 명령은 변수나 함수를 현재 쉘에서 실행 중인 모든 자식 프로세스의 환경으로 내보내는 데 사용됩니다.

export varname=value
export -f functionname # exports a function in the current shell.

값이 있는 변수 또는 함수를 내보냅니다. "env" 명령은 모든 환경 변수를 나열합니다. 다음 예에서 env가 내보낸 변수를 표시하는 것을 볼 수 있습니다.

$ export country=India

$ env
SESSIONNAME=Console
country=India
_=/usr/bin/env

"export -p" 명령은 현재 쉘에서 내보낸 모든 변수도 표시합니다.

<센터>

2. Bash 평가 명령 예제

eval 명령은 주어진 모든 인수를 결합하고 결합된 표현식을 평가하여 실행하고 실행된 명령의 종료 상태를 반환합니다.

$ cat evalex.sh
if [ ! -z $1 ]
then
proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | grep $1"
else
proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu"
fi
eval $proccomm

위의 코드 조각은 grep 명령의 패턴인 인수를 허용합니다. 이것은 명령줄에 주어진 특정 패턴에 대한 CPU 사용량 및 greps 순서로 프로세스를 나열합니다.

참고: 이 기사는 진행 중인 Bash Tutorial 시리즈의 일부입니다.

3. Bash 해시 명령 예

hash 명령은 사용된 명령의 경로 이름이 있는 해시 테이블을 유지 관리합니다. 명령을 실행하면 변수 $PATH에서 명령을 검색합니다.
하지만 해시 테이블에서 명령을 사용할 수 있으면 거기에서 선택하여 실행합니다. 해시 테이블은 해당 쉘에서 지금까지 사용된 각 명령에 대해 발생한 적중 횟수를 유지합니다.

$ hash
hits command
 1 /usr/bin/cat
 2 /usr/bin/ps
 4 /usr/bin/ls

-d 옵션과 -r 옵션을 사용하여 해시 테이블에서 특정 명령을 삭제하여 전체 해시 테이블을 재설정할 수 있습니다.

$ hash -d cat
$ hash
hits command
 2 /usr/bin/ps
 4 /usr/bin/ls

4. Bash pwd 명령 예

pwd는 현재 작업 디렉토리를 인쇄하는 쉘 내장 명령입니다. 기본적으로 내장 변수 ${PWD}

의 값을 반환합니다.
$pwd
/home/sasikala/bash/exercises

$echo $PWD
/home/sasikala/bash/exercises

5. Bash 읽기 전용 명령 예

readonly 명령은 변수나 함수를 더 이상 변경할 수 없는 읽기 전용으로 표시하는 데 사용됩니다.

$ cat readonly_ex.sh
#!/bin/bash
# Restricting an array as a readonly
readonly -a shells=("ksh" "bash" "sh" "csh" );
echo ${#shells[@]}

# Trying to modify an array, it throws an error
shells[0]="gnu-bash"

echo ${shells[@]}

$ ./readonly_ex.sh
4
readonly_ex.sh: line 9: shells: readonly variable

6. Bash 시프트 명령 예제

shift 명령은 위치 매개변수를 N만큼 왼쪽으로 이동하는 데 사용되며 이동 후 변수의 이름을 적절하게 변경합니다.

$ cat shift.sh
#! /bin/bash

while [ $# -gt 0 ]
do
 case "$1" in

 -l) echo "List command"
 ls
 shift
 ;;
 -p) echo "Process command"
 ps -a
 shift
 ;;
 -t) echo "Hash Table command"
 hash
 shift
 ;;
 -h) echo "Help command"
 help
 shift
 ;;
 esac
done

$./shift.sh -l -t
List command analysis break testing t1.sh temp Hash Table command
hits command
 1 /usr/bin/ls

7. Bash 테스트 명령 예제

test 명령은 조건식을 평가하고 평가에 따라 0 또는 1을 반환합니다. 더 많은 테스트 연산자에 대해서는 bash 매뉴얼 페이지를 참조하십시오.

#! /bin/bash

if test -z $1
then
 echo "The positional parameter \$1 is empty"
fi

8. Bash getopts 명령 예

getopts 명령은 주어진 명령줄 인수를 구문 분석하는 데 사용됩니다. 옵션에 대한 규칙을 정의할 수 있습니다. 즉, 옵션이 인수를 허용하고 허용하지 않습니다. getopts 명령에서 옵션 뒤에 콜론이 있으면 해당 옵션에 대한 인수가 필요합니다.

getopts는 각각 다음 매개변수 및 옵션 인수의 인덱스를 갖는 두 개의 변수 $OPTIND 및 $OPTARG를 제공합니다.

$ cat options.sh
#! /bin/bash

while getopts :h:r:l: OPTION
do
 case $OPTION in
 h) echo "help of $OPTARG"
 help "$OPTARG"
 ;;
 r) echo "Going to remove a file $OPTARG"
 rm -f "$OPTARG"
 ;;
 esac
done

$ ./options.sh -h jobs
help of jobs
jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
 Lists the active jobs. The -l option lists process id's in addition
 to the normal information; the -p option lists process id's only.

9. Bash 로그아웃 명령

현재 셸을 종료하는 데 사용되는 내장 로그아웃

10. Bash umask 명령 예

umask 명령은 현재 프로세스에 대한 파일 모드 생성 마스크를 설정합니다. 사용자가 파일을 생성할 때 기본 권한은 umask에 설정된 값을 기반으로 합니다. 파일에 대한 기본 권한은 666이며 사용자가 파일을 생성할 때 umask 비트로 마스킹됩니다.

자세한 내용은 파일 및 디렉토리 권한 문서를 참조하십시오.

사용자가 파일을 만들 때 666은 022로 마스킹되므로 기본 파일 권한은 644입니다.

$ umask
0022

$ > temporary

$ ls -l temporary
-rw-r--r-- 1 root root 4 Jul 26 07:48 temporary

11. Bash set 명령 예제

set은 셸의 내부 변수를 설정하고 수정하는 데 사용되는 셸 내장 명령입니다. 인수가 없는 set 명령은 모든 변수와 값을 나열합니다. set 명령은 위치 매개변수의 값을 설정하는 데도 사용됩니다.

$ set +o history # To disable the history storing.
+o disables the given options.

$ set -o history
-o enables the history

$ cat set.sh
var="Welcome to thegeekstuff"
set -- $var
echo "\$1=" $1
echo "\$2=" $2
echo "\$3=" $3

$ ./set.sh
$1=Welcome
$2=to
$3=thegeekstuff

12. Bash unset 명령 예제

unset 내장은 쉘 변수를 null로 설정하는 데 사용됩니다. unset은 배열의 요소를 삭제하고
전체 배열을 삭제하는 데에도 사용됩니다.

Bash 어레이에 대한 자세한 내용은 이전 기사 15 Bash Array Operations

를 참조하십시오.
$ cat unset.sh
#!/bin/bash
#Assign values and print it
var="welcome to thegeekstuff"
echo $var

#unset the variable
unset var
echo $var

$ ./unset.sh
welcome to thegeekstuff

위의 예에서 설정 해제 후 "var" 변수에 null 문자열이 할당됩니다.

13. Bash let 명령 예

let 명령은 쉘 변수에 대한 산술 연산을 수행하는 데 사용됩니다.

$ cat arith.sh
#! /bin/bash

let arg1=12
let arg2=11

let add=$arg1+$arg2
let sub=$arg1-$arg2
let mul=$arg1*$arg2
let div=$arg1/$arg2
echo $add $sub $mul $div

$ ./arith.sh
23 1 132 1

14. Bash shopt 명령 예제

shopt 내장 명령은 쉘 옵션을 설정 및 해제하는 데 사용됩니다. 이 명령을 사용하면 쉘 인텔리전스를 활용할 수 있습니다.

$cat shopt.sh
#! /bin/bash

## Before enabling xpg_echo
echo "WELCOME\n"
echo "GEEKSTUF\n"
shopt -s xpg_echo
## After enabling xpg_echo
echo "WELCOME\n"
echo "GEEKSTUF\n"

# Before disabling aliases
alias l.='ls -l .'
l.

# After disabling aliases
shopt -u expand_aliases
l.

$ ./shopt.sh
WELCOME\n
GEEKSTUF\n
WELCOME

GEEKSTUF

total 3300
-rw------- 1 root root 1112 Jan 23 2009 anaconda-ks.cfg
-r-xr-xr-x 1 root root 3252304 Jul 1 08:25 backup
drwxr-xr-x 2 root root 4096 Jan 26 2009 Desktop
shopt.sh: line 17: l.: command not found

xpg_echo 옵션을 활성화하기 전에 echo 문은 이스케이프 시퀀스를 확장하지 않았습니다. "엘." 현재 디렉토리의 ls -l로 별칭됩니다. 셸에서 expand_aliases 옵션을 비활성화한 후 별칭을 확장하지 않아 오류 l을 알 수 있습니다. 명령을 찾을 수 없습니다.

15. Bash printf 명령 예제

C 언어의 printf와 유사하게 bash printf 내장은 인쇄 작업의 형식을 지정하는 데 사용됩니다.

예제 13에서 스크립트는 두 개의 입력에 대해 산술 연산을 수행합니다. echo 문 대신 해당 스크립트에서 printf 문을 사용하여 아래와 같이 형식이 지정된 출력을 인쇄할 수 있습니다.

arith.sh에서 echo 문을 이 printf 문으로 바꿉니다.

printf "Addition=%d\nSubtraction=%d\nMultiplication=%d\nDivision=%f\n" $add $sub $mul $div

$ ./arith.sh
Addition=23
Subtraction=1
Multiplication=132
Division=1.000000