UNIX Unbounded A Beginning Approach
description
Transcript of UNIX Unbounded A Beginning Approach
HANNAM HANNAM Univ.Univ.
UNIX UnboundedUNIX UnboundedA Beginning ApproachA Beginning Approach
이 성 현이 성 현Home : nimilx2.hannam.ac.krHome : nimilx2.hannam.ac.kr
E-mail : E-mail : [email protected] : +82-42-629-7559Tel : +82-42-629-7559
2
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
목차목차 유닉스 쉘
쉘 변수
그 밖의 메타 문자들
그 밖의 유닉스 명령어
구동 파일
ksh 와 bash
유닉스 프로세스 관리
요약
질의 및 응답
실습
3
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
유닉스 쉘유닉스 쉘 개요
■ 유닉스 쉘이란 ?▶ 사용자와 순수 유닉스 운영체제 사이를 연결하는 프로그램▶ 프로그램의 실행시 사용자는 쉘을 통하여 운영체제와 통신하게 되고 , 하드웨어 - 의존 기능들은
커널에서 관리▶ 쉘은 자체가 프로그램 , 즉 유틸리티 프로그램▶ 사용자가 시스템에 로그인할 때마다 메모리에 적재▶ 사용자가 입력한 각 명령어를 검사하고 해당 유닉스 프로그램에 요청한 작업을 수행
■ 유닉스 쉘의 종류▶ Bourne Shell▶ Korn Shell▶ C Shell
4
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
유닉스 쉘유닉스 쉘 쉘 시작하기
■ 쉘의 생명 주기▶ 사용자가 시스템에 성공적으로 로그인한 후에 시작되고 사용자가 로그아웃할 때까지 유지
■ 시스템의 각 사용자는 기본 쉘을 가지고 있음▶ 시스템의 패스워드 파일에 기술▶ etc/passwd▶ 사용자가 로그인 할 때 , 시스템은 시작할 쉘을 패스워드 파일에서 찾아 결정
쉘 프로그램 이름 프롬프트 기호 쉘 이름
/bin/sh $ Bourne Shell
/bin/ksh $ Koen Shell
/bin/bash $ Bourne Againg Shell
/bin/csh & C Shell
/bin/tcsh & TC Shell
쉘과 쉘 프로그램 이름
5
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
유닉스 쉘유닉스 쉘 쉘 시작하기
■ 사용자 쉘 확인▶ /etc/passwd 파일의 확인
6
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
유닉스 쉘유닉스 쉘 쉘 시작하기
■ 내장된 쉘 명령어▶ 쉘 명령어 해석기는 명령어와 같이 쉘에 의해 기계어로 번역된 특별한 내부 기능을 가지고 있음▶ 쉘의 한 부분으로 내부적으로 인식되고 수행됨▶ 내장 명령어의 대부분이 쉘에서 구현되고 특정 쉘에 유일한 형태로 존재
내장된 쉘 명령어
명령어내장되어 있는 쉘
Bourne 쉘 Korn 쉘 Bourne Againg 쉘
alias ksh bash
echo sh ksh bash
history ksh bash
kill sh ksh bash
set sh ksh bash
unalias ksh bash
unset sh ksh bash
7
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
유닉스 쉘유닉스 쉘 쉘 시작하기
■ 내장된 쉘 명령어 확인▶ $ man shell_builtins [Enter]
8
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
유닉스 쉘유닉스 쉘 쉘의 주요 기능 이해하기
■ 표준 유닉스 쉘은 200 개 이상의 유틸리티 프로그램을 소유▶ 쉘 자신의 예 : sh▶ 대부분 유닉스 시스템에서 가장 많이 사용하는 유틸리티 프로그램▶ 정교하게 작성된 프로그램으로 사용자와 유닉스 시스템간의 대화를 관리▶ 쉘은 실행 가능한 정규형 C/C++ 프로그램▶ /bin 디렉토리에 저장
■ 쉘의 기능▶ 명령어 실행
쉘의 주요 기능으로 프롬프트에서 입력한 모든 것을 기계어로 번역 명령어 분석 후 적합한 프로그램 수행
▶ 파일명 치환 파일명 치환이 명령어에 지정되면 쉘은 먼저 치환을 수행한 다음 프로그램을 시랳ㅇ
▶ 입 / 출력 재지정 프로그램 실행 전에 재지정이 구성 입 / 출력 재지정이 일어날 경우 쉘은 파일을 열고 , 각 프로그램의 표준 입력이나 표준
출력에 파일을 연결
9
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
유닉스 쉘유닉스 쉘 쉘의 주요 기능 이해하기
■ 쉘의 기능▶ 파이프
파이프 라인 (pipeline) 라고 불리며 간단한 프로그램을 사용하여 보다 복잡한 작업을 수행하도록 도와줌
▶ 환경 제어 사용자에게 적합한 환경을 제공 적절한 변수 구성을 통하여 홈 디렉토리 , 프롬프트 출력 , 작업 환경을 구성
▶ 백그라운드 프로세싱 현재 쉘에서 다른 작업을 수행하는 동안 독립적으로 백그라운드에서 프로그램을 실행 작업 수행 시간을 도와 주는 비대화식 프로그램
▶ 쉘 스크립트 쉘 스크립트 (shell script) 는 여러 가지 쉘 명령어들을 포함하고 있는 파일 파일의 이름은 나중에 저장된 프로그램을 실행하기 위해 사용되며 , 단일 명령어를
이용하여 지정된 명령어들을 수행하도록 함
10
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
유닉스 쉘유닉스 쉘 정보의 출력 : echo 명령어
■ Echo 명령어▶ 메시지를 출력하기 위한 명령어▶ 표준 출력 장치인 터미널에 전달 받은 인자를 출력▶ 인자가 없을 경우 , 빈 라인을 출력하고 기본적으로 출력의 마지막에 새로운 명령을 받을 수 있도록
프롬프트를 추가
옵션 기능
-n 새로운 라인 출력을 하지 못하게 함
-e 백슬래쉬 이스케이프 문자의 해석을 가능하게 함
echo 명령어 옵션
11
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
유닉스 쉘유닉스 쉘 정보의 출력 : echo 명령어
■ 이스케이프 문자▶ 문자열에 추가하여 메시지의 형식을 조절할 수 있는 문자▶ 문자 앞에 ‘ \’ 를 입력 , 원하는 출력을 제공하도록 쉘에 의해서 해석
이스케이프 문자 의미
\a 경고음 ( 벨 )
\b 백스페이스
\c 새로운 라인 없이 출력
\f 폼 피드 (form feed)
\n 캐리지 리턴 (carriage return) 과 라인 피드 (line feed, new line)
\r 라인 피드 없이 캐리지 리턴
\t 수평 탭
\v 수직 탭
이스케이프 문자
12
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
유닉스 쉘유닉스 쉘 메타문자의 특별한 의미 제거
■ 쉘 메타문자는 쉘에서 특별한 의미를 가짐■ 인용 (quoting) 또는 이스케이핑 (escaping)
▶ 메타문자의 특별한 의미를 제거하는 과정
■ 인용문자의 구성▶ 백 슬래쉬 \▶ 큰 따옴표 “▶ 작은 따옴표 ‘
이스케이프 문자 의미
“”$, 작은 따옴표 , 큰 따옴표를 제외한 모든 문자는 큰 따옴표 사이에 위치하면 특별한 의미가 없어짐
‘’작은 따옴표를 제외한 모든 문자는 작은 따옴표 사이에 위치하면 특별한 의미가 없어짐
\ 어떠한 문자라도 백 슬래쉬 뒤에서는 특별한 의키가 없어짐
인용문자
13
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
쉘 변수쉘 변수 쉘 변수
■ 쉘 프로그램▶ 명령어 해석기처럼 사용자 인터페이스와 작업을 관리▶ 명령 파일 , 파일 수정과 같이 요청한 작업을 수행하는데 적합한 쉘을 제공하고 , 사용자의 홈
디렉토리 , 터미널 유형 , 프롬프트 표시와 같이 확실한 정보와 정보에 대한 경로를 탐색하기 위해 필요
▶ 쉘 변수에 정보를 저장▶ 쉘 변수는 환경을 최적화하거나 관리하기 위한 특별한 값으로 구성된 아이템▶ 환경 변수 (environment variable) 와 지역 변수 (local variable) 의 두 가지 형태가 존재
■ 환경 변수▶ 표준 변수 (standard variable)▶ 시스템이 알고 있는 이름을 가지고 있다▶ 시스템이 요구하는 필수적인 요소에 대한 기록을 탐색하는데 사용▶ 관리자에 의해서 정의▶ ex : TERM=ansi
■ 지역 변수▶ 사용자 정의 변수▶ 사용자가 원하는 대로 정의하고 바꿀 수 있으며 , 삭제가 가능
14
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
쉘 변수쉘 변수 변수 출력과 제거 : set 과 unset 명령어
■ set 명령어▶ 현재 사용하고 있는 쉘이 어떤 변수들로 구성되어 있는지 알고 싶은 경우 사용하는 명령어
15
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
쉘 변수쉘 변수 변수 출력과 제거 : set 과 unset 명령어
■ unset 명령어▶ 원하지 않는 변수를 삭제▶ ex : unset ERRON [Enter]
16
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
쉘 변수쉘 변수 변수의 값 할당
■ 변수 값 할당▶ 사용자는 자신의 변수들을 생성할 수 있으며 , 표준 변수에 할당된 값을 수정할 수 있음▶ ex : age=32 [Enter]▶ ex : SYSTEM=UNIX [Enter]
쉘 변수의 값 출력
■ 쉘 변수 출력▶ 쉘 변수에 저장된 값에 접근하기 위해서는 반드시 변수의 이름 앞에 $ 표시를 사용▶ echo 명령어를 사용하여 쉘 변수에 지정된 값을 출력▶ ex : age=32 echo $age $32
17
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
쉘 변수쉘 변수 표준 쉘 변수에 대한 이해
■ 표준 쉘 변수▶ 표준 쉘 변수에 할당된 값들은 보통 시스템 관리자에 의해 구성▶ 사용자에 의해 변경된 변수의 값은 임시적인 형태를 지니고 있으며 , 현재의 세션에만 적용▶ 표준 쉘 변수의 경우 .profile 파일의 변수 값을 변경
■ 표준 쉘 변수의 이해▶ HOME
사용자 홈 디렉토리에 대한 완전한 경로명을 할당 cd 명령어의 경우 홈 디렉토리에 대한 경로명을 정의하기 위해 HOME 변수를 검사한
다음 , 사용자 홈 디렉토리에 대한 시스템을 변경▶ IFS
내부 필드 구분자 (Internal Field Separator) 변수는 명령 라인 요소의 구분자처럼 , 쉘에 의해 처리되는 문자의 목록으로 구성
▶ MAIL 수신한 메일의 파일명을 구성 메일을 수신할 경우 해당 파일에 저장 정기적으로 파일의 내용을 검사한 후에 메일 수신 여부를 알려줌
18
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
쉘 변수쉘 변수 표준 쉘 변수에 대한 이해
■ 표준 쉘 변수의 이해▶ MAILCHECK
MAIL 변수로 구성된 파일에서 , 메일의 수신에 대한 검사 주기를 설정▶ PATH
디렉토리 구조에서 쉘이 명령어의 위치를 탐색하기 위한 디렉토리명으로 구성 경로 문자열에 나와 있는 디렉토리는 콜론으로 구성
▶ PS1 프롬프트 문자열 1(Prompt String 1; PS1) 변수는 프롬프트 표시에 사용되는 문자열을
구성▶ PS2
프롬프트 문자열 2 변수는 쉘이 명령의 나머지 부분을 기다리고 있거나 , 명령 라인의 완선 전에 [Enter]키를 눌렀을 때 출력되는 프롬프트로 구성
▶ CDPATH 완젼한 경로면의 목록으로 구성되며 , PATH 와 유사 cd 명령어의 연산에 영향을 미침
▶ SHELL 사용자의 로그인 쉘에 대한 완전한 경로명을 구성
19
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
쉘 변수쉘 변수 표준 쉘 변수에 대한 이해
■ 표준 쉘 변수의 이해▶ TERM
사용자 터미널 유형을 구성▶ TZ
사용자의 타임 존을 구성
20
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
그 밖의 메타문자들그 밖의 메타문자들 명령어의 수행 : 단일 역인용부호 (‘) 사용법
■ 포함된 명령어를 함께 수행하거나 명령 라인의 동일한 위치에서 명령어의 출력에 삽입하라고 쉘에게 요청
■ 명령어 치환이라고 부름■ 형식 : ‘command’
명령어의 순차적 실행 : 세미콜론 (;) 이용
■ 세미콜론으로 분리된 일련의 명령을 입력■ 쉘이 순차적으로 수행
명령어의 그룹화 : 괄호 () 이용
■ () 안에 일련의 명령어를 입력하여 , 명령어를 그룹화■ 마치 하나의 명령어처럼 재지정 가능
21
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
그 밖의 메타문자들그 밖의 메타문자들 백그라운드 프로세싱 : 앰퍼샌드 (&) 이용
■ 다중 작업의 경우 이전 수행되는 명령의 수행이 종료되기를 기다리지 않도록 명령의 처리를 백그라운드로 돌림
22
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
그 밖의 메타문자들그 밖의 메타문자들 명령어 연결 : 파이프 연산자 (|) 이용
■ 쉘은 하나의 프로세스 표준 출력은 다른 프로세스 표준 입력에 사용할 수 있는 기능을 제공
■ 명령어 사이에 파이프를 사용함으로써 기능 사용■ 형식 : command | command
23
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
그 밖의 유닉스 명령어그 밖의 유닉스 명령어 시간 대기 : sleep 명령어
■ 지정한 시간동안 대기하도록 프로세스를 실행■ 지정한 시간만큼 수행한 프로세스가 대기 후 실행 결과를 출력
PID 출력 : ps 명령어
■ 시스템에 있는 실행 중인 프로세스의 상태를 알기 위해 사용■ 사용자의 실행 중인 프로세스에 대한 정보를 출력
▶ PID : 프로세스 ID▶ TTY : 프로세스를 조정하는 터미널 번호▶ TIME : 프로세스가 소비한 시간 (초 단위 )▶ COMMAND : 명령어의 이름
옵션 기능
-a 현재 사용자뿐만 아니라 , 수행 중인 모든 프로세스의 상태를 출력
-f 모든 명령 라인을 포함한 모든 목록의 정보를 출력
ps 명령어 옵션
24
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
그 밖의 유닉스 명령어그 밖의 유닉스 명령어 PID 출력 : ps 명령어
■ 옵션의 사용
25
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
그 밖의 유닉스 명령어그 밖의 유닉스 명령어 지속적인 실행 : nohup 명령어
■ 사용자가 로그아웃할 경우 백그라운드 프로세스가 종료■ nohup 명령어를 이용하여 백그라운드 프로세스가 종료 시그널에서 제외되록
함■ nohup 명령어를 로그아웃을 한 후에도 프로그램을 지속적으로 처리하고자
할 때 사용
프로그램 종료 : kill 명령어
■ 정상적으로 동작하지 않는 프로세스를 종료 시키기 위해 사용■ 사용자가 동작한 프로세스만 종료 가능
26
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
그 밖의 유닉스 명령어그 밖의 유닉스 명령어 프로그램 종료 : kill 명령어
■ 시그널 목록▶ kill 명령을 통하여 내릴 수 있는 신호 목록을 표시
27
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
그 밖의 유닉스 명령어그 밖의 유닉스 명령어 출력의 분배 : tee 명령어
■ 보통 파이프 연산자와 함께 사용되며 , 출력을 다른 장치에 전송할 수 있음■ Ex : ls –C | tee dir.list
28
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
그 밖의 유닉스 명령어그 밖의 유닉스 명령어 출력의 분배 : tee 명령어
■ tee 명령어 옵션
파일 탐색 : grep 명령어
■ 지정한 패턴을 가지는 파일이나 파일의 목록을 탐색하기 위해 사용■ grep 명령어에 사용하는 패턴을 정규식이라고 부름■ 사용 예
▶ grep UNIX myfile
옵션 기능
-a 존재하는 파일에 덮어쓰지 않고 , 파일에 결과를 덧붙인다
-i 인터럽트를 무시하여 , 인터럽트 신호에 응답하지 않는다
tee 명령어 옵션
29
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
그 밖의 유닉스 명령어그 밖의 유닉스 명령어 파일 탐색 : grep 명령어
■ 명령어 옵션
옵션 기능
-c 오직 찾은 줄의 수만 세어서 출력
-i 대소문자 구분 없이 검색
-l 결과를 출력할 때 지정한 패턴이 있는 파일의 이름만을 출력
-n 출력할 때 찾은 라인의 앞에 파일 내에서의 행번호를 붙인다
-v 지정한 패턴이 없는 행들만 출력
grep 명령어 옵션
30
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
그 밖의 유닉스 명령어그 밖의 유닉스 명령어 텍스트 파일 정렬 : sort 명령어
■ 파일에서 알파벳이나 상수로 구성된 내용을 정렬할 때 사용■ 실행 결과는 기본적인 값에 의해 자동으로 화면에 출력되며 , 인자 또는 재지정을
통해 새로운 파일로 생성할 수 있다■ 기본적으로 각 라인별로 정렬
31
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
그 밖의 유닉스 명령어그 밖의 유닉스 명령어 텍스트 파일 정렬 : sort 명령어
■ 명령어 옵션
옵션 기능
-b 필드를 비교하는 경우 , 공백으로 시작되는 필드를 무시
-d 사전식 순서에 따라 정렬 , 구두 문자와 제어문자는 무시
-f 대소문자 구별을 하지 않음
-n 산술적인 값에 따라 정렬
-o 출력을 표준 출력 장치 대신에 지정한 파일로 변경
-r 지정한 순서와 반대의 순서로 출력
sort 명령어 옵션
32
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
구동 파일구동 파일 시스템 프로파일
■ 시스템 프로파일 (System Profile)▶ /etc/profile 에 위치▶ 프로파일의 실행은 쉘이 수행하는 첫번째 과정▶ 로그인 메시지 , 시스템의 전반적인 환경 변수를 구성하는 명령을 포함▶ 시스템 관리자에 의해서 생성되고 관리
33
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
구동 파일구동 파일 사용자 프로파일
■ 사용자 프로파일 (User Profile)▶ 사용자가 로그인할 때마다 구동하는 파일▶ 사용자가 실행하는 쉘 환경 변수를 구성하는 명령을 포함
34
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
kshksh 와 와 bashbash 쉘 변수
■ ksh 와 bash 는 표준 쉘 (sh) 에서 사용한 많은 동일 변수를 사용■ 중요 변수
▶ ENV 환경 파일의 절대 경로명을 포함 ENV=$HOME/mine/my_env
▶ HISTSIZE History 목록 파일에서 유지하고자 하는 명령어를 지정하는 변수 기본크기는 128 HISTSIZE=100
▶ TMOUT 명령어를 입력하지 않을 경우 일정한 시간이 되기 전까지 시스템이 기다리는 시간 지정시간내에 명령어를 입력하지 않을 경우 자동 로그오프 TMOUT=60
▶ VISUAL 명령어를 편집할 때 사용하는 변수 VISUAL=vi
35
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
kshksh 와 와 bashbash 쉘 옵션
■ 옵션을 이름으로 설정하여 기능을 설정하거나 해제 가능■ set – 옵션명■ 중요 쉘 옵션
▶ noclobber 사용자의 파일이 변경되는 것을 예방 ex : set –o noclobber [Enter]
▶ ignoreeof 사용자가 실수로 [Ctrl-d] 를 눌러서 로그오프 하는 현상을 예방 ex : set –o ignoreeof [Enter]
36
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
kshksh 와 와 bashbash 명령어 라인 편집
■ 사용자가 명령어 라인을 편집하거나 , 편집하지 못하도록 한번에 한 라인만 편집할 수 있는 vi 편집기의 특수한 라인 버전을 사용하여 history 파일에 있는 명령어를 편집 가능
■ 명령어 라인 편집 옵션 설정하기▶ set 명령어를 이용하여 명령어 라인 편집 옵션을 설정하거나 관리▶ ex : set –o vi [Enter] EDITOR=/usr/bin/vi [Enter] VISUAL=/usr/bin/vi [Enter]
■ vi 스타일 명령어 라인 편집기 사용 방법▶ ksh 명령어 라인 편집기는 현재 명령어 라인과 history 파일을 편집할 수 있음▶ 초기 실행은 vi 입력 모드▶ 키 조작
[Enter] : 현재의 명령어 라인을 실행 [Esc] : 입력 모드에서 해당 키를 누르면 명령어 모드가 실행
37
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
kshksh 와 와 bashbash 명령어 라인 편집
옵션 기능
h 와 l 명령어 라인에서 커서를 한 문자 왼쪽과 오른쪽으로 이동
k 와 j History 목록에 있는 한 엔트리씩 위쪽과 아래쪽으로 이동
b 와 w 명령어 라인에서 커서를 왼쪽과 오른쪽으로 한 단어씩 이동
$ 커서를 라인의 마지막 문자로 이동
x 현재 문자를 삭제
xw 현재 단어를 삭제
I 와 i 텍스트를 삽입
A 와 a 텍스트를 추가
R 과 r 텍스트를 교체
편집기 명령어들
38
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
kshksh 와 와 bashbash 별칭 (alias) 명령어
■ 별칭 (alias)▶ 자주 사용하는 명령어 중 긴 이름을 가진 명령어를 짧게 줄인다거나 , 명령어의 이름을 바꾸어서
명령어를 기억하기 쉽도록 할 수 있는 기능 제공▶ ex : alias del=rm [Enter] alias rm= rm –r
■ 별칭의 해제▶ unalias 명령어를 사용
명령어들의 히스토리 : history 명령어
■ 히스토리 (history)▶ 쉘이 세션을 유지하는 동안 사용한 모든 명령어들의 목록을 저장하기 위한 기능을 제공▶ history 명령어는 history 목록에서 동작하는 유틸리티 중의 하나▶ ksh 에 대한 기본 히스토리 파일은 .sh_history, bash 에 대한 기본 히스토리 파일은 .bash_history라고 부름
▶ 히스토리 파일은 시스템에 의해 사용자의 홈 디렉토리에 생성▶ ex : history [Enter]
39
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
kshksh 와 와 bashbash 명령어 재실행 (ksh) : r(redo) 명령어
■ r 명령어를 통해 이전에 실행하였던 명령어들을 재실행 가능■ 지정한 번호를 통해 히스토리 파일에 잇는 명령어를 재실행
명령어 history 목록 : fc 명령어
■ 이전에 명령어 히스토리 목록에 저장된 명령어의 목록 , 편집 , 재실행을 제공
40
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
kshksh 와 와 bashbash 명령어 history 목록 : fc 명령어
■ fc 옵션▶ 이전 명령어에 대한 편집 , 재실행을 가능하게 하는 많은 옵션을 포함
■ fc 별칭 만들기▶ fc 명령어에 대한 별칭을 생성▶ ex : alias r=‘fc –e –’ [Enter] alias history=‘fc –l’ [Enter]
옵션 기능
-l 명령어 번호 순서로 명령어 목록을 보여줌
-n -l 로 명령어의 목록을 보여줄 때 명령어 번호를 보여주지 않음
-r -l 로 명령어의 목록을 역순으로 보여줌
-s 편집기를 실행하지 않고 명령어를 실행
grep 명령어 옵션
41
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
kshksh 와 와 bashbash 로그인과 구동
■ sh 와 마찬가지로 .profile 을 읽어 관련 정보를 출력■ .profile 에서 ksh 또는 bash 환경 파일들을 읽어 쉘 환경을 설정
42
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
kshksh 와 와 bashbash 프롬프트에 이벤트 번호 추가하기
■ 이벤트 번호를 통하여 쉘 프롬프트를 변경할 수 있음▶ ex : PS1=“!$” [Enter] PS1=“[!]$” [Enter]
프롬프트 변수 (bash) 설정하기
■ 특수 문자 코드를 이용하여 쉘 프롬프트를 변경▶ ex : PS1=“[\!]$” [Enter]
문자 의미
\! 현재 명령어의 history 번호를 출력
\$사용자 디렉토리가 루트가 아니면 프롬프트에 $ 를 출력 , 루트면 #를 출력
\d 현재 날짜를 출력
\s 실행하고 있는 쉘의 이름을 출력
\t 현재 시간을 출력
grep 명령어 옵션
43
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
UNIX UNIX 프로세스 관리프로세스 관리 프로세스 (Process)
■ 실행중인 프로그램■ 유닉스 측면에서 프로그램이 실행을 위해 메모리에 적재된 상태■ 프로세스 테이블
▶ 프로세스의 상태 및 정보를 유지 관리하기 위한 목적의 테이블▶ 포함 정보
프로세스 번호 프로세스 상태 준비 / 대기 대기를 위한 프로세스의 이벤트 번호 시스템 데이터 영역 주소
■ 프로세스의 생성▶ fork 시스템 루틴을 호출함으로써 생성▶ 실행중인 프로세스가 fork 를 호출할 경우 동일한 프로세스 사본을 생성▶ 부모 프로세스 : fork 루틴을 호출한 프로세스▶ 자식 프로세스 : 복사한 프로세스▶ 부모와 자식 프로세스가 다른 PID 를 가짐
44
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
UNIX UNIX 프로세스 관리프로세스 관리 프로세스 생성 및 관리 과정
■ 부모 프로세스가 fork 를 호출하고 프로세스 실행■ fork 가 프로세스를 복제하고 부모 프로세스에게 제어를 반환■ 부로 프로세스는 자식의 PID 를 넘겨 받고 , 자식 프로세스는 복귀 코드를 획득■ 부모 프로세스가 자식의 PID 를 수신하면 , wait 시스템 호출을 생성하고 , sleep
상태에 들어가 자식 프로세스가 종료될 때까지 대기■ 자식 프로세스가 제어를 얻은 다음 작업 수행■ 자식 프로세스가 복귀 코드를 점검 , 0 인 경우 exec 시스템 호출■ 자식 프로세스가 실행을 마칠 경우 exit 시스템 호출을 생성하고 , 자식 프로세스가
종료됨
■ 프로세스 수행의 심화 과정▶ 교재 317, 318 그림 참조
45
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
요약요약 유닉스에서의 쉘의 역활
쉘 변수의 정의와 기능
유닉스 명령어의 활용
쉘 구동 파일에 대한 이해
ksh 와 bash, sh 의 공통점 및 차이점
ksh 와 bash 의 활용
유닉스에서의 프로세스 관리 절차
46
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
질의 및 응답질의 및 응답
47
Network Lab.Network Lab.
HANNAM HANNAM Univ.Univ.
유닉스 이론 및 실습
실습실습