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