Intelligent software Lab. 전재원 Shell Script Intelligent software Lab. 전재원
Shell Script? Shell Shell Script 운영체제와 사용자 사이에 있는 명령어 해석기 명령어, 유틸리티, 실행파일 등을 묶어서 쓰기 쉽게 만들어주 는 하나의 언어
기본 명령어 ls 디렉토리 내의 파일 목록을 보여주는 명령어 옵션 -r : reverse, 역순으로 목록 정렬 -a : 숨긴파일까지 모든 파일을 표시 -l : 파일 권한, 소유자, 소유그룹, 수정시간 등이 함께 표시
기본 명령어 echo 입력된 변수나 문자열을 출력하는 명령어 cat 파일을 열어 읽는 명령어
기본 명령어 head –n 파일의 처음부터 n줄 출력 tail -n 파일의 끝에서부터 n줄 출력
기본 명령어 mkdir 디렉토리 폴더 생성 rmdir 디렉토리 폴더 제거
기본 명령어 wc 파일 내의 줄, 단어, 문자의 수를 표시 clear 터미널 창의 모든 내용 삭제
Pipeline & Redirection “명령어1 | 명령어2”의 형태로 사용 명령어1의 결과를 명령어2로 전달 “echo 11+9” vs “echo 11+9 | bc” | \
Pipeline & Redirection grep “명령어 | grep 단어”의 형태로 사용 해당 명령어의 결과에서 단어가 들어간 줄만 출력 sort “명령어 | sort”의 형태로 사용 명령어의 결과를 정렬
Pipeline & Redirection tee “명령어 | tee 파일”의 형태로 사용 해당 명령어의 결과를 화면과 파일 두가지로 출력
Pipeline & Redirection “명령어 > 파일명”의 형태로 사용 명령어의 결과를 화면에 출력하지 않고 지정한 파일로 출력 “>”는 덮어쓰기, “>>”는 이어쓰기
Pipeline & Redirection “명령어 < 파일”의 형태로 사용 파일을 명령어에 입력으로 사용
*.sh File *.sh File 실행할 리눅스 명령어들을 적어 둔 파일 첫 줄은 “#!”를 써서 어떤 명령어 해석기를 사용할지 명시 #!/bin/sh #!/usr/bin/perl #!/bin/sed -f
*.sh File first_shell.sh 파일 만들어 보기 “vim first_shell.sh”로 새 파일 생성 아래와 같이 입력 Esc키를 눌러 입력모드 종료 “:wq”를 입력하여 파일 저장 및 vim 종료(화면 하단 자동입력)
*.sh File first_shell.sh 실행해 보기 “./first_shell.sh”로 파일 실행 권한이 없다고 오류가 발생 chmod 명령어로 *.sh 파일의 권한을 변경해야 실행 가능 “chmod 700 first_shell.sh”을 실행하여 권한 변경
주의 : 변수 선언 시 =의 앞과 뒤에 공백이 있으면 안된다!! 변수 선언 및 사용 변수의 선언은 자료형 선언 없이 “변수명=값”의 형태로 사용 변수의 사용은 변수명 앞에 “$”를 붙여서 사용 기존 변수에 새 값을 대입할 때에는 “$”를 쓰지 않는다 “make_variable.sh” 파일을 만들어서 아래 코드를 실행 주의 : 변수 선언 시 =의 앞과 뒤에 공백이 있으면 안된다!!
변수 숫자 계산 *.sh의 모든 변수는 문자열 기반 Pipeline과 bc 명령어를 이용하여 계산
변수 명령어의 결과 저장 “변수=`명령어` or 변수=$(명령어)”의 형태로 저장 `는 Tab키 위의 키 의 문자를 나타냄 ~
조건문 if문 문장 형태 위 방법 말고 명령어를 실행하여 결과값을 가지고 비교하는 방법이 있지만 심화과정이므로 본 실습에서는 다루지 않음 if ((조건 문장)) then 명령어 else fi
반복문 for문 C나 Java의 for문과는 다르고 python의 for문과 비슷 문장 형태 for 변수 in 리스트 do 명령어 done
반복문 While문 문장 형태 while ((조건 문장)) do 명령문 done
조건문과 반복문의 응용 구구단 3의 배수만 출력
Homework #1 구구단의 응용 쉘 스크립트를 이용하여 구구단을 출력한다. 단 3의 배수는 같 은 줄에 “ 369 369”를 출력하게 한다. “369 369”가 있는 줄은 grep으로 뽑아서 파일에 따로 저장한다. 구구단 스크립트 내부에는 Redirection을 쓰지 말 것!!! 출력 예제 힌트 명령어 | tee /dev/stderr | 명령어 메일 제목 : [정보검색] 201816042_전재원_0313 2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 369 369 2 * 4 = 8