제6장 쉘 창병모 2012.09.

Slides:



Advertisements
Similar presentations
Apr. 25, 2013 Laboratory of Systems Medicine BASIC LINUX COMMANDS.
Advertisements

3. 유닉스 셸 (Unix Shell) 실습 컴퓨터 : fedora.incheon.ac.kr ( )
제6장 쉘.
컴퓨터와 인터넷.
강 명 수 쉘 관리 강 명 수
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
1장 리눅스의 기본 개념과 프로그램 작성 리눅스의 기본 개념 시스템에 접속하기 리눅스의 프로그래밍 환경
Power Java 제3장 이클립스 사용하기.
Chapter 10 The Bourne Shell
Windows Server 장. Windows Server 2008 개요.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
8장 프로세스.
제3장 유닉스 쉘.
Unix & Shell 사용법 1 번째주 Dept. of Computer Science & Engineering
[beginning] Linux & vi editor
UNIX Unbounded A Beginning Approach
Ubiquitous Computing Practice - Part I (Installation) -
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
제6장 C 쉘(C Shell) 숙명여대 창병모
12장 파이프.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Root Filesystem Porting
Chapter 06 프로세스와 예약작업 관리 Solaris 1. 프로세스 관리
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Root Filesystem Porting
Linux Master 김희승 임승한 OneScore 임승한.
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
Cross Compiler 설치.
뇌를 자극하는 Windows Server 장. Windows Server 2008 개요.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
제4장 유닉스 쉘 숙명여대 창병모 2011 가을.
Linux/UNIX Programming
솔라리스10 3장. 솔라리스 패키지 관리.
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
24장. 파일 입출력.
Linux/UNIX Programming
UNIX Unbounded A Beginning Approach
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
ACL(Access Control List)
Linux/UNIX Programming
제1장 Unix란 무엇인가?.
Linux/UNIX Programming
Linux/UNIX Programming
Linux/UNIX Programming
Kernel, Ramdisk, JFFS2 Porting
Linux/UNIX Programming
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
OpenCV 설정 2.21 만든이 딩딩.
DK-128 개발환경 설정 아이티즌 기술연구소
수동 설치시는 설치 방법 1. 두번에 설치 CD 속에 fscommand 폴더 밑에 Osstem 이라는 폴더를
시스템 인터페이스 Lab#5 쉡 실습.
Linux/UNIX Programming
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
Linux 9.X 기초에서 활용까지 Chapter 06 VI 편집기.
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
Linux 기본 사용법.
Chapter 10 데이터 검색1.
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
Homework #3 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
함수, 모듈.
TVM ver 최종보고서
4. 셸을 이용한 명령어 입력. Unix 시스템 쉘 간단한 셸 명령 명령 매개변수(Command arguments)
제4장 유닉스 쉘 숙명여대 창병모
제8장 C 쉘 창병모
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
Docker Study 6~7.
운영체제보안 SELinux 실습 박민재
Linux/UNIX Programming
SPL-Duino 블록 편집기 이용하기 전류센서 블록 만들기 SPL-Duino 블록 편집기를 실행합니다.
Presentation transcript:

제6장 쉘 창병모 2012.09

6.1 쉘 소개

쉘(Shell)이란 무엇인가? 쉘의 역할 쉘은 사용자와 운영체제 사이에 창구 역할을 하는 소프트웨어 명령어 처리기(command processor) 사용자로부터 명령어를 입력받아 이를 처리한다

쉘의 종류 유닉스/리눅스에서 사용 가능한 쉘의 종류 쉘의 종류 쉘 실행 파일 본 쉘 /bin/sh 콘 쉘 /bin/ksh C 쉘 /bin/csh Bash /bin/bash tcsh /bin/tcsh

쉘의 종류 본 쉘(Bourne shell) 콘 쉘(Korn shell) Bash(Bourne again shell) 벨연구소의 스티븐 본(Stephen Bourne)에 의해 개발됨 유닉스에서 기본 쉘로 사용됨 콘 쉘(Korn shell) 1980년대에는 역시 벨연구소에서 본 쉘을 확장해서 만듬. Bash(Bourne again shell) GNU에서 본 쉘을 확장하여 개발한 쉘 리눅스 및 맥 OS X에서 기본 쉘로 사용되면서 널리 보급됨 Bash 명령어의 구문은 본 쉘 명령어 구문을 확장함 C 쉘(C shell) 버클리대학의 빌 조이(Bill Joy) 쉘의 핵심 기능 위에 C 언어의 특징을 많이 포함함 BSD 계열의 유닉스에서 많이 사용됨 최근에 이를 개선한 tcsh이 개발됨어 되어 사용됨

로그인 쉘(login shell) 로그인 하면 자동으로 실행되는 쉘 보통 시스템관리자가 계정을 만들 때 로그인 쉘 지정 /etc/passwd ... chang:x:109:101:Byeong-Mo Chang:/user/faculty/chang:/bin/csh 로그인 쉘 변경(리눅스) $ chsh Changing login shell for chang Old shell : /bin/sh New shell : /bin/csh $ logout login : chang passwd: %

6.2 쉘의 기본 기능

쉘의 기본 기능 명령어 처리 시작 파일 스크립트 사용자가 입력한 명령을 해석하고 적절한 프로그램을 실행 로그인할 때 실행되어 사용자별로 맞춤형 사용 환경 설정 스크립트 쉘 자체 내의 프로그래밍 기능

쉘의 실행 절차

시작 파일(start-up file) 쉘마다 시작될 때 자동으로 실 행되는 고유의 시작 파일 export 명령어 주로 사용자 환경을 설정하는 역할을 하며 환경설정을 위해서 환경변수에 적절한 값을 설정한다. $ 환경변수명=문자열 $ TERM=xterm $ echo $TERM xterm export 명령어 $ export TERM 환경 변수 확인 $ env HOSTNAME=CS2 HOST=CS2 TERM=xterm SHELL=/bin/sh GROUP=faculty USER=chang ...

시작 파일(start-up file) 본 쉘 bash C 쉘 /etc/profile ~/.profile /etc/bashrc ~/.bash_profile ~/.bashrc C 쉘 /etc/.login ~/.login ~/.cshrc

시작 파일 예 .profile 시작 파일 바로 적용 PATH=$PATH:/usr/local/bin:/etc TERM=vt100 export PATH TERM stty erase ^ 시작 파일 바로 적용 $ . .profile

6.3 쉘 명령어 처리

쉘 명령어 종류 내장 명령어 유틸리티 프로그램 쉘 내에 내장되어 있는 명령어 $ echo -n 명령줄인수* $ cd 디렉터리 명령어를 위한 실행 파일이 별도로 존재하는 명령어 $ ls /bin/ls 환경변수 PATH PATH = .:/bin:/usr/bin:/usr/local/bin:/etc

입출력 재지정 및 파이프 출력 재지정 출력 추가 입력 재지정 문서 내 입력 파이프 $ 명령어 > 파일 $ 명령어 >> 파일 입력 재지정 $ 명령어 < 파일 문서 내 입력 $ 명령어 << 단어 ... 단어 파이프 $ 명령어1 | 명령어2

복합 명령어 명령어 열(command sequence) 명령어 그룹(command group) $ 명령어1; … ; 명령어n $ date; who; pwd 명령어 그룹(command group) $ (명령어1; … ; 명령어n) $ date; who; pwd > out1.txt $ (date; who; pwd) > out2.txt

조건 명령어 열(conditional command sequence) $ 명령어1 && 명령어2 $ gcc myprog.c && a.out $ 명령어1 || 명령어2 $ gcc myprog.c || echo 컴파일 실패

파일 이름 대치 대표문자를 이용한 파일 이름 대치 대표문자 대표문자를 이용하여 한 번에 여러 파일들을 나타냄 명령어 실행 전에 대표문자가 나타내는 파일 이름들로 먼저 대 치하고 실행 $ gcc *.c $ gcc a.c b.c c.c 대표문자 * 빈 스트링을 포함하여 임의의 스트링를 나타냄 ? 임의의 한 문자를 나타냄 [..] 대괄호 사이의 문자 중 하나를 나타내며 부분범위 사용 가능 $ ls *.txt $ ls [ac]*

명령어 대치(command substitution) 명령어를 실행할 때 다른 명령어의 실행 결과를 이용 역따옴표(`)로 에워싼 다른 명령어 부분은 그 명령어의 실행 결 과로 대치된 후에 실행 $ echo 현재 시간은 `date` $ echo 현재 디렉터리 내의 파일의 개수 : `ls | wc -w` 현재 디렉터리 내의 파일의 개수 : 32

따옴표 사용 따옴표를 이용하여 대치 기능을 제한 $ echo 3 * 4 = 12 3 cat.csh count.csh grade.csh invite.csh menu.csh test.sh = 12 $ echo "3 * 4 = 12" 3 * 4 = 12 $ echo '3 * 4 = 12' $ name=나가수 $ echo '내 이름은 $name 현재 시간은 `date`' 내 이름은 $name 현재 시간은 `date` $ echo "내 이름은 $name 현재 시간은 `date`" 내 이름은 나가수 현재 시간은 2011년 12월 8일 목요일 오후 03시 43분 12초

따옴표 사용 정리 1. 작은따옴표(')는 파일이름 대치, 변수 대치, 명령어 대치를 모 두 제한한다. 2. 큰따옴표(")는 파일이름 대치만 제한한다. 3. 따옴표가 중첩되면 밖에 따옴표가 효력을 갖는다.

6.4 쉘 스크립트

쉘 스크립트 쉘 스크립트는? 쉘 스크립트 종류 명령어 및 유틸리티들을 적절히 사용하여 작성한 프로그램 1. 첫 번째 줄에 사용할 쉘을 #!경로명 형태로 지정 #!/bin/csh #!/bin/ksh #!/bin/bash #!/bin/sh 2. 단지 첫 번째 줄이 #으로 시작되면 C 쉘 스크립트로 간주 3. 그 외는 본 쉘 스크립트로 간주한다.

쉘 스크립트 작성 및 실행 에디터를 사용하여 스크립트 파일을 작성한다. chmod를 이용하여 실행 모드로 변경한다. test.sh #!/bin/sh echo 현재 시간: date echo 현재 사용자: who echo 시스템 현재 상황: uptime chmod를 이용하여 실행 모드로 변경한다. $ chmod +x test.sh   스크립트 이름을 타입핑하여 실행한다. $ test.sh  

6.5 작업 제어

프로세스 상태: ps ps [-옵션] 명령어 $ ps -aux (BSD 유닉스) $ ps -ef (시스템 V) 현재 존재하는 프로세스들의 실행 상태를 요약해서 출력 $ ps PID TTY TIME CMD 25435 pts/3 00:00:00 csh 25461 pts/3 00:00:00 ps $ ps -aux (BSD 유닉스) - a: 모든 사용자의 프로세스를 출력 - u: 프로세스에 대한 좀 더 자세한 정보를 출력 - x: 더 이상 제어 터미널을 갖지 않은 프로세스들도 함께 출력 $ ps -ef (시스템 V) - e: 모든 사용자 프로세스 정보를 출력 - f: 프로세스에 대한 좀 더 자세한 정보를 출력

sleep sleep 명령어 지정된 시간만큼 실행을 중지한다. $ sleep 초 $ (echo 시작; sleep 5; echo 끝)

kill kill 명령어 현재 실행중인 프로세스를 강제로 종료 $ kill [-시그널] 프로세스번호 $ (echo 시작; sleep 5; echo 끝) & 1230 $ kill 1230

wait 명령어 $ wait [프로세스번호] 해당 프로세스 번호를 갖는 자 식 프로세스가 종료될 때까지 기다린다. 프로세스 번호를 지정하지 않 으면 모든 자식 프로세스를 기 다린다. $ (sleep 10; echo 1번 끝) & 1231 $ echo 2번 끝; wait 1231; echo 3번 끝 2번 끝 1번 끝 3번 끝 $ (sleep 10; echo 1번 끝) & $ (sleep 10; echo 2번 끝) & $ echo 3번 끝; wait; echo 4번 끝 3번 끝 1번 끝 2번 끝 4번 끝

기타 명령어 exit nohup nice id batch 쉘을 종료하고 종료값(exit code)을 부모 프로세스에 전달 로그아웃 이후에도 프로세스를 계속 실행하고자 하는 경우 $ nohup 명령어 [인수] & 명령어의 결과는 시스템 내의 nohup.out 파일에 기록 nice 프로세스의 우선순위를 조정하는 명령어 id 사용자 자신의 사용자 ID와 그룹 ID를 출력하는 명령어 batch 여러 개의 명령어를 순차적으로 수행시키는 명령어

6.6 내장 명령어

shift shit 명령어 shift.sh $ shift.sh a b c d 명령줄 인수를 하나씩 왼쪽으로 이동한다. #!/bin/sh echo 첫 번째 인수 $1, 모든 인수 $* shift $ shift.sh a b c d 첫 번째 인수 a, 모든 인수 a b c d 첫 번째 인수 b, 모든 인수 b c d

eval, exec eval exec eval은 명령어의 출력을 쉘 명령어로 실행시킨다.. $ eval `echo x=5` $ exec date

핵심 개념 쉘은 사용자와 운영체제 사이에 창구 역할을 하는 소프트웨어로 사용자로부터 명령어를 입력받아 이를 처리하는 명령어 처리기 역 할을 한다. 입력 재지정은 명령어의 표준입력을 키보드 대신에 파일에서 받게 한다. 출력 재지정은 명령어의 표준출력을 모니터 대신에 파일에 하게 한다. 유닉스 명령어 및 유틸리티들을 적절히 사용하여 프로그램을 작성 할 수 있는데 이러한 프로그램을 쉘 스크립트라고 한다. 쉘에서 사용할 수 있는 명령어는 쉘 내에 내장되어 있는 내장 명 령어와 명령어를 위한 실행 파일이 별도로 존재하는 유틸리티 프 로그램이다.