Download presentation
Presentation is loading. Please wait.
1
Linux 9.X 기초에서 활용까지 Chapter 09 쉘(Shell)
2
Content 쉘의 의미와 활용 쉘 스크립트에 관하여 알아보자
3
쉘의 의미 쉘의 정의 쉘은 조개껍데기라는 뜻을 가지고 있으며, 운영체제를 둘러싸고 입력 받는 명령어를 실행시키는 명령어 해석기이며, 프로그래밍 언어로서의 특성을 가지고 있다. 최초의 쉘은 UNIX 연구 개발 초기 UNIX 파일시스템 설계의 일부분으로 Ken Thompson에 의해 만들어졌으며, AT&T에서 Steven Bourne에 의해 Bourne Shell이 만들어졌다. 리눅스에서의 기본적으로 사용하는 쉘은 Bash Shell로 Bourne Again Shell이라는 뜻을 가지고 있다. 쉘과 커널과의 관계
4
쉘의 의미 쉘의 종류 sh(Bourne Shell)
UNIX 시스템의 표준 구성 요소로서 가장 오래되고, 강력한 명령 프로그래밍 언어 기능을 가지고 있음 Bell 연구소의 Steven Bourne의 이름을 따라 명명되었다. Bourne의 커맨드명은 sh 이다. 상호 대화식 방식을 취하고 있지 않으며, .profile 파일로 환경을 초기화 한다. csh(C Shell) Bourne Shell 이외에 많이 사용되고 있는 쉘이며, 프로그램명은 csh 이다. C Shell은 원래 버클리 버전 UNIX의 쉘로 개발 된 것으로 Bourne Shell과 매우 유사하다. 커맨드 구조에서 C 언어와 유사하고, 몇가지 프로그램 개발에 편리한 기능도 내장하고 있다. 상호 대화식 방식으로 구성되어 있으며, .cshrc 파일로 환경을 초기화 한다.
5
쉘의 의미 쉘의 종류 ksh(Korn Shell)
AT&T의 David Korn에 의해 개발되었으며, 비대화식 Bourne Shell에 C Shell의 대화식 환경을 접목시켜 UNIX 시스템에서 표준 쉘로 공급 Bourne Shell과 완전히 호환성이 있으며, C의 혈통을 잇고 있다. .kshrc 파일로 환경을 초기화 할 수 있다. Bash(Bourne Again Shell) Brian Fox 외 몇몇 사람에 의해 1989sus에 개발되었으며, FSF에서 내어 놓은 일군의 GNU이다. Bash의 최종 목표는 IEEE POSIX Shell과 도구 명세에 호환되도록 하는 것이다. Korn Shell과 C Shell의 유용한 특징들을 통합하고 있으며, 쉘 프로그래밍 언어에 있어서는 Bourne Shell과 호환이 된다. 상호 연결성, 명령어 라인 편집, 완료, 재실행을 지원하는데 매우 탁월한 성능을 나타낸다.
6
쉘의 종류 쉘의 의미 그 밖의 쉘 C Shell의 결함을 고치고 몇 개의 새로운 기능을 추가한 TC Shell 등이 등장함
많은 쉘들이 개발되고 선을 보이고 있지만, 일반적으로 Bash을 사용
7
쉘의 활용 및 기능 쉘의 확인과 변경 리눅스에서 지원하고 있는 쉘들은 /etc/shells 파일에 그 경로가 설정되어 있다. 리눅스 계정을 가지고 있는 사용자 정보는 /etc/passwd 파일에 모두 저장 되어 있다. 사용자 정보는 7개의 필드로 구성 되어 있으며, 마지막 필드에 사용자가 사용하는 쉘이 설정되어 있다. 잠시 사용하고자 하는 쉘을 변경하고 싶을 때는 사용하고자 하는 쉘을 프롬프트에서 실행 시키면 된다. 쉘의 기능 쉘은 키보드와 화면을 통해서 사용자와 대화하는 인터페이스 기능을 제공 강력한 프로그래밍 언어 기능을 지원 사용자의 작업 환경을 사용자의 요구사항에 맞추어 설정할 수 있는 기능 제공 개인이나 그룹의 스타일이 반영되는 환경을 조성할 수 있다.
8
쉘의 다양한 기능 쉘의 활용 및 기능 명령 완성 기능
입력할 파일명이나 디렉토리 또는 명령어의 길이가 너무 긴 경우 명령어의 일부만 입력하고 Tab 키를 누르게 되면, 나머지 입력되지 않은 부분이 완성되어 생성 된다. 만일 해당하는 명령어가 두개 이상인 경우에는 해당되는 명령어의 리스트를 모두 보여준다. ESC 키를 두 번 연속적으로 눌러도 같은 기능을 하게 된다. 방향키로 History 사용하기 로그인을 한 사용자가 지금까지 사용했던 명령어를 보려면, history라는 명령을 사용 위, 아래 방향키를 사용함으로써 사용했던 명령어를 찾아낸다. ~/.bash_history 파일에 저장되어 있으며, ~/.bashrc 파일의 HISTSIZE 변수로 설정할 수 있다.
9
쉘의 다양한 기능 쉘의 활용 및 기능 마우스를 사용한 텍스트 복사
멀티 콘솔은 X 윈도우를 사용하는 경우 여러 개의 터미널을 띄워 동시에 멀티 태스킹을 지원하는 것을 의미 하나의 터미널에서 다른 터미널로 복사하고자 할때 마우스로 해당 부분을 드래그하고 복사되기 원하는 위치로 가서 3버튼 마우스인 경우에는 가운데 버튼을 누르고, 2버튼 마우스인 경우에는 두 개 버튼을 동시에 눌러 복사한다. 와일드 카드의 지원 ? 또는 * 를 사용하는 와일드 카드를 지원한다. ? : 임의의 한 문자 의미 * : 문자 수와 상관 없이 임의의 문자를 의미
10
환경 설정 파일 쉘의 환경 설정 쉴 환경 설정 파일은 기본적으로 사용자의 홈 디렉토리 안에 위치하고 있다.
새로운 사용자를 등록하면 /etc/skel 디렉토리에 기본값으로 저장되어 있는 파일들을 사용자의 기본 홈 디렉토리로 복사하여 생성된다.
11
# echo $변수명 또는 printenv 변수명 # export [환경변수명] = [변수값]
쉘의 환경 설정 환경 변수 값 확인 하나씩 확인 현재 설정 된 변수 값을 모두 확인 환경 변수 값 설정 및 변경 # echo $변수명 또는 printenv 변수명 # printenv # export [환경변수명] = [변수값]
12
쉘 스크립트 쉘 스크립트의 기본 쉘 스크립트 : 컴파일 같은 작업이 필요 없이 텍스트 파일 안에 명령 프롬프트에서 실행이 가능한 명령들을 적고, 실행 권한을 주어 프로그램을 동작시키는 것 쉘 스크립트를 이용하여 쉘이 가진 능력을 충분하게 활용할 수 있으며, 일괄처리와 같은 기능을 부여 쉘 스크립팅 언어로 작성 된 스크립트 파일은 .sh 라는 확장자를 주어 구별한다. #!/bin/bash 은 해당 스크립트를 실행하기 위한 쉘의 경로를 지정 사용자 계정에 따라 이 파일을 실행할 수 있도록 실행 권한을 부여해 주고 ‘./파일명’ 과 같은 형태로 실행한다. #!/bin/bash echo Hello enion
13
# grep abc * 2> grep-errors.txt
쉘 스크립트 리다이렉션(Redirection) 쉘은 항상 기본적으로 표준입력, 표준출력, 표준에러 파일들을 열어 놓는다. 리다이렉션 : 파일, 명령어, 프로그램, 스크립트 등의 출력을 낚아채서 다른 파일, 명령어, 프로그램, 스크립트의 입력으로 보내는 것을 의미 표준 입력을 전환 : < 또는 << 표준 출력을 전환 : > 또는 >> 표준 출력을 파일로 보내기 표준 에러를 파일로 보내기 # ls –l > list_1.txt # grep abc * 2> grep-errors.txt
14
쉘 스크립트 변수 쉘에서 사용되는 변수의 종류는 다음과 같이 세가지로 나뉘게 된다. 환경 변수
사용자에 따른 쉘이 실행될 때 여러가지 초기 설정 작업이 동작하게 되고 그것에 대한 정보를 저장하고 있는 변수 특수 변수 쉘 프로그램에 인수로 전달될 때 사용되거나 현재 쉘의 프로세스 번호 등으로 사용 된다. 프로그램 변수 프로그래머가 다양하게 만들어 사용할 수 있음 bash 에서는 데이터 타입을 미리 정할 필요 없이, 숫자나 문자, 혹은 문자열을 지정할 수 있다.
15
조건문 쉘 스크립트 만약 ~ 라면 이라는 뜻을 가지고 있으며, 다양한 형식으로 표현할 수 있다.
if [expression] then [statement] if [expression] then [statement1] else [statement2] fi
16
If ~ then 쉘 스크립트 <if_then.sh의 내용> #!/bin/bash man=10 woman=20
if [ $man -lt $woman ] then echo woman fi
17
순환문 쉘 스크립트 사용자가 실행하고자 하는 구문을 원하는 횟수만큼 반복하고자 할 때 사용 for문
for 변수 in list1 list2 list3 do statements done
18
순환문 쉘 스크립트 while문 until문 while 조건문 do statements done until 조건문 do
19
function 함수명 { statements }
쉘 스크립트 함수의 사용과 디버깅 함수의 사용 논리적인 흐름과 재귀 표현 등을 위하여 코드를 묶어서 사용 함수란, 서브루틴으로 어떤 동작들이 구현된 코드 블록이고, 특정한 일을 수행하는 ‘블랙박스’와 같다. 반복적인 코드가 있다거나, 약간의 부분만 바뀌며 반복실행 되는 작업의 경우 함수를 사용하는 것이 효율적이다. function 함수명 { statements }
20
쉘 스크립트 함수의 사용과 디버깅 디버깅 디버깅이란 컴퓨터 프로그램이나 하드웨어 장치에서 잘못된 부분, 즉 버그를 찾아서 수정하거나 에러를 피해나가는 처리 과정을 의미한다. 디버깅 도구를 사용하면 각 개발 단계에서 잘못된 코딩부분을 쉽게 찾아낼 수 있으며, 몇몇 프로그램 개발 패키지에는 프로그램을 작성할 때 디버깅을 수행하는 기능이 포함되어 있다. 리눅스 스크립팅 프로그램에서 디버깅을 하려면 다음과 같은 형식으로 수정한다. 실행 과정의 정보를 하나씩 출력해 주어 디버그에 도움을 준다 #!/bin/bash -x
Similar presentations