쉘(Shell).

Slides:



Advertisements
Similar presentations
Python Ch.06 RaspberryPi Sejin Oh. Raspberry Pi Python  IDLE(Integrated Development Environment)  라즈베리 파이 배포본들은 일반적으로 파이썬과 파이썬 3 의 IDLE 파 이썬 개발 도구를.
Advertisements

프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Power Java 제3장 이클립스 사용하기.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
블록 속성 정의와 추출 속성 정의 블록을 만들 객체들에 문자를 사용하여 속성을 설명하는 꼬리표에 해당하는 태그를 정의하는
Outlook Express 메일 백업 및 복원가이드
Linux/UNIX Programming
Unix & Shell 사용법 1 번째주 Dept. of Computer Science & Engineering
Linux 9.X 기초에서 활용까지 Chapter 09 쉘(Shell).
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Root Filesystem Porting
1. C++ 시작하기.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Root Filesystem Porting
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
Cross Compiler 설치.
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
CHAP 12. 리소스와 보안.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
프로그래밍 개요
27장. 모듈화 프로그래밍.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
UNIX Unbounded A Beginning Approach
Adobe 제품 다운로드 및 설치 방법 안내 Adobe Creative Cloud Adobe License 권한을 받으신 분
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
Linux/UNIX Programming
8장 쿠키와 세션 한빛미디어(주).
1차시: 낮과 밤이 생기는 원리 지구과학
자바 5.0 프로그래밍.
1. 스크립트 작성 마법사 2. NSIS 스크립트 컴파일
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
PMIS 서버 설정 환경설정 작성자 : 배경환.
빌드 성공.
Fucntion 요약.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
OpenCV 설정 2.21 만든이 딩딩.
시스템 인터페이스 Lab#5 쉡 실습.
Linux/UNIX Programming
Linux 9.X 기초에서 활용까지 Chapter 06 VI 편집기.
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
Linux 기본 사용법.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
Homework #3 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
4. 셸을 이용한 명령어 입력. Unix 시스템 쉘 간단한 셸 명령 명령 매개변수(Command arguments)
3.2 분기 명령어.
슬라이드 쇼의 설정 슬라이드 쇼의 실행 파일과 폴더의 관리 글꼴을 포함해서 저장 웹 페이지로 게시 압축 파일
과제 4: Thread (5월 9일까지) 4장 연습문제 풀이
Installation Guide.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
 6장. SQL 쿼리.
7 생성자 함수.
6 객체.
시스템 해킹과 보안 permission과 SetUID.
SPL-Duino 블록 편집기 이용하기 전류센서 블록 만들기 SPL-Duino 블록 편집기를 실행합니다.
BoardGame 보드게임 따라가기.
1. 실습 시간에 수행한 avd 생성 및 실행, adb shell 접속 및 명령어 수행 결과를 제출한다.
Presentation transcript:

쉘(Shell)

Content 쉘의 의미와 활용 쉘 스크립트에 관하여 알아보자

쉘의 의미 쉘의 정의 쉘은 조개껍데기라는 뜻을 가지고 있으며, 운영체제를 둘러싸고 입력 받는 명령어를 실행시키는 명령어 해석기이며, 프로그래밍 언어로서의 특성을 가지고 있다. 최초의 쉘은 UNIX 연구 개발 초기 UNIX 파일시스템 설계의 일부분으로 Ken Thompson에 의해 만들어졌으며, AT&T에서 Steven Bourne에 의해 Bourne Shell이 만들어졌다. 리눅스에서의 기본적으로 사용하는 쉘은 Bash Shell로 Bourne Again Shell이라는 뜻을 가지고 있다. 쉘과 커널과의 관계

쉘의 의미 쉘의 종류 sh(Bourne Shell) UNIX 시스템의 표준 구성 요소로서 가장 오래되고, 강력한 명령 프로그래밍 언어 기능을 가지고 있음 Bell 연구소의 Steven Bourne의 이름을 따라 명명되었다. Bourne의 커맨드명은 sh 이다. 상호 대화식 방식을 취하고 있지 않으며, .profile 파일로 환경을 초기화 한다. csh(C Shell) Bourne Shell 이외에 많이 사용되고 있는 쉘이며, 프로그램명은 csh 이다. C Shell은 원래 버클리 버전 UNIX의 쉘로 개발 된 것으로 Bourne Shell과 매우 유사하다. 커맨드 구조에서 C 언어와 유사하고, 몇가지 프로그램 개발에 편리한 기능도 내장하고 있다. 상호 대화식 방식으로 구성되어 있으며, .cshrc 파일로 환경을 초기화 한다.

쉘의 의미 쉘의 종류 ksh(Korn Shell) AT&T의 David Korn에 의해 개발되었으며, 비대화식 Bourne Shell에 C Shell의 대화식 환경을 접목시켜 UNIX 시스템에서 표준 쉘로 공급 Bourne Shell과 완전히 호환성이 있으며, C의 혈통을 잇고 있다. .kshrc 파일로 환경을 초기화 할 수 있다. Bash(Bourne Again Shell) Brian Fox 외 몇몇 사람에 의해 1989년에 개발되었으며, FSF에서 내어 놓은 일군의 GNU이다. Bash의 최종 목표는 IEEE POSIX Shell과 도구 명세에 호환되도록 하는 것이다. Korn Shell과 C Shell의 유용한 특징들을 통합하고 있으며, 쉘 프로그래밍 언어에 있어서는 Bourne Shell과 호환이 된다. 상호 연결성, 명령어 라인 편집, 완료, 재실행을 지원하는데 매우 탁월한 성능을 나타낸다.

쉘의 종류 쉘의 의미 그 밖의 쉘 C Shell의 결함을 고치고 몇 개의 새로운 기능을 추가한 TC Shell 등이 등장함 많은 쉘들이 개발되고 선을 보이고 있지만, 일반적으로 Bash을 사용

쉘의 활용 및 기능 쉘의 확인과 변경 리눅스에서 지원하고 있는 쉘들은 /etc/shells 파일에 그 경로가 설정되어 있다. 리눅스 계정을 가지고 있는 사용자 정보는 /etc/passwd 파일에 모두 저장 되어 있다. 사용자 정보는 7개의 필드로 구성 되어 있으며, 마지막 필드에 사용자가 사용하는 쉘이 설정되어 있다. 잠시 사용하고자 하는 쉘을 변경하고 싶을 때는 사용하고자 하는 쉘을 프롬프트에서 실행 시키면 된다. 쉘의 기능 쉘은 키보드와 화면을 통해서 사용자와 대화하는 인터페이스 기능을 제공 강력한 프로그래밍 언어 기능을 지원 사용자의 작업 환경을 사용자의 요구사항에 맞추어 설정할 수 있는 기능 제공 개인이나 그룹의 스타일이 반영되는 환경을 조성할 수 있다.

쉘의 다양한 기능 쉘의 활용 및 기능 명령 완성 기능 입력할 파일명이나 디렉토리 또는 명령어의 길이가 너무 긴 경우 명령어의 일부만 입력하고 Tab 키를 누르게 되면, 나머지 입력되지 않은 부분이 완성되어 생성 된다. 만일 해당하는 명령어가 두개 이상인 경우에는 해당되는 명령어의 리스트를 모두 보여준다. ESC 키를 두 번 연속적으로 눌러도 같은 기능을 하게 된다. 방향키로 History 사용하기 로그인을 한 사용자가 지금까지 사용했던 명령어를 보려면, history라는 명령을 사용 위, 아래 방향키를 사용함으로써 사용했던 명령어를 찾아낸다. ~/.bash_history 파일에 저장되어 있으며, ~/.bashrc 파일의 HISTSIZE 변수로 설정할 수 있다.

쉘의 다양한 기능 쉘의 활용 및 기능 마우스를 사용한 텍스트 복사 멀티 콘솔은 X 윈도우를 사용하는 경우 여러 개의 터미널을 띄워 동시에 멀티 태스킹을 지원하는 것을 의미 하나의 터미널에서 다른 터미널로 복사하고자 할때 마우스로 해당 부분을 드래그하고 복사되기 원하는 위치로 가서 3버튼 마우스인 경우에는 가운데 버튼을 누르고, 2버튼 마우스인 경우에는 두 개 버튼을 동시에 눌러 복사한다. 와일드 카드의 지원 ? 또는 * 를 사용하는 와일드 카드를 지원한다. ? : 임의의 한 문자 의미 * : 문자 수와 상관 없이 임의의 문자를 의미

환경 설정 파일 쉘의 환경 설정 쉴 환경 설정 파일은 기본적으로 사용자의 홈 디렉토리 안에 위치하고 있다. 새로운 사용자를 등록하면 /etc/skel 디렉토리에 기본값으로 저장되어 있는 파일들을 사용자의 기본 홈 디렉토리로 복사하여 생성된다.

# echo $변수명 또는 printenv 변수명 # export [환경변수명] = [변수값] 쉘의 환경 설정 환경 변수 값 확인 하나씩 확인 현재 설정 된 변수 값을 모두 확인 환경 변수 값 설정 및 변경 # echo $변수명 또는 printenv 변수명 # printenv # export [환경변수명] = [변수값]

쉘 스크립트 쉘 스크립트의 기본 쉘 스크립트 : 컴파일 같은 작업이 필요 없이 텍스트 파일 안에 명령 프롬프트에서 실행이 가능한 명령들을 적고, 실행 권한을 주어 프로그램을 동작시키는 것 쉘 스크립트를 이용하여 쉘이 가진 능력을 충분하게 활용할 수 있으며, 일괄처리와 같은 기능을 부여 쉘 스크립팅 언어로 작성 된 스크립트 파일은 .sh 라는 확장자를 주어 구별한다. #!/bin/bash 은 해당 스크립트를 실행하기 위한 쉘의 경로를 지정 사용자 계정에 따라 이 파일을 실행할 수 있도록 실행 권한을 부여해 주고 ‘./파일명’ 과 같은 형태로 실행한다. #!/bin/bash echo Hello enion

# grep abc * 2> grep-errors.txt 쉘 스크립트 리다이렉션(Redirection) 쉘은 항상 기본적으로 표준입력, 표준출력, 표준에러 파일들을 열어 놓는다. 리다이렉션 : 파일, 명령어, 프로그램, 스크립트 등의 출력을 낚아채서 다른 파일, 명령어, 프로그램, 스크립트의 입력으로 보내는 것을 의미 표준 입력을 전환 : < 또는 << 표준 출력을 전환 : > 또는 >> 표준 출력을 파일로 보내기 표준 에러를 파일로 보내기 # ls –l > list_1.txt # grep abc * 2> grep-errors.txt

쉘 스크립트 변수 쉘에서 사용되는 변수의 종류는 다음과 같이 세가지로 나뉘게 된다. 환경 변수 사용자에 따른 쉘이 실행될 때 여러가지 초기 설정 작업이 동작하게 되고 그것에 대한 정보를 저장하고 있는 변수 특수 변수 쉘 프로그램에 인수로 전달될 때 사용되거나 현재 쉘의 프로세스 번호 등으로 사용 된다. 프로그램 변수 프로그래머가 다양하게 만들어 사용할 수 있음 bash 에서는 데이터 타입을 미리 정할 필요 없이, 숫자나 문자, 혹은 문자열을 지정할 수 있다.

조건문 쉘 스크립트 만약 ~ 라면 이라는 뜻을 가지고 있으며, 다양한 형식으로 표현할 수 있다. if [expression] then [statement] if [expression] then [statement1] else [statement2] fi

If ~ then 쉘 스크립트 <if_then.sh의 내용> #!/bin/bash man=10 woman=20 if [ $man -lt $woman ] then echo woman fi

순환문 쉘 스크립트 사용자가 실행하고자 하는 구문을 원하는 횟수만큼 반복하고자 할 때 사용 for문 for 변수 in list1 list2 list3 do statements done

순환문 쉘 스크립트 while문 until문 while 조건문 do statements done until 조건문 do

function 함수명 { statements } 쉘 스크립트 함수의 사용과 디버깅 함수의 사용 논리적인 흐름과 재귀 표현 등을 위하여 코드를 묶어서 사용 함수란, 서브루틴으로 어떤 동작들이 구현된 코드 블록이고, 특정한 일을 수행하는 ‘블랙박스’와 같다. 반복적인 코드가 있다거나, 약간의 부분만 바뀌며 반복실행 되는 작업의 경우 함수를 사용하는 것이 효율적이다. function 함수명 { statements }

쉘 스크립트 함수의 사용과 디버깅 디버깅 디버깅이란 컴퓨터 프로그램이나 하드웨어 장치에서 잘못된 부분, 즉 버그를 찾아서 수정하거나 에러를 피해나가는 처리 과정을 의미한다. 디버깅 도구를 사용하면 각 개발 단계에서 잘못된 코딩부분을 쉽게 찾아낼 수 있으며, 몇몇 프로그램 개발 패키지에는 프로그램을 작성할 때 디버깅을 수행하는 기능이 포함되어 있다. 리눅스 스크립팅 프로그램에서 디버깅을 하려면 다음과 같은 형식으로 수정한다. 실행 과정의 정보를 하나씩 출력해 주어 디버그에 도움을 준다 #!/bin/bash -x

예제 1 [#] vi hello.sh #!/bin/bash echo Hello World

예제 2 [#] vi str.sh #!/bin/bash STR="Have a nice day!!" echo $STR

예제 3 [#] vi if.sh #!/bin/bash if [ "$1" = ok ]; then echo "good~!!" else echo "bad~!!" fi

예제 4 [#] vi ifelif.sh #!/bin/bash a=0 echo -n "Input : " read a if [ $a -ge 90 ]; then echo A elif [ $a -ge 80 ]; then echo B elif [ $a -ge 70 ]; then echo C elif [ $a -ge 60 ]; then echo D else echo F fi echo Thank you! bye~!

예제 5 [#] vi case.sh #!/bin/bash case "$1" in 한국) echo "서울" ;; 미국) 중국) echo "북경" 일본) echo "도쿄" *) echo "국명을 입력하세요." esac

예제 6 [#] vi for.sh #!/bin/bash for k in L I N U X do echo $k done

예제 7 [#] vi while.sh #!/bin/bash a=1 while [ "$a" != "0" ] do echo -n "input : " read a if [ "$a" != "0" ]; then for k in 1 2 3 4 5 6 7 8 9 echo " $a * $k = `expr $a \* $k`" done fi echo "Exit"

예제 8 [#] vi file.sh #!/bin/bash if [ -f /home/$1/shell_script/.plan ]; then cat /home/$1/shell_script/.plan else echo "$1님은 .plan 파일을 작성하지 않았습니다." fi

예제 9 [#] vi userdel.sh #!/bin/bash i=1 uid=2000 while [ $i -le 10 ] do let uid+=1 useradd -u $uid -g users user$i passwd -d user$i let i=i+1 done echo Complete!!

예제 10 [#] vi userdel.sh #!/bin/bash i=1 while [ $i -le 10 ] do userdel -r user$i let i=i+1 done echo Complete!!