본문 바로가기

진리는어디에

쉘 스크립트(shell script) - 명령어

1. Shell?

  shell이란 kernel 프로그램 사용자 인터페이스를 제공하는 중간 매개체이다.

  사용자가 shell에서 제공하는 프롬프트를 이용하여 명령어를 입력하면 shell 입력 받은 명령어를 kernel 실행 있는 언어로 변환하여 전달 실행되기 때문에 보통 shell 명령어 해석기라고 한다.

 

2. Shell 변경 확인


2.1. 사용 가능한 Shell 확인

  # chsh –l or 또는 cat /etc/shells 입력하면 사용 가능한 shell 출력된다.


2.2. Shell 변경

  다른 쉘로 변경하기 위해서는 프롬프트 상에서 “chsh” 입력하면 새로운 프롬프트를 생성한다. 이때 바꾸고자 하는 쉘이 있는 패스를 적어주면 된다. 이렇게 쉘을 변경하게 되면 /etc/passwd 파일 내에서도 기존의 쉘이 새로 지정한 쉘로 변경된다. 또한 “chsh –s /bin/csh” 실행하면 현재 로그인한 쉘을 변경하게 된다.


3. Shell 명령어


명령어

설명

:

항상 명령어의 실행 값은 참을 반환하며 아무런 액션도 발생하지 않는다. 참값을 반환하기 때문에 “while : ; do” 같은 형태로 루프문에서 무한 루프를 설정하고 사용된다.

.

지정한 파일로부터 읽거나 실행

alias

명령에대한 앨리어스 지정

bg

특정한 프로세스를 백그라운드로 진행

bind

readline에서의 또는 함수, 매크로에 순서를 결합하고자 사용

break

루프문에서 루프문을 탈출하고자 사용

builtin

내부 명령어나 함수를 실행할 사용할 있으며 스크립트에서 외부명령어와 내부명령어가 같은 이름으로 존재할 내부 명령어만을 실행한다. 만일 지정한 내부 명령어나 함수가 존재하지 않는다면 에러를 출력한다.

cd

디렉토리 이동 명령어

command

내부 명령어 외부 명령어를 실행하며 세부적인 정보를 출력할 있는 명령어

continue

루프문에서 루프문의 처음으로 되돌아 사용하는 명령어

declare

변수를 선언하거나 속성을 부여하고자 사용하는 명령어

dirs

현재 저장되어 있는 디렉토리 리스트 목록 출력

disown

쉘에서 활성화 되어 있는 작업 테이블에서 특정한 작업 목록을 삭제

echo

입력된 문자열의 출력

enable

내부 명령어의 활성화 비활성화

eval

설정되어 있는 인자를 명령어로 변환

exec

현재 프로세스를 치환

exit

종료

export

지정한 환경변수를 하위 프로세스까지 전달

fc

히스토리 편집 출력

fg

포그라운드에서 실행

getopts

명령어의 옵션을 분리하는 명령어

hash

입력한 명령어에 대한 경로를 해쉬 테이블에 저장하여 명령어를 다시 호출할 시스템 패스 $PATH에서 검색하지 않고 해쉬 테이블에서 검색

help

내부 명령어 도움말 출력

history

이전에 사용한 명령어의 출력

jobs

실행중인 작업 목록을 출력

kill

현재 실행중인 프로세스 중단

let

산술 논리 계산

local

로컬 변수의 선언 호출

logout

로그 아웃

popd

저장된 디렉토리 스택으로 부터제거

printf

정형화된 데이터의 출력

pushd

디렉토리 스택으로 저장

pwd

현재 디렉토리 출력

read

프롬프트로부터 데이터 입력

readonly

프롬프트로부터 읽기 전용의 데이터 입력

return

호출한 부모 프로세스로 반환 되는

set

변수 설정

shift

위치 매개 변수의 이동

shopt

옵션의 출력 설정

source

지정한 파일로부터 읽거나 실행

suspend

특정한 신호를 받을 까지 일시 중지

test

조건식을 평가

times

프로세스가 사용한 시간을 출력

trap

명령어 실행 도중 특정한 신호가 입력되었을 때의 처리

type

지정한 명령어가 내부 명령어인지 외부 명령어인지를 출력

typeset

declare 같은 의미

ulimit

시스템 자원을 제한

unmask

파일 디렉토리에 대한 생성 마스크 설정

unalias

앨리어스 해제

unset

함수 변수의 초기화

wait

하위 프로세스가 종료 까지 대기


3.1. 기본적인 입력 명령어


3.1.1. 문자 출력 echo

-n

마지막 문자 “\n” 출력 하지 않는다

-e

\(역슬래쉬) 문자 번역

3.1.2. 정형화된 문자 출력 printf

C에서 제공하는 printf 비슷한 기능을 제공

사용법 : printf format [argument]

#!/bin/bash

com=”computer”

printf “$com\n” à computer

printf “%s” $com à computer

printf “%s\t” com à com

printf “%s\n” “computer” à computer

printf “%s\n” “$com” à computer

 

3.2. 기본적인 출력 명령어


3.2.1. 사용자로부터 값을 입력 받는 read

사용법 : read [-t timeout] [-p prompt] [-a array] [-n nchars] [-d delim] 변수명

-t

사용자로부터 입력 받을 시간을 설정하여 입력한 시간을 초과하면 자동으로 넘어간다.

-p

입력 프롬프트의 형태를 지정하며 문자열을 이용하여 출력

-a

입력 받은 변수가 배열임을 정의

-n

입력 받을 값의 크기 설정(문자의 개수)

-d

지정한 문자열을 입력 때까지 입력 받음

-r

입력한 이스케이프 문자를 인식

-s

사용자로부터 입력 받은 문자를 프롬프트에 echo 하지 않기 때문에 주로 패스워드 입력에 이용. 같은 명령어로 “sty –echo” 프롬프트 echo 기능을 정지 하며 “sty echo” 프롬프트 기능을 활성화 한다.

ex) #read –p “Input name : “ –t 10 –n 5 read_value

 

주의 : 변수를 대입 변수 = 같은 형태로 사이에 스페이스를 넣게 되면 대입연산이 아니라 비교 연산이 된다.

4. 기본적인 스크립트

4.1 스크립트의 실행

 만들어진 쉘을 실행하는데 sh 명령어를 이용하거나 또는 스크립트 파일의 실행권한을 활성화 하여 일반 실행 파일처럼 사용하면 된다.

 

4.2. 스크립트의 구분 인자

  스크립트는 명령어와 명령어의 옵션 매개변수로 구분되며 명령어와 명령어의 구분인자로는 Enter 또는 ; 이며 명령어의 옵션 매개변수는 tab 또는 하나 이상의 space 구분 있다.

 

4.2.1 IFS인자 구분 매개 변수

 IFS 구분 인자를 저장하고 있는 변수로, 기본적으로 “space, tab, newline”이다. 만일 특정 문자를 구분인자로 설정하기 위해서 IFS 값을 다른 값으로 지정하여 사용 있다.

 

잘 못된 내용이나 의문사항은 kukuta@gmail.com으로 메일 주세요

 

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!