• 검색 결과가 없습니다.

셸 스크립트 예제

N/A
N/A
Protected

Academic year: 2022

Share "셸 스크립트 예제"

Copied!
3
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

- 1 -

셸 스크립트 예제

셸은 사용자가 터미널에서 입력한 명령을 해석해서 커널에 전달하고, 처리 결과를 화면에 보 여준다. 셸을 명령어 해석기라고도 한다. 셸의 종류도 다양한데, 우분투 리눅스는 배시 셸 (BASH, Bourne Again SHell)을 사용한다. 터미널에서 “bash —version”이라고 입력하면 배시 셸의 버전 정보를 확인할 수 있다.

$ bash --version

셸 스크립트는 실행할 명령어들을 나열해 놓은 파일이다. 셸 스크립트에 입력된 명령들을 셸 이 자동으로 실행할 것이다. 여러 명령을 조합하여 정해진 순서대로 자동 실행시킬 수 있다. 참 고로 “스크립트”라는 용어는 한 줄씩 읽어 와서 실행하도록 작성된 프로그램을 뜻한다.

● 예제 1

그럼 셸 스크립트를 작성해보자.

○ 파일 작성

$ gedit helloworld &

#!/bin/bash

echo “Hello! Shell Script!”

○ 파일 정보 확인

$ ls –l helloworld

○ 실행 권한 부여

$ sudo chmod +x helloworld

○ 파일 정보 확인

$ ls –l helloworld

○ 실행

$ ./helloworld

현재 작업 디렉터리가 어디든 상관없이 셸 스크립트를 실행하려면 적절한 디렉터리로 작성한 스크립트 파일을 옮겨야 한다. 셸은 환경 변수 PATH로 지정된 경로를 차례로 탐색해서 명령을 실행한다. echo 명령으로 현재 시스템에 설정된 환경 변수 PATH의 값을 확인할 수 있다.

$ echo $PATH

/home/cju/bin:/home/cju/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bi n:/usr/games:/usr/local/games:/snap/bin

사용자가 작성한 스크립트는 일반적으로 /usr/local/bin에 저장한다. /usr/local/bin은 소유권

(2)

- 2 -

이 루트에게 있으므로 helloworld를 옮길 때 sudo가 필요하다.

$ sudo cp helloworld /usr/local/bin/

이제 해당 셸 스크립트를 어느 디렉터리에서든지 실행할 수 있다.

$ helloworld

● 예제 2

시스템 로그(syslog)를 모니터링하는 sysloger라는 셸 스크립트를 만들어보자.

○ 파일 작성

$ gedit sysloger &

#!/bin/bash

tail /var/log/syslog > syslogresult

○ 실행 권한 부여

$ sudo chmod +x sysloger

○ 실행 ./sysloger

○ 생성된 파일 확인 cat syslogresult

셸 스크립트는 다른 프로그래밍 언어 못지않게 유연함과 강력함을 자랑한다. 변수를 사용해 보자. 변수에 값을 입력할 때는 대입 연산자 “=”를 사용한다(result=syslogresult). 이때 대입 연 산자 뒤에 공백이 있으면 안 되므로 주의해야 한다. 변수를 사용할 때에는 변수 이름 앞에 $를 붙인다($result).

#!/bin/bash result=syslogresult

tail /var/log/syslog > $result

변수만 사용했을 뿐 tail 결과를 syslogresult에 저장한다는 사실은 동일하다.

(3)

- 3 -

● 예제 3

옵션 없이 tail을 실행하면 10줄을 출력한다. 원하는 수만큼 출력하려면 –n 옵션을 사용해야 한다.

$ tail –n5 텍스트파일

○ 파일 수정

#!/bin/bash result=syslogresult

tail /var/log/syslog –n$1 > $result

새로운 변수 $1은 첫 번째 명령줄 인수를 저장하는 변수이다. 예를 들어 ./sysloger 5라고 입 력한다면 $1에는 5가 저장된다.

○ 결과 확인

$ ./sysloger 5

단, 명령줄 인수를 적지 않고 ./sysloger를 실행하면 –n 다음 값이 없기 때문에 오류가 발생 한다.

$ ./sysloger

○ 문제 해결

#!/bin/bash result=syslogresult line=${1:-10}

tail /var/log/syslog –n$line > $result

${번호:-기본값}은 해당 명령줄 인수가 존재하지 않으면 인수 값은 기본값을 갖는다.

○ 결과 확인

$ ./sysloger

$ ./sysloger 2

● 참고문헌

신재훈. (2015). 리눅스 서버를 다루는 기술. 서울: 길벗.

참조

관련 문서

wcslog.js 파일은 공통 스크립트와 전환 스크립트의 method 를 모두 담고 있는 파일입니다.. 리퍼러(referrer) 정보, 현재 페이지의 URL, 사용자 환경 등의 정보를 변수에 설정하고

이 공정은 매일 하나의 뱃치만 작업할 수밖에 없으므로, 이상이 있는 경우 속히 조치를 취하지 않으면 막대한 경제적 피해를 본다.. 이를 관리하기 위해서

Lab., Hanyang Univ.. Lab., Hanyang Univ.. Lab., Hanyang Univ.. Lab., Hanyang Univ.. Lab., Hanyang Univ.. Lab., Hanyang Univ.. Lab., Hanyang Univ.. Lab., Hanyang Univ..

• JLabel, JButton, JCheckBox, JRadioButton, JComboBox, JList, JTextField, JTextArea... • 예제:

본 강의 자료에서 예제 등의 출처는 다음과 같은

① 프런트 패널에 노브 컨트롤과 탱크 인디케이터를 배치하고 라벨을 각각 루프 카운트 실행 횟수와 합계로 입력한다.. 노브 컨트롤은 For 루프의 실행 횟수를 지정하고,

구조체가

2015년 2학기 프로그래밍개론및 실습 과목으로 본 내 용은 강의 교재인 생능출판사 , 두근두근 C 언어 수업,..