200 likes | 343 Views
Shell & VI editor. 2007. 3. 23 ( 금 ) 김 희 준 icemichy@hufs.ac.kr. Shell. 정의 / 역할 종류 주요 shell 들의 특징 기능 환경설정. Shell 의 정의와 역할. 정의 User 가 입력한 명령어를 해석하고 , 이를 kernel 로 넘김 (command interpreter) DOS 의 command.com, Windows 의 탐색기와 비슷 Shell 은 그 자체로서 완벽한 program 환경 현재 사용중인 shell 의 종류확인
E N D
Shell & VI editor 2007. 3. 23 (금) 김 희 준 icemichy@hufs.ac.kr
Shell • 정의/역할 • 종류 • 주요 shell들의 특징 • 기능 • 환경설정
Shell의 정의와 역할 • 정의 • User가 입력한 명령어를 해석하고, 이를 kernel로 넘김 (command interpreter) • DOS의 command.com, Windows의 탐색기와 비슷 • Shell은 그 자체로서 완벽한 program 환경 • 현재 사용중인 shell의 종류확인 • 역할 • 입/출력 방향 결정, foreground / background, pipe 처리 • User가 새로운 명령을 내릴 때마다 Shell은 새로운 process를 만들어 그 process에 새로운 프로그램을 실행 • 모든 program들은 서로 독립적인 process에서 작동하도록 되어 있으며, 이 program들은 모두 Shell의 child process • 각 process간의 통신은 Shell 환경을 통해 이루어지며 process간의 우선순위, 자원 배분 등을 Shell에서 처리
Korn Shell Bourne Shell C Shell Bash Shell Shell의 종류 • Bourne Shell (sh) • C Shell (csh) • Korn Shell (ksh) • TENEX C Shell (tcsh) • Bourne Again Shell(bash)
Shell의 특징(bourne shell) • Bourne Shell (/bin/sh) • Solaris의 기본 Shell • 대부분의 Shell은 Bourne Shell의 기능을 포함하여 확대 발전한 형태 • 강력하고 편리한 Shell 들의 등장으로 인해 특이한 상황을 제외하고는 거의 사용되지 않음 • User prompt : $ • Super-user prompt : #
Shell의 특징(C Shell) • C Shell (/bin/csh) • FreeBSD의 기본 Shell • C언어 기반의 Shell • Bourne Shell의 모든 기능과 명령어 history, alias, process 관리기능 확장을 추가로 가짐 • User prompt : %
Shell의 특징(bash Shell) • bash Shell (/bin/bash) • Bourne Shell의 확대발전형을 제작한다는 목표로 GNU 프로젝트 일환으로 개발 • 기본적으로 Bourne Shell을 기반으로 하며, C Shell의 기능도 일부 포함 • Linux의 표준 Shell로 채택 • User prompt : $ • Super-user prompt : #
Shell의 기능(1/3) • foreground, background 실행 및 전환 • pipe : 응용 프로그램의 결과값을 다른 응용 프로그램의 입력값으로 연결해주는 역할 • alias : 긴 명령어를 입력하기 쉬운 짧은 명령어로 정의 $ netscape & $ jobs $ fg %1 $ ‘ctrl + z’, bg $ ls –al | more $ alias nova ‘telnet nova.hufs.ac.kr’
Shell의 기능(2/3) • command prompt 편집 : 명령어 입력시 editor의 편집기능과 유사한 기능을 제공
Shell의 기능(3/3) • history : 입력했던 명령어를 다시 찾아보고 편집할 수 있는 기능 • command 완성 : 잘 기억나지 않는 명령어를 ‘Tab’ 키로 완성시켜줌 $ !! $ !124
bash shell 환경설정(1/4) • user가 login을 하게되면 자동적으로 Shell 실행 • Shell은 설정파일을 읽어 user에게 작업환경 제공 (DOS에서의 config.sys와 autoexec.bat와 비슷) • Shell 설정 파일(초기화 파일) • system 전체의 초기화 파일 • Shell이 실행되면서 가정 먼저 읽는 설정 파일 • 관리자가 설정
bash shell 환경설정(2/4) • user 초기화 파일 • System 초기화 파일을 읽은 후 User 초기화 파일을 읽는다. • user가 설정
command history logout 환경설정 login 환경설정 login 환경설정의 backup bash shell 환경설정(3/4) • .bash_profile 수정 후 새로운 shell 환경설정 적용 $ source .bash_profile
bash shell 환경설정(4/4) • User 초기화 파일 예 # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin // path 설정 경로 SHELL=/bin/bash // 실행중인 shell의 경로 MANPATH=/usr/man:/usr/X11/man // man의 경로 EDITOR=/usr/bin/vi // text 편집기의 경로 alias l=‘ls –al | more’ // alias export EDITOR // 지역변수를 환경변수로 정의 HISTSIZE=1000 // command history size
Editor • Unix(혹은 linux)에서 지원하는 대표적인 editor • vi(visual editor) • Visual display editor • traditional editor : ed(line editor) • emacs • Vim : vi의 clone • 한글 지원 vi editor • Vi의 기능에 충실 • 좀더 편리한 툴 제공
: ESC Command mode Last Line mode Input mode Enter Insert, Append, Replace … Introduction to vi • Modes of Operation • The Work Buffer • During the editing session, vi make all changes in the buffer • Advantage • 오동작으로 원하지 않은 결과가 발생했을 때, 파일에 저장되지 않도록 할 수 있다. • Disadvantage • 시스템이 다운될 경우, 편집한 결과가 모두 소멸될 수 있다.
Vi 명령어 (1/3) • 화면제어 ctrl + f - 화면전체의 내용이 한 화면 위로 이동 ctrl + b - 화면전체의 내용이 한 화면 아래로 이동 ctrl + e - 화면전체의 내용이 한줄씩 위로 이동 ctrl + y - 화면전체의 내용이 한줄씩 아래로 이동 • 커서(Cursor)의 제어 ENTER Key 다음행의 처음으로 이동 j 한행 아래로 이동 k 한행 위로 이동 l 현재행의 오른쪽으로 이동 h 현재행의 왼쪽으로 이동 w 다음단어의 첫자로 이동 e 현재단어의 끝자로 이동 ^ 행의 제일왼쪽으로 이동 $ 행의 제일 오른쪽으로 이동 H 화면의 좌측상단으로 이동 M 화면의 좌측 중간으로 이동 L 화면의 좌측하단으로 이동 :숫자 지정한 숫자의 행으로 이동 :/문자열 오른쪽 하방향으로 문자열 검색 :?문자열 왼쪽 하방향으로 문자열 검색 n 아래로 검색을 계속함 N 위로 검색을 계속함 ctrl+g 현재의 화일이름과 행 수를 알려줌. b 바로 이전 단어의 앞 빈칸으로 이동
Vi 명령어 (2/3) • 문안편집 a (append) 현재 커서가 위치한 문자의 다음위치부터 입력함 A 현재 커서가 있는 행의 마지막부터 입력함 i (insert) 현재 커서가 있는 위치부터 입력함 I 현재 커서가 있는 행의 처음부터 입력함 o (open) 현재커서가 있는 행의 다음 행에 새로운 한 행을 삽입하면서 입력함 O 현재커서가 있는 위치에 새로운 한 행을 삽입하면서 입력함 • 문안의 삭제 x 커서위치의 한 문자 삭제 dw 커서위치의 한 행을 삭제 dd 커서위치의 한 행을 삭제 :1,$ d 1행부터 마지막 행까지 삭제 D 커서위치의 오른쪽 모두 삭제
Vi 명령어 (3/3) • 문안의 이동 및 복사 nyy n행을 버퍼에 복사 p 버퍼에 복사된 내용을 화면에 인쇄 3dd 현재커서가 위치한 행으로부터 3행을 삭제(이동원지정) 3p 지워진 3행이 커서가위치한 행 부터 지웠던 3행이 인쇄된다. Yy 현재커서가 위치한 한 행을 버퍼에 복사한다.( 3yy : 3행 복사) P 버퍼에 복사된 내용이 인쇄된다. • 기타명령어 U (Undo) 직전에 수행한 명령을 취소 또는 복구한다. r 한 문자 변경 cw 한단어 변경 J 행 결합 enter key 행 삽입 :sh shell을 수행한다. :!unix 명령어 unix 명령어를 수행하고 vi로 다시 돌아온다. :r filename 지정한 화일을 수행하고 vi로 다시 돌아온다. :w filename 현재내용을 지정한 filename으로 보관한다. :1, 10 w filename 1행부터 10행까지만 지정한 filename으로 보관한다.
Test • Vi Editor를 이용해 daytime을 가져오는 client와 server를 작성해보자 • UNP library사용은 option