2. 일반 사용자를 위한 유닉스
1. UNIX 들어가기와 나오기 계좌(account) 할당 Super User(시스템 관리자)에게 의뢰 자동 할당: adduser 수동 할당 mkdir vi /etc/passwd chown 2. 일반 사용자를 위한 유닉스
1. UNIX 들어가기와 나오기 login login prompt 얻기: several -keys password 확인과 설정 passwd /etc/passwd 좋은 암호 hacker(cracker)으로 보호되어햐 함 일상적인 단어의 사용은 피함 특수문자를 첨가하거나 대소문자를 구분함 Enter 2. 일반 사용자를 위한 유닉스
1. UNIX 들어가기와 나오기 prompt와 셀(shell) login후에 처음 보임 Shell이란? Bourne Shell Korn Shell : Bourne Shell 포함 C Shell : 대화형 작업에 유리 2. 일반 사용자를 위한 유닉스
1. UNIX 들어가기와 나오기 Shell의 공통 핵심 기능 pipe background 처리 redirection 명령어 치환 명령열 script 내장 명령어 변수(지역, 환경) 설정 대표문자 subshell 2. 일반 사용자를 위한 유닉스
1. UNIX 들어가기와 나오기 Shell의 선택 시스템 관리자가 지정 shell prompt 구분 $ (Bourne shell, Korn shell), # (C shell) chsh (change shell) 명령의 shell 절대경로 Bourne: /bin/sh Korn: /bin/ksh C: /bin/csh $SHELL: 현재의 shell 절대경로 저장 예) echo $SHELL /bin/csh 2. 일반 사용자를 위한 유닉스
1. UNIX 들어가기와 나오기 man (manual page) 명령어에 대한 온라인 도움말 얻기 man [chapter] word man word word가 들어 있는 첫 번째 매뉴얼 word가 들어 있는 chapter번째 매뉴얼 man -k word word가 들어 있는 모든 매뉴얼 cf. Unix명령의 일반적 표현 방법 [ ] (생략 가능) -options (명령어 확장) 2. 일반 사용자를 위한 유닉스
1. UNIX 들어가기와 나오기 지금이 몇시인가 : date 화면을 깨끗이 지웁시다 : clear date yymmddhhmm[.ss] 시스템 관리자만이 시간 지정 가능 화면을 깨끗이 지웁시다 : clear 2. 일반 사용자를 위한 유닉스
1. UNIX 들어가기와 나오기 메타문자(metacharacter):제어용 특수문자 stty -a/all 현재 사용 중인 터미날의 메타문자들을 보여줌 - erase(한 문자 지우기 ^H) - kill(한 줄 지우기 ^U) - werase(마지막 단어 지우기 ^W) - rprint(현재 줄 재출력 ^R) - flush(대기 입력 무시, 재출력 ^O) - lnext(다음 문자를 특수문자로 보지않음 ^V) - susp(프로세스 일시정지 ^Z/^Y) - intr(core dump 없이 작업 전면중단 ^C) - quit(core dump하고 작업 전면중단 ^ - stop(터미날 출력을 정지/재시작 ^S/^Q) - eof(입력 끝 ^D) 2. 일반 사용자를 위한 유닉스
1. UNIX 들어가기와 나오기 프로세스의 종료 출력의 정지/복귀 입력의 끝 ^C intr(core dump 없이 작업 전면중단) man chmod ..... ^C 출력의 정지/복귀 ^S/^Q stop(터미날 출력을 정지/재시작) XON/XOFF protocol man chmod ..... ^S ... ^Q 입력의 끝 ^D eof(입력 끝) mail someone ..... ^D 2. 일반 사용자를 위한 유닉스
1. UNIX 들어가기와 나오기 passwd logout 이전 패스워드 입력 후 새 패스워드 두번 입력 6문자 이상 Shell 입력의 끝 ^D eof(입력 끝) 또는 logout C shell의 경우 exit 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System 계층적(Hierarchical) File System이란? tree structure: directory와 file root directory(/), current directory(.), parent directory(..), subdirectory home directory: login 직후의 디렉토리 (패스워드 file에 명시) 경로 이름(path name): 절대경로이름, 상대경로이름 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System 디렉토리 명령 현재 작업중인 관련 디렉토리 보기: pwd 디렉토리 내용보기: ls -adglsFR fileName]* directoryName* cf. {…}* : 생략 가능 또는 1회 이상 반복 등장 가능 ls 현재 디렉토리의 모든 file 나열("."으로 시작하는 것 제외) ls -l 상세한(long) 정보 제공 permissionMode link# owner size(byte) updatedTime fileName ls -algFs 디스크 블록의 크기(-s) "." file도 나열(-a) 상세한 정보 (-1) 그룹(-g) 실행가능* 디렉토리/ 링크@ 소켓= (-F) recursively(-R) 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System 서브디렉토리 만들기 디렉토리 이동하기: cd 디렉토리 제거: mkdir [-p] newDirectoryName 디렉토리 이동하기: cd cd .. cd / cd ~loginName cd 디렉토리 제거: rmdir [-r] directoryName* cf. 만일 디렉토리가 비어 있지 않으면 제거 안됨 -r(recursively) 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System file의 생성 문서편집기 이용: vi, emacs cat(catenate)와 redirection 이용 cat > file ...... ^D file 새로 만들기/덮어쓰기 cat >> file ...... ^D file에 연속 쓰기 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System file 내용 보기 cat fileName more -f {+lineNmber} {fileName}* 연속적으로 올라면서 출력 cf + (시작번호 명기, default=1) -f(긴 라인을 연속적으로 나타냄) page -f {+lineNmber} {fileName}* 전체화면 지우고 다음 페이지 출력 head -n {fileName}* : 처음 n 줄(default=10) tail -n {fileName}* : 마지막 n 줄 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System file 이름 바꾸기 mv [-] -i oldFileName newFileName 이름만 바꿈 (not moving) cf. [-] 뒤의 모든 단어를 file 이름으로 간주함( -로 시작하는 file 처리시에 좋음) -i (새로운 file 이름이 이미 존재하는지에 대한 확인 prompt 보여줌) mv [-] -i fileName directoryName 어떤 디렉토리 안으로 file 이동 mv [-] -i oldDirectoryName newDirectoryName 전체 디렉토리 간 이동 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System file 복사: cp cp [-i] oldFileName newFileName cf. -i(이미 존재하는지 확인한 후) cp [-ir] fileName* directoryName 어떤 디렉토리 안으로 file 이동 cf. -i(이미 존재하는지 확인한 후) -r(recursively) 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System file 제거: rm [-] -fir fileName* cf. [-] 뒤의 모든 단어를 file 이름으로 간주함 ( -로 시작하는 file 처리시에 좋음) rm * : 모든 fle 제거 rm -r * 서브디렉토리까지 뒤져서 모든 fle 제거 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System file을 프린트하기 lpr -m [-Pprinter] [-#copies] fileName* file에 번호를 붙여 출력 프린트 종료 후 메시지 보냄(-m) 프린터 지정(-Pprinter): $PRINTER에 지정된 프린터를 onerwrite 여러번 인쇄(-#copies) lpq -l [-Pprinter] {job#}* {userID}* 특정 작업이나 프린터의 상태 보임 추가적인 정보 제공(-l) lprm -l [-Pprinter] {job#*} {userID}* 특정 사용자/작업의 프린팅 작업 취소 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System file의 단어수 세기: wc -lwc fileName* cf. line(-l) word(-w) character(-c) 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System file 속성(attribute): ls -algFs ls -l 상세한(long) 정보 제공 permissionMode link# owner size(byte) updatedTime fileName permissionMode (WXXXYYYZZZ) W: 화일유형 (- 정규화일, d 디렉토리화일, b buffered file:HDD, c non-buffer file:Terminal, l symbolic link, p pipe, s socket) 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System file -L {fileName}+ file 유형에 대한 조회 cf. 연결 file에 대한 정보 제공(-L) XXX(사용자 허가권) YYY(그룹 허가권) ZZZ(다른 사용자 허가권) r(읽기 허가) w(쓰기 허가) x(실행 허가) 이 순서대로 나타남 (p77 표 참조) 정규화일, 디렉토리화일, 특수화일들에 대한 의미가 각각 다르다. 만일 허가하지 않을 경우, -으로 나타남 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System groups [userId] 사용자가 회원으로 속해있는 모든 그룹의 목록들을 표시 chgrp -R groupId {fileName}* 지정된 file의 소속 그룹을 바꾼다 cf. 재귀적으로(-R) 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System chmod -R change ,{change}* {fileName}+ 허가권 변경 clusterSelection+newPermission (허가권 추가) clusterSelection-newPermission (허가권 제거) clusterSelection=newPermission (절대적 허가권 할당) clusterSelection: u(user/owner) g(group) o(others) a(all) newPermission: r(read) w(write) x(execute) s(set user id/set group id) cf. 디렉토리 안의 모든 file들의 모드를 재귀적으로 변환(-R) chmod g+w | u-rw | g=r | u+w,g-r | o-rw 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System 8진수 허가권 설정 chmod 750 . 현재의 디렉토리의 허가권 변경 ls -ld . 위 변경 결과를 확인 cf. 디렉토리 자체 정보 (-d) 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System file의 소유권 변경 chown -R newUserID {fileName}+ 2. 일반 사용자를 위한 유닉스
2. UNIX의 계층적 File System file의 그룹 변경 newgrp [-] [groupID] 현재의 shell의 그룹을 다른 것으로 바꾼다 대쉬[-]를 사용하면 login 당시 shell의 그룹으로 바꾼다 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 화면 제어를 위한 터미날 유형 결정 Shell 환경 변수 $TERM Shell Startup file에 일방적으로 $TERM의 값을 지정하는 방법 setenv TERM vt100 (C Shell) TERM=vt100; export TERM (Bourne/Korn Shell) Shell Startup file에 $TERM의 값을 지정하되 문제시 사용자에게 묻는 방법: tset 사용자가 Shell에서 수동적으로 $TERM의 값을 지정하는 방법 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 터미날 설정 : tset tset 이미 $TERM에 terminal type이 설정되어있다고 가정하고, /etc/termcap을 침조하여 적절한 초기화를 실시 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 tset -s /etc/ttytab을 참조하여 해당 terminal port에 대한 terminal type 값을 찾아 $TERM의 값으로 설정한 후, /etc/termcap을 침조하여 적절한 초기화를 실시한다. cf. /etc/ttytab tty0f "usr/etc getty std.9600” vt100 off local ttyp0 none network off secure ... terminal port ...... .... terminal type .... cf. temnial port 확인 명령 tty /dev/ttyp0 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 tset -iC1 -eC2 interrupt 문자를 C1으로, erase 문자를 C2로 설정 (default: interrupt ^C, erase ^H) tset -m 'oldType:newType' /etc/ttytab을 무시하고 terminal type을 새로 설정 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 tset -m 'oldType:?newlType’ /etc/ttytab을 무시하고 terminal type을 새로 설정할 것인지를 사용자에게 물어봄 eval `tset -s -m 'network:?vt100'` cf. /etc/ttytab에서 기본 terminal type을 찾아서 실제의 terminal type이 Vt100 인지를 묻고 해당 환경변수를 /etc/termcap을 참조하여 실시한다. cf. eval command command의 결과를 정규 Shell 명령처럼 실행한다. 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 터미날 특성 변경: stty stty -a 현재 터미날의 설정 상태를 보여줌 stty -echo 타이핑한 문자를 다시 보여주지 않음 stty echo 타이핑한 문자를 다시 보여줌 stty -raw 메타문자의 특별한 의미를 사용하도록 해줌 stty raw 메타문자의 특별한 의미를 사용하지 않도록 함 stty -tostop 후면작업이 터미날에 출력을 보내도록 해줌 stty tostop 후면작업이 터미날에 출력을 보내지 않도록 함 stty sane 터미날 특성을 사전에 정한 값(defautl value)로 설정함 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 메타문자(metacharacter): erase kill werase rprint flush lnext susp intr quit stop eof 제어문자의 입력 control (^)로 표시하거나 \뒤에 실제 제어문자를 타이핑함 예) stty erase “^H” 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 문서 편집기: vi vi의 두 모드 명령 모드: 문서 편집에 필요한 보편적인 명령 수행, 초기상태 텍스트 입력 모드: 문서(텍스트)를 입력하는 상태 2. 일반 사용자를 위한 유닉스
$ ~ ~ Vi mode(Vi 명령 모드) x r dd a i esc oO R $Vi filename :q! (기록 않음) ZZ(기록) :wq a i esc x r dd 커서이동 append insert oO open R replace 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 명령 모드에서 텍스트 입력 모드로의 전환 i 텍스트가 커서 앞에 삽입된다(insert) a 텍스트가 커서 뒤에 삽입된다(append) A 텍스트가 현재 줄의 맨 앞에 삽입된다(append) o 텍스트가 현재 줄 다음부터 삽입된다(open) O 텍스트가 현재 줄 앞에서 삽입된다(Open) R 텍스트가 대치된다.(replace) 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 텍스트 입력 모드에서 명령 모드로의 전환: 커서 이동 한 줄 위(↑, k) 한 줄 아래(↓, j) 한 문자 왼쪽(←, h) 한 문자 오른쪽(→, ㅣ) 줄의 시작(^) 줄의 마지막($) 한 단어 앞(b) 한 단어 뒤(w) 지정 줄(:nn ) 반 화면 아래(^D) 한 화면(^F) 반 화면 위(^U) 한 화면 위(^B) ESC Enter 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 화면 이동 z. (현재의 줄이 화면의 가운데에 오도록 다시 그림) <<cursor_movement> (화면을 왼쪽으로<coursor_movement>만큼 이동) ><cursor_movement> (화면을 오른쪽으로 <coursor_movement>만큼 이동) /sss/+n (현재부터 뒤로 문자열 sss가 나타난 첫줄부터 n줄 뒤로 커서 이동) ?sss?-n (현재부터 앞으로 문자열 sss가 나타난 첫줄부터 n줄 앞으로 이동) ^L (화면을 다시 그린다) 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 텍스트 삭제 문자(x) 단어(dw) 줄(dd) 커서부터 줄 끝(D) 블록 단위 :<range>d ) cf. <range> 1,$(첫줄부터 마지막줄까지) 1,.(첫줄부터 현재줄까지) .,$(현재줄부터 마지막줄까지) .-2(현재부터 두 번째 앞줄) 텍스트 치환 문자(r) 단어(cw- ) 줄(cc- ) Enter ESC ESC 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 버퍼 이용 붙이기 :<range>y (버퍼로 복사) :<range>yy (버퍼로 복사한 후 삭제) :<range>Y (버퍼로 복사한 후 삭제) :p (버퍼에서 복사해서 현 위치 뒤에 붙이기) :P (버퍼에서 복사해서 현 위치 뒤에 붙이기) :<line>p (지정된 줄<line> 다음에 버퍼에서 복사) :"버퍼이름y (버퍼로 버퍼이름에 복사) :"버퍼이름p (버퍼이름의 버퍼에 저장된 내용을 복사) Enter Enter Enter Enter Enter Enter Enter Enter 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 탐색 및 치환 :?sss (현재 위치에서 화일의 앞쪽으로 탐색) :n (마지막 탐색 명령을 반복) :<range>s/sss/ttt/ (<range>내의 문자열 sss 처음 것만을 ttt로 치환) :<range>s/sss/ttt/g (<range>내의 문자열 sss 모두를 ttt로 치환) Enter Enter Enter Enter Enter 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 화일 저장 및 불러오기 :q (변화가 없을 때 저장 없이 빠져나옴) :w (현재의 화일 이름으로 저장) :wq (현재의 화일 이름으로 저장한 후 빠져나옴) :x (현재의 화일 이름으로 저장한 후 빠져나옴) ZZ (현재의 화일 이름으로 저장한 후 빠져나옴) :w<이름> (<이름>이라는 화일로 저장) :e<이름> (현재의 화일이 아닌 다른 화일 <이름>을 편집) :n (현재 편집중인 화일의 다음 화일을 편집) Enter Enter Enter Enter Enter Enter Enter Enter Enter 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 기타 명령 :!<명령> (Shell 명령을 시행하고 vi로 되돌아감) :!sh (Shell로의 나들이, 끝날 때는 ^D) Enter Enter 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 문서 편집기: emacs 1975 MIT의 Richard Stallman 작성, 무료 배포, Editor Macros의 약자 MIT Multics의 emacs(Bernie Greenberg)로 발전 Carnegie-Mellon 대학의 emacs(James Gosling)로 발전 (현재의 emacs 토대) AT&T Bell Lab.의 emacs(Warren Montgometry)로 발전 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 단일 모드: 명령 모드와 텍스트 입력 모드의 구분이 없다 대화식 오류 확인 기능 제공: 초보자에 유용 문자열(character stream) 방식의 편집: 제어열에서 대소문자 구분 없음 ctrl-h t (emacs 도움말) esc ? (emacs 도움말) 다중 윈도우 기능 제공 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 편집 시작 emacs [화일명] emacs의 초기화면은 타이핑이 시작되면 자동으로 없어짐 줄이 길어도 자동으로 분리되지않으므로 사용 분리 화면의 넓이보다 더 긴 줄은 줄 끝에 \f0 가 표시됨 화면 맨 밑에 mode line이 제공됨 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 mode line 3개의 대시(-) : **가 포함되면 현재 화일이 수정되었음을 의미함 "Emacs:" 다음에 현재의 화일이름이 나옴 (없으면, *scratch*) (현재의 편집모드): 초기화면에서는 (fundamental) 화일내에서의 상대적 위치(백분율): All(전부), Top(시작), Bot(끝) 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 편집 종료 ctrl-x ctrl-c (수정 후 저장하지않았으면 emacs가 물어봄) ctrl-x ctrl-s (현재 작업 중인 화일을 저장함) ctrl-x ctrl-f (또다른 화일을 편집) 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 기초 명령 입력 진행 ctrl-g (어떤 emacs 명령을 종결하고 새로운 명령을 기다리는 상태화) ctrl-x 1 (커서가 놓여 있는 window를 제외한 나머지 윈도우를 닫음) 입력 진행 단순한 타이핑으로 텍스트가 입력됨 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 커서 이동 한 줄 위(ctrl-p) 한 줄 아래(ctrl-n) 한 문자 오른쪽(ctrl-f) 한 문자 왼쪽(ctrl-b) 줄의 시작(ctrl-a) 줄의 끝(ctrl-e) 한 단어 후진(esc b) 한 단어 전진(esc f) 한 화면 아래로(ctrl-v) 한 화면 위로(esc v) 화일의 시작(esc <) 화일의 끝(esc >) 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 텍스트 삭제 삭제 버퍼에 자동으로 들어감 커서 앞 문자(del) 커서 뒤 문자(ctrl-del) 커서 앞 단어(esc del) 커서 뒤 단어(esc d) 현재 줄 끝까지(ctrl-k) 문장(esc k) 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 텍스트의 영역 정하기 삭제 복귀 마크 설정(ctrl-@) 영역 잡기 : 마크와 커서의 사이 영역 삭제(ctrl-w): delete-to-buffer 삭제 복귀 마지막 삭제 버퍼 복귀(ctrl-y) 이전 삭제 복귀(esc y) 다음 삭제를 덧붙이기(esc ctrl-w) 하나의 편집 수행을 취소(ctrl-x u) 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 탐색 및 치환: incremental search sss의 전방탐색(ctrl-s sss) sss의 후방탐색(ctrl-r sss) 전방탐색 반복(ctrl-s) 후방탐색 반복(ctrl-r) 탐색 작업 끝(esc) 전체적인 탐색/치환(esc x repl s) emacs가 대화식으로 진행함 전체적인 탐색/치환(esc r) 2. 일반 사용자를 위한 유닉스
3. 문서 편집 및 처리 다중 윈도우 작업 윈도우 열기(ctrl-x 2) splitting-current window 커서가 놓여 있는 window를 제외한 나머지 윈도우를 닫음(ctrl-x 1) 커서가 놓여 있는 window를 닫음(ctrl-x d) 다른 윈도우(ctrl-x ctrl-o) 다음 윈도우(ctrl-x n) 이전 윈도우(ctrl-x p) 두 개의 윈도우에 두 개의 다른 화일 불러 방문하기(ctrl-x ctrl-v) 2. 일반 사용자를 위한 유닉스