Presentation is loading. Please wait.

Presentation is loading. Please wait.

UNIX 이 재 광 한남대학교 컴퓨터공학과.

Similar presentations


Presentation on theme: "UNIX 이 재 광 한남대학교 컴퓨터공학과."— Presentation transcript:

1 UNIX 이 재 광 한남대학교 컴퓨터공학과

2 목 차 1. 유닉스란? 2. 일반 사용자를 위한 유닉스 3. 유닉스 쉘 4. 유틸리티 5. 네트워킹

3 AT&T의 Bell 연구소에서 개발된 하나의 운영체제
1. 유닉스란? 정 의 AT&T의 Bell 연구소에서 개발된 하나의 운영체제 역 사 1960년대 초 MIT, Bell 연구소 등이 공동으로 MULTICS 개발 1969년 Bell 연구소의 Ken Thompson이 MULTICS를 기초로 Unics개발, 이후로 UNIX로 수정 1973년 Dennis Ritchie가 Unix를 C언어로 개정

4 1. 유닉스란?(계속) UNIX의 특징 다중 사용자(Multiuser)와 멀티 태스킹(Multitasking)기능을 가진 대화형 시스템 이식성과 확장성 용이 트리 형태의 계층적 구조로 된 파일 시스템 네트워킹 기능 자원의 공유 프로세스가 CPU시간을 “시간조각”으로 나누어 CPU를 공 유한다. 메모리를 페이지 단위로 나누어 프로세스간에 공유한다.

5 1. 유닉스란?(계속) UNIX의 계보 유닉스 System V 계열 (AT&T의 Bell연구소) BSD 계열
(Berkeley 대학) V.2 V.3 V.4 V.4.1 Sun OS (Solaris) HP/UX IBM AIX OSF/1 Apollo 유닉스

6 1. 유닉스란?(계속) 유닉스 시스템의 구성 파일 시스템 커널 H/W

7 1. 유닉스란?(계속) 커널(Kernel) 쉘(Shell) 운영체제의 핵심 부분
디바이스, 메모리, 프로세서, 데몬(daemon)을 관리 응용프로그램과 시스템간에 정보 전송을 제어 쉘(Shell) 표준 유닉스 명령 인터프리터(Interpreter) 사용자와 커널간의 인터페이스 담당

8 1. 유닉스란?(계속) 파일 시스템( File system) / UNIX 시스템의 파일은 디렉토리로 분류
usr bin glass james myfile.txt test.c doc 디렉토리 계층 구조

9 1. 유닉스란?(계속) 파일의 종류 일반(Ordinary)파일 a.txt, index.html와 같은 일반파일
디렉토리(Directory) 파일 디렉토리 / /bin /etc /lib /temp /usr 의 미 Unix커널의 실행 파일 및 시스템관리에 필요한 파일 포함 Unix의 기본 명령어 파일 포함 시스템 관리용 명령어나 데이터 파일 포함 명령어가 사용하는 기본적인 파일 포함 임시 파일을 위한 디렉토리 일반적으로 시스템 관리자 파일 포함

10 1. 유닉스란?(계속) /usr/bin /usr/home /usr/man /usr/spool /usr/adm 특수 파일
디렉토리 /usr/bin /usr/home /usr/include /usr/man /usr/spool /usr/adm 의 미 워드, DB 관리 프로그램과 개발된 프로그램 등 포함 사용자의 홈 디렉토리 시스템 관리용 명령어나 데이터 파일 포함 명령어가 사용하는 기본적인 파일 포함 임시 파일을 위한 디렉토리 일반적으로 시스템 관리자의 파일 포함 특수 파일 프린터, 터미널, 디스크 등의 입출력 장치를 접근하고, 관리하는 채널에 대한 정보를 가지고 있는 파일

11 1. 유닉스란?(계속) 파일명과 경로명 파일명(File name) 경로명(Path name) 255문자이내에서 사용 가능
대,소문자 구분 “.”, “_”로 시작되는 파일명은 시스템 파일들이 많이 사용하기 때문에 사용하지 않는 것이 바람직하다. 경로명(Path name) 절대 (Absolute)경로: 루트 디렉토리로부터 목적 경로 이름 상대 (Relative)경로: 현재 디렉토리로부터 목적 경로 이름

12 1. 유닉스란?(계속) / usr bin kim kang . : 현재 디렉토리 .. : 부모 디렉토리 File C File B
현재 위치 File B kim kang . : 현재 디렉토리 .. : 부모 디렉토리 File A 화 일 절대 경로 이름 화 일 상대 경로 이름 A /usr/kim/ File A A File A B /usr/ File B B .. / File B C /bin/ File C C .. /.. /bin/ File C

13 2. 일반 사용자를 위한 유닉스 시동과 종료 로그인(login) 사용자ID와 패스워드를 입력
password: // 사용자 패스워드 입력

14 2. 일반 사용자를 위한 유닉스(계속) 로그인 실패 시 로그인 후 첫번째 메시지 Login incorrect
Last login: Mon Mar 8 16:13:30 from netwk.hannam.ac.kr Sun Microsystems Inc. SunOS Generic May 1996 # _

15 2. 일반 사용자를 위한 유닉스(계속) 패스워드 설정과 변경 일반적으로 6문자 이상 입력
일반적으로 6문자 이상 입력 /etc/passwd에 암호화된 형태로 저장 # passwd passwd: Changing password for james Enter login password: // 현재 패스워드 입력 New password: // 새로운 패스워드 입력 Re-enter new password: // 새로운 패스워드 재입력 # _

16 2. 일반 사용자를 위한 유닉스(계속) 로그아웃(logout)
사용자가 컴퓨터 시스템 사용을 종료하고자 할 경우, 그 시스템으로 부터 빠져 나오는 과정 # logout 또는 # exit # ^D

17 2. 일반 사용자를 위한 유닉스(계속) 유닉스 명령 형식 명령어 [ - 옵션 인수 ] 명령어는 반드시 소문자로 입력한다.
명령어와 옵션, 옵션과 인수 사이에는 한 개 이상의 공백이 있어야 한다. 명령어 [ - 옵션 인수 ] 명령 수행의 대상 명령 수행의 방법 작업 지시어

18 2. 일반 사용자를 위한 유닉스(계속) 온라인 도움말 정보 (man: manual page) ….
man [ chapter ] word man -k keyword -k: 키워드 검색 # man -k mode //키워드를 mode로 가지는 도움말 정보 출력 chmod chmod (1) change the permissions mode of file chmod chmod (2) change access permission mode of a file def_prog_mode curs_kernel (3x) - low-level curses routines def_shell_mode curs_kernel (3x) - low-level curses routines ….

19 2. 일반 사용자를 위한 유닉스(계속) 특수 문자 (메타 문자) 터미널에 입력되었을 때 특수하게 해석되는 문자
메타 문자 목록 얻기 stty all or -a //모든 메타 문자 목록 얻기

20 2. 일반 사용자를 위한 유닉스(계속) # stty -a // 모든 메타 문자 목록 출력
erase kill werase rprnt flush lnext susp intr quit stop eof ^H ^U ^W ^R ^O ^V ^Z/^Y ^C ^\ ^S/^Q ^D # stty kill ^k // 줄 삭제를 ^k로 변경 # stty -a ^H ^k ^W ^R ^O ^V ^Z/^Y ^C ^\ ^S/^Q ^D # _

21 2. 일반 사용자를 위한 유닉스(계속) 프로세스의 종료: Control-C 작업 완료 이전에 프로세스의 종료
# man man //man에 대한 도움말 정보 man(1) User Commands man(1) NAME man - find and display reference manual pages SYNOPSIS man [ - ] [ -adFlrt ] [ -M path ] [ -T macro-package ] [-s section ] name ... man [ -M path ] -k keyword … ^c // 작업의 종료 # _

22 2. 일반 사용자를 위한 유닉스(계속) 출력의 정지: Control-S / Control-Q ^S: 터미널 출력의 일시 중시
# man ls ls(1) User Commands ls(1) NAME ls - list contents of directory SYNOPSIS ^S //터미널 출력의 일시 중지 ^Q // 터미널 출력의 재개 /usr/bin/ls [ -aAbcCdfFgilLmnopqrRstux1 ] [ file... ] /usr/xpg4/bin/ls [ -aAbcCdfFgilLmnopqrRstux1 ] [ file... ] SUNWcsu

23 2. 일반 사용자를 위한 유닉스(계속) 입력의 끝: Control-D # cat > test
In my dreams that fill the night, I see our eyes ^D // 입력의 끝 # _

24 2. 일반 사용자를 위한 유닉스(계속) 작업 디렉토리 확인(Print Working Directory) pwd
/user/james # _

25 2. 일반 사용자를 위한 유닉스(계속) 화일 생성: cat 표준 입력이나 파일로부터 입력 받아 이를 표준 출력에 표시한다.
cat -n { filename } -n: 출력에 줄 번호 표시 # cat > test // 키보드 입력을 test파일에 저장 hi! I hope that you get this file. ^D # cat -n test //줄 번호를 포함한 파일의 내용보기 1 hi! 2 I hope that you get this file. # _

26 2. 일반 사용자를 위한 유닉스(계속) # cat test // 줄번호를 포함시키지 않고, test파일 보기 hi!
I hope that you get this file. # _

27 2. 일반 사용자를 위한 유닉스(계속) 디렉토리 내용 보기: ls
ls -adglsFR {filename} {directoryname} -a : 숨겨진 파일 나열 -d: 디렉토리 자체의 상세 정보 -g: 파일의 그룹 정보 -l: 허가정보, 소유권, 최종변경일자를 포함하는 긴 목록 제공 -s: 파일들이 차지하는 크기를 디스크 블록 단위로 제공 -F:파일 이름 다음에 파일의 특성을 나타내기 위한 문자 제공 -R: 디렉토리의 내용과 그 서브 디렉토리의 내용을 재귀적으로 제공

28 2. 일반 사용자를 위한 유닉스(계속) . : heart heart1 heart2 tmp
# ls // 현 디렉토리의 모든 파일 출력 heart heart1 heart2 tmp # ls -a // 숨겨진 파일 출력 heart heart1 heart2 tmp # ls -l // 허가정보, 소유권 등을 포함한 긴 목록 제공 -rw-r--r james netwk 월 16일 14:25 heart -rw-r--r james netwk 월 27일 11:19 heart1 -rw-r--r james netwk 월 27일 11:19 heart2 drwxr-xr-x james netwk 월 27일 16:55 tmp # ls -R // 디렉토리 내용과 그 서브 디렉토리 내용을 재귀적으로 출력 . : heart heart1 heart2 tmp . /tmp: test1 test2 test3 # _

29 2. 일반 사용자를 위한 유닉스(계속) 파일의 내용보기: more/ page/ head/ tail
more -f { +lineNumber} {fileName} -f: 긴 라인을 연속적으로 출력 +lineNumgber: 시작 번호 명시, 디폴트는 첫번째 줄부터 시작

30 2. 일반 사용자를 위한 유닉스(계속) head: 파일의 처음 n줄을 출력 tail: 파일의 마지막 n 줄부터 출력
head -n {fileName} -n: n 번째 라인까지 출력, 디폴트는 10 tail -n {fileName} -n: 마지막 줄에서 n번째 라인의 줄부터 출력

31 2. 일반 사용자를 위한 유닉스(계속) # cat > heart //heart 파일 생성
I hear her breathing, I'm surrounded by the sound. Floating in this secret place, I never shall be found. ^D # head heart //heart 파일의 첫번째 두줄 출력 # tail heart // heart 파일의 마지막 두줄 출력 # _

32 2. 일반 사용자를 위한 유닉스(계속) 파일의 이름 변경 및 이동: mv
mv -i oldfile newfile // oldfile을 newfile로 변경 mv -i {filename} directoryname // filename을 directoryname으로 이동 mv -i olddirectory newdirectory // olddirectory을 newdirectory로 변경 -i : 새로운 파일 이름이 이미 존재하는 경우를 위한 확인 프롬프트 생성

33 2. 일반 사용자를 위한 유닉스(계속) . : ./tmp: # ls -R // 현재 디렉토리 목록을 재귀적으로 출력
old.txt tmp ./tmp: test # mv old.txt new.txt // old.txt를 new.txt로 이름을 변경 # ls new.txt tmp # mv tmp temp // tmp 디렉토리를 temp 디렉토리로 변경 # ls new.txt temp # mv -i new.txt temp // new.txt를 temp 디렉토리로 이동 # ls -R temp ./temp: new.txt test # _

34 2. 일반 사용자를 위한 유닉스(계속) 디렉토리 만들기: mkdir mkdir Directoryname # ls -l
-rw-r--r james netwk 월 27일 11:19 temp.txt # mkdir newdir // newdir 디렉토리 생성 drwxr-xr-x 2 james netwk 월 30일 22:01 newdir # _

35 2. 일반 사용자를 위한 유닉스(계속) 다른 디렉토리로 이동: cd cd [Directoryname]
# pwd /user/james/tmp # cd temp //temp디렉토리로 이동 /user/james/tmp/temp # cd // 사용자의 홈 디렉토리로 이동 /user/james # _

36 2. 일반 사용자를 위한 유닉스(계속) 파일 복사: cp cp -i oldfile newfile
cp -r olddirectory newdirectory - i : 이미 존재하는 경우를 위한 확인 옵션 - r : olddirectory내에 있는 모든 파일과 서브디렉토리를 재귀적 으로 newdirectory에 복사

37 2. 일반 사용자를 위한 유닉스(계속) # ls -l
drwxr-xr-x 2 james netwk 월 17일 10:30 tmp -rw-r--r james netwk 월 17일 19:37 text # cp text newtext // text를 newtext로 복사 # ls text newtext tmp # cd tmp drwxr-xr-x 2 james netwk 월 20일 19:37 sub_tmp -rwxr-xr-x james netwk 월 20일 10:30 data.txt # cd .. # cp -r tmp tmp // tmp를 tmp2에 재귀적으로 복사 # cd tmp2 drwxr-xr-x 2 james netwk 월 22일 16:07 sub_tmp -rwxr-xr-x james netwk 월 22일 16:07 data.txt # _

38 2. 일반 사용자를 위한 유닉스(계속) 디렉토리 제거 rmdir {directoryname} # rmdir temp
디렉토리가 제거 되기 전, 그 디렉토리내에 있는 모든 파일은 제거되 어야 한다. rm -r : 디렉토리와 그 내용 모두를 재귀적으로 제거 # rmdir temp rmdir: 디렉토리 ”temp": 디렉토리가 비어 있지 않음 # rm -r temp # ls # _

39 2. 일반 사용자를 위한 유닉스(계속) 파일의 삭제 rm -fir {filename}
# ls file1 file2 file3 # rm * //해당 디렉토리내의 모든 파일 삭제 # ls -a // 해당 디렉토리내에 파일이 존재하지 않음 # _

40 2. 일반 사용자를 위한 유닉스(계속) 파일 내 단어 수 세기: wc wc -lwc {filename} - l : 줄 수
# cat heart I hear her breathing, I'm surrounded by the sound. Floating in this secret place, I never shall be found. # wc -lwc heart heart // 줄, 단어, 문자 순으로 출력 # _

41 2. 일반 사용자를 위한 유닉스(계속) 화일 속성 필드의 속성 # ls -l heart
-rw-r--r james netwk 월 16일 14:25 heart 필드 값 -rw-r--r-- 1 james netwk 106 5월 16일 14:25 heart 의 미 허가권 모드 하드 링크 갯수 파일 소유자의 사용자 ID 파일의 그룹ID 파일의 크기, 단위는 바이트 파일이 마지막으로 변경된 시간 파일 이름

42 2. 일반 사용자를 위한 유닉스(계속) 파일 유형 첫번째 필드의 첫번째 문자는 다음과 같이 부호화된 파일의
유형을 나타내고 있다. 문 자 파일 유형 일반 파일 d 디렉토리 파일 b (디스크 드라이브와 같이) 버퍼된 특수 파일 c (터미널 같이) 버퍼되지 않은 특수 파일 l 심볼릭 링크 p 파이프 s 소켓

43 2. 일반 사용자를 위한 유닉스(계속) r w - r - - r - x 화일 허가권 r w x 하드 링크 계수
: 얼마나 많은 레이블이 동일한 물리적 파일을 가리키는 가를 표시 r w - r r - x User group others 읽 기 허가 쓰기 허가 실행 허가 r w x

44 2. 일반 사용자를 위한 유닉스(계속) 그룹 목록 보기: groups groups [userID] # groups netwk
# _

45 2. 일반 사용자를 위한 유닉스(계속) 파일 그룹 변경: chgrp chgrp -R groupID {fileName}
# ls -l heart -rw-r--r kang netwk 월 16일 14:25 heart # chgrp ce heart // 파일의 그룹을 ce로 변경 # ls -l -rw-r--r kang ce 월 17일 10:05 heart

46 2. 일반 사용자를 위한 유닉스(계속) 화일의 허가권 변경: chmod mode chmod -R mode {filename}
형식: 대상 + 허가권 대상 - 허가권 대상 = 허가권 대상: u(user), g(group), o(others), a(all) 허가권: r(read), w(wirte), x(excute)

47 2. 일반 사용자를 위한 유닉스(계속) mode 예 요구 사항 g+w u-rw a+x 허가권모드 그룹 쓰기 허가권 추가
사용자 읽기 및 쓰기 허가권 제거 모든 사람에게 실행 허가권 추가

48 2. 일반 사용자를 위한 유닉스(계속) # ls -l heart
-rw-r--r kang netwk 월 16일 14:25 data.txt # chmod g+w data.txt //그룹에게 쓰기 허가권 부여 # ls -l data.txt -rw-rw-r kang netwk 월 16일 14:25 data.txt # chmod +x data.txt // 실행 허가권을 모두에게 부여 -rwxrwxr-x 1 kang netwk 월 16일 14:25 data.txt # chmod -w data.txt // 모든 사람에게 쓰기 허가권 제한 # ls -l data.txt -r-xr-xr-x kang netwk 월 16일 14:25 data.txt

49 2. 일반 사용자를 위한 유닉스(계속) 8진수를 이용한 파일 허가권 설정
각 8진수는 세 단위(u,g,a) 의 허가권을 나타낸다. 설정 2진수 8진수 사용자(user) rwx 111 7 그룹(group) r-x 101 5 모든 사용자(all) --- 000

50 2. 일반 사용자를 위한 유닉스(계속) # ls -l heart
-rw-r--r kang netwk 월 16일 14:25 heart # chmod heart -rwxr-x kang netwk 월 16일 14:25 heart # chmod heart -rwxrwxrwx 1 kang netwk 월 16일 14:25 heart # chmod heart ---x--x--x kang netwk 월 16일 14:25 heart

51 2. 일반 사용자를 위한 유닉스(계속) 파일의 소유권 변경: chown chown -R newUserID {fileName}
수퍼 유저만이 변경가능 # ls -l heart -rw-r--r kang netwk 월 16일 14:25 heart # chown kim heart // heart의 소유권을 kang에서 kim으로 변경 # ls -l heart -rw-r--r kim netwk 월 16일 14:25 heart # _

52 2. 일반 사용자를 위한 유닉스(계속) 그룹의 변경: newgrp
newgrp [groupID] 수퍼 유저만이 변경 가능 # date > test //netwk그룹 쉘로 test1생성 # ls -l -rw-r--r james netwk 월 27일 11:19 test1 # newgrp others // 일시적으로 others 그룹쉘 생성 # date > test // others 그룹 쉘로 test2 생성 -rw-r--r james others 월 27일 11:20 test2 -rw-r--r james netwk 월 27일 11:19 test1 # _

53 2. 일반 사용자를 위한 유닉스(계속) 전자 우편: mail 메일 보내기
mail [-v] [-s subject] {address} -v : 메시지 전송 여부의 확인을 위해 자신에게도 메일 전송 -s : subject에 메시지 제목 지정 address: 로그인 이름, 인터넷 주소로서 영역 ex) james ,

54 2. 일반 사용자를 위한 유닉스(계속) ………….. // 편지 내용 입력 ^D // 입력의 끝, 표준 입력을 전자우편으로 전송
간단한 메일 전송 # mail james // james에게 메일 전송 ………… // 편지 내용 입력 ^D // 입력의 끝, 표준 입력을 전자우편으로 전송 # __ 파일로 메일 전송 # cat > mail.txt hi! How is Amanda doing? with best regards from Graham ^c # mail james < mail.txt //mail.txt 파일의 내용을 james에게 전송

55 2. 일반 사용자를 위한 유닉스(계속) 다중 사용자에게 메일 전송
다중 사용자에게 메일 전송 # mail james june glass // james, june, glass에게 메일 전송 ………… // 편지 내용 입력 ^D // 입력의 끝, 표준 입력을 전자우편으로 전송 # _

56 2. 일반 사용자를 위한 유닉스(계속) 메일 읽기 mail // mail 명령 모드로 진입 명 령
명 령 ? file [filename] copy [mesg] [filename] delete [mesg] mail {userID} reply [mesg] print [mesg] quit save [mesg] [filename] 의 미 도움말 정보 우편함에 있는 filename으로부터 읽어 온다. mesg를 filename에 복사 mesg를 삭제 userID에게 메일전송 mesg를 보낸 송신자에게 회신 more를 이용하여 명세 된 메시지 출력 mail 명령 모드에서 빠져 나온다. mesg를 filename에 저장

57 2. 일반 사용자를 위한 유닉스(계속) . 하나 이상의 전자우편 메시지를 나타내는 집합 구 조 nn ^ $ * nn - mm
user 의 미 현재 메시지 메시지 번호 nn 지워지지 않은 메시지 중 첫번째 마지막 메시지 모든 메시지 nn부터 mm사이에 포함된 메시지 user로부터의 모든 메시지

58 2. 일반 사용자를 위한 유닉스(계속) $ mail // 명령모드로 진입
mail version 5.0 Thu May 2 21:00:21 PDT 1999 도움말 정보 필요시 ? 입력. "/var/mail/james": 4개 메시지 4개 신규 >N hall Wed Feb 24 23: /353 >N june Wed Feb 24 23: /353 >N glass Wed Feb 24 23: /353 >N kang Wed Feb 24 23: /353 ? // 3번 메시지 선택 Message 3: From glass Wed Feb :30 KST Date: Wed, 24 Feb :30: (KST) From: glass ………… // 메시지 내용 ?

59 2. 일반 사용자를 위한 유닉스(계속) ? ^ // 지워지지 않은 메시지 중 첫번째 메시지 Message 1:
? ^ // 지워지지 않은 메시지 중 첫번째 메시지 Message 1: From hall Wed Feb :00 KST Date: Wed, 24 Feb :01: (KST) From: hall ……………… // 메시지 내용 ? quit # _

60 2. 일반 사용자를 위한 유닉스(계속) 파일 편집: vi
Berkeley의 BSD 유닉스용으로 개발되었고, 현재는 모든 유닉스 시스템에서 사용 가능한 에디터 명령 모드와 텍스트 입력 모드가 존재 vi 에디터의 호출 # vi // 인수 없이 vi 에디터 호출 # vi filename // filename 파일을 편집하기 위해 vi 에디터 호출

61 2. 일반 사용자를 위한 유닉스(계속) # vi vi_test // 새로운 vi_test파일 // 커서 위치(입력 라인)
~ // 빈 라인은 ~ (tilde)로 표시 ~ "vi_test" [새 파일] // 마지막 라인

62 2. 일반 사용자를 위한 유닉스(계속) 파일의 저장과 종료 키 :w <filename> :w :q 의 미
의 미 filename으로 저장하고 수행을 계속 현재의 이름으로 저장하고 수행을 계속 편집한 내용이 없을 경우 수행을 종료 현재의 이름으로 저장하고 수행을 종료 :wq :q! :sh 편집한 내용을 저장하지 않고 수행을 종료 일시적으로 쉘 프롬프트 상태로 전환(복귀: ^D)

63 2. 일반 사용자를 위한 유닉스(계속) 텍스트 입력 모드 명령모드에서 텍스트 입력 모드로의 전환
텍스트 입력 모드에서 명령모드로의 전환: Esc 키 수 행 i 텍스트가 커서 앞에서 삽입 a 텍스트가 커서 뒤에서 삽입 o 텍스트가 현재 줄 다음부터 삽입 O 텍스트가 현재 줄 앞에서 삽입 R 텍스트가 대치된다.

64 2. 일반 사용자를 위한 유닉스(계속) 명령 모드 커서 이동 이 동 키 , k , j , l 한 줄 위로 한 줄 아래로
이 동 한 줄 위로 한 줄 아래로 한 문자 오른쪽으로 한 문자 왼쪽으로 한 단어 앞으로 한 단어 뒤로 nn 줄로 , k , j , l , h b w :nn 현재 줄로 : . 마지막 줄로 :$ 한 화면 밑으로 이동 Control-f 한 화면 위로 이동 Control-b

65 2. 일반 사용자를 위한 유닉스(계속) 편집 복사 키 붙이기 키 의 미 yy, Y 한 줄 복사 2yy 두 줄 복사 nyy
yw 한 단어 복사 의 미 p 아래로 (오른쪽으로) 붙이기 P 위로 (왼쪽으로) 붙이기

66 2. 일반 사용자를 위한 유닉스(계속) 텍스트 지우기 <range>는 줄의 범위를 나타낸다
ex) 첫 줄에서 마지막 줄 까지 지정: 1 , $ 현재 줄에서 그 다음 두개 줄 지정: . , +2 3번째 줄에서 13번째 줄 지정: 3 , 13 지울 대상 문자 단어 현재 줄 끝까지 블록 단위의 줄 문자 위에 커서를 위치시키고, x를 입력 단어 시작 부분에 커서를 위치시키고, dw 를 입력 줄 위에 커서를 위치시키고, dd를 입력 D를 입력 : <range>d

67 2. 일반 사용자를 위한 유닉스(계속) 텍스트 치환 탐색 치환 대상 문 자 단 어 줄 키
문자 위에 커서를 위치하고, r를 입력 후 치환할 문자 입력 단어의 첫 위치에 커서를 두고, cw를 누른 후, 치환할 텍스트를 입력하고, Esc를 누른다. 줄의 아무 위치에나 커서를 위치시키고, cc를 누른 다음 치환할 텍스트를 입력하고, Esc키를 누른다. 행 동 /sss 현재 위치에서 파일의 뒤쪽으로 문자열 sss를 탐색 ?sss 현재 위치에서 파일의 앞쪽으로 문자열 sss를 탐색 n 마지막 탐색 명령을 반복

68 3. 유닉스 쉘 정의 쉘(shell)의 종류 사용자와 순수 유닉스운영체제 사이에 위치하는 프로그램
Borune shell (sh) 가장 오랜 동안 모든 unix시스템의 표준 구성 요소 강력한 명령 프로그래밍 언어 기능을 가짐 C shell (csh) c 언어와 유사 대화형으로 많이 사용

69 3. 유닉스 쉘 (계속) Korn shell (ksh) Bourne쉘과 완전히 호환 C쉘의 대화형 기능 추가

70 3. 유닉스 쉘 (계속) 쉘의 핵심적인 기능 쉘 내장명령어 스크립트 변수 리다이렉션 대표문자 파이프 명령열 서브쉘 후면처리
명령어처리 지역 환경 조건부 무조건부

71 3. 유닉스 쉘 (계속) 쉘의 선택 시스템 관리자가 사용자의 기본 쉘을 정한다. $ : Bourne 쉘 또는 Korn 쉘
%: C 쉘

72 3. 유닉스 쉘 (계속) 쉘 명령 단일 명령어 다중 명령어 순차 수행 # command [인 수] 동시수행
# command1& command2& command3&……. command N # command [인 수] # command 1; command 2; …………; command N

73 3. 유닉스 쉘 (계속) 메타 문자 쉘이 특수하게 처리하는 문자
메타 문자의 특수한 의미를 없애기 위해서는 앞에 ‘\’를 삽입한다. # echo hi > file // echo의 출력을 file에 저장 # cat file // file의 내용 보기 hi # echo hi \> file // 메타 문자 금지 hi > file # _

74 3. 유닉스 쉘 (계속) 리다이렉션(Redirection) 출력 리다이렉션 command > filename
프로세스의 출력을 파일에 저장할 수 있게 한다. command > filename // command의 표준 출력을 filename파일로 보낸다. command >> filename //command의 표준 출력을 filename이라는 파일의 끝에 덧붙인다.

75 3. 유닉스 쉘 (계속) # cat > text //파일의 생성 I remember walking in the rain,
on a cold and dark September, ^D // 입력의 끝 # cat text // text파일 보기 I remember walking in the rain, # cat >> text //파일의 끝에 덧붙이기 brown Autumn leaves were falling softly to the ground. ^D # cat text //text파일 보기 # _

76 3. 유닉스 쉘 (계속) 입력 리다이렉션 파일의 내용을 표준 입력으로 사용하는 리다이렉션
파일의 내용을 표준 입력으로 사용하는 리다이렉션 command < filename // filename내용을 표준 입력으로 사용하여 command를 실행 command << word // word로 시작하는 줄의 앞줄까지의 표준 입력을 임시파일로 복사하고, 그 임시 파일의 내용을 표준 입력으로 사용하여 command를 실행

77 3. 유닉스 쉘 (계속) # mail james < mail.text // 자신에게 메일 전송
mailx version 5.0 Tue Jul 15 21:29:48 PDT 도움말 필요시 ? 입력. "/var/mail/s95699": 1개 메시지 1개 신규 >N 1 s Sun Jul 18 16: / // 전송된 메일 ?

78 3. 유닉스 쉘 (계속) 파일 이름 대치(대표 문자) 모든 쉘은 파일 시스템에서 특정한 이름 패턴을 만족하는 파
일을 선택할 수 있게 대표 문자 기능을 지원한다. 대표 문자 * ? [..] 의 미 빈 문자열을 포함하는 어떤 문자열과도 일치. 어떤 단일 문자와 일치. 대괄호 사이의 어떤 하나의 문자와 일치. 문자의 범위는 대시(-)기호로 문자의 쌍을 분리하 여 지정 가능하다.

79 3. 유닉스 쉘 (계속) # ls -FR // 현재 디렉토리를 순환적으로 표시 a.c b.c cc.c dir1/ dir2/
d.c e.e dir2: f.d g.c # ls *.c //” .c”로 끝나는 모든 것 a.c b.c cc.c # ls [ac]* // “a” 또는 “c”로 시작하는 모든 것 a.c cc.c # ls [A-Z a-z]* // 영문자로 시작하는 모든 것 a.c b.c cc. # ls dir */*.c // “dir*” 디렉토리에서 “ .c”로 끝나는 모든 파일들 dir1/d.c dir2/g.c

80 3. 유닉스 쉘 (계속) 파이프 (Pipe) command1 | command2
터미널 파이프 # ls // 현재 디렉토리 표시 a.c b.c cc.c # ls | wc -w // 엔트리의 수 표시 5 # _

81 3. 유닉스 쉘 (계속) ls Wc -w # ls // 현재 디렉토리 표시 a.c b.c cc.c
# _ ls Wc -w 파이프 터미널

82 3. 유닉스 쉘 (계속) cat sort # cat userid | sort # cat userid glass james
john kang tim # cat userid james glass kang tim john cat sort 파이프 터미널

83 3. 유닉스 쉘 (계속) 파이프라인의 분리: tee 파이프의 결과를 파일에 복사하고, 계속 파이프라인을 따라 흐르
게 하는 기능 tee -ia {filename} -i: 인터럽트를 무시한다. -a: 입력을 파일에 덮어씌우지 않고 대신에 그 파일의 끝에 덧붙인다.

84 3. 유닉스 쉘 (계속) # who | tee who.txt | sort // tee를 이용하여 파이프 자료 복사
James pts/ 월 24 11:19 root console 5월 22 13:56 root pts/ 월 22 13:57 root pts/ 월 22 13:57 # cat who.txt // who.txt 파일 보기 # _

85 3. 유닉스 쉘 (계속) 명령열 (Sequences) ‘ ;’으로 명령어를 구분한다.
쉘은 왼쪽에서 오른쪽으로 차례로 실행한다. 출력결과는 반드시 순서적 이지는 않다. # date; pwd; ls 1999년 5월 24일 월요일 오전 11시 46분 27초 /user/james/ a.c b.c cc.c # date > date.txt; ls; pwd > pwd.txt //첫번째와 세번째 명령을 리다이렉트 a.c b.c cc.c date.txt # cat date.txt 1999년 7월 18일 일요일 오후 04시 28분 46초 # cat pwd.txt /stud/users/james

86 3. 유닉스 쉘 (계속) 조건부 실행 순서 모든 유닉스 프로세스는 종료 값을 가지고 끝난다.
종료 값이 0이면 프로세스가 성공적으로 완결되었음을 의미 &&: 이전 명령의 종료 값으로 0을 반환할 경우만 다음 명령이 실행된다. || : 이전 명령의 종료 값으로 0이 아닌 값을 반환 할 경우만 다음 명령이 실행된다. # cc myprog.c && a.out // myprog.c가 성공적으로 컴파일 될 경우, a.out을 실행한다. # cc myprog.c || echo compile error // myprog.c가 실패할 경우만 다음 명령을 실행한다.

87 3. 유닉스 쉘 (계속) 명령어 그룹 (Instruction group)
명령어들을 괄호 안에 그룹으로 묶어, 이를 하나의 자식 쉘에서 실행하게 한다. # date; ls; pwd > out.txt 1999년 5월 24일 월요일 오후 12시 19분 01초 // date의 출력 a.c b.c cc.c // ls의 출력 # cat out.txt /user/james // pwd만이 리다이렉트 됨 # (date; ls; pwd) > out.txt // 그룹으로 묶고 리다이렉트 실행 # cat out.txt // 모든 출력이 리다이렉트 됨 1999년 5월 24일 월요일 오후 12시 19분 01초 a.c b.c cc.c /user/james # _

88 3. 유닉스 쉘 (계속) 후면 처리(Background Processing)
명령어 뒤에 ‘&’ 붙임으로써 서브 쉘을 생성하여 후면처리로 실행한다. 키보드 입력을 요구하지 않는 한, 여러 개의 작업을 동시에 수행하는데 매우 유용하다 ( 멀티 태스킹 시스템). # date & pwd & //date의 프로세스 번호 //pwd의 프로세스 번호 1999년 5월 24일 월요일 오후 12시 43분 03초 //date의 출력 /user/james //pwd의 출력 # _

89 3. 유닉스 쉘 (계속) 후면 프로세스의 리다이렉션
후면 프로세서의 출력이 자신의 터미널에 도착하는 것을 방지하기 위해서 출력을 파일에 리다이렉션 한다. # find name a.c -print > find.txt & // 후면 프로세서의 생성 // find 의 프로세서 id # ls -l find.txt -rw-r-- r-- 1 james Feb :11 find.txt # ls -l find.txt // 파일의 크기가 커짐 -rw-r-- r-- 1 james Feb :11 find.txt # cat find.txt ./wild/a.c ./reverse/tmp/a.c # _

90 3. 유닉스 쉘 (계속) 쉘 프로그램 일련의 명령어들로 이루어진 실행 파일 쉘의 선택
커널은 스크립트가 어떤 쉘을 대상으로 작성되었는지를 파일의 첫번째 줄에서 결정하고, 그 후에 그 스크립트를 표준 입력으로 사용하여 쉘을 실행한다. #! /bin/ksh korn쉘에 의해 해석된다 #! /bin/sh bourne쉘에 의해 해석된다 #, #! /bin/csh C쉘에 의해 해석된다 의 미

91 3. 유닉스 쉘 (계속) # cat > ex_sh # this is a example //c쉘로 해석
echo hi // hi를 표준 출력 date // 현재 날짜출력 ^D // 입력의 끝 # chmod +x ex_sh // ex_sh파일에 실행 허가권 부여 # ex_sh hi 1999년 3월 10일 수요일 오후 07시 08분 40초 # _

92 3. 유닉스 쉘 (계속) 서브 쉘(Subshell) 서브 쉘 생성이 필요한 환경 로그인 시, 유닉스는 초기 로그인 쉘을 제공
입력된 단순 명령들은 초기 쉘에 의해 실행 현재(부모) 쉘이 어떤 작업을 수행 시, 자식 쉘을 생성할 필요가 있다. 서브 쉘 생성이 필요한 환경 그룹 명령어 실행 시 스크립트내의 명령어 실행 시 후면 작업 실행 시

93 3. 유닉스 쉘 (계속) 부모 쉘로부터의 변수상속 모든 쉘은 환경변수와 지역변수를 가진다.
자식 쉘은 부모 쉘의 환경변수 복사본을 얻는다. 자식 쉘은 부모 쉘의 지역변수 복사본을 얻지 않고, 초기화된 지역 변수를 갖는다. 부모 쉘 자식 쉘 환경변수 환경변수 부모로부터 복사 지역변수 지역변수 초기화

94 3. 유닉스 쉘 (계속) # pwd // 로그인 쉘의 현재 작업 디렉토리를 표시 /usr/james
# (cd / ; pwd) // 서브 쉘 이동 후 pwd 실행 / // 서브 쉘로부터의 출력 # pwd # _

95 3. 유닉스 쉘 (계속) 변수 서브 쉘은 부모 쉘의 환경 변수의 복사본을 얻지만 지역 변수에 대한 복사본은 얻지 않는다. 주요 환경 변수 목록 이 름 의 미 $HOME 홈 디렉토리의 절대 경로 이름 $PATH 명령어를 탐색할 디렉토리 목록 $MAIL 우편함의 절대 경로 이름 $USER 사용자 ID $SHELL 로그인 쉘의 절대 경로 이름 $TERM 터미널 유형

96 3. 유닉스 쉘 (계속) 환경 변수 목록 보기: env # env HOME=/user/james
PATH=/bin:/usr/bin:/usr/ucb:/etc:. LOGNAME=james HZ=100 TZ=ROK SHELL=/bin/csh MAIL=/var/mail/james LANG=ko TERM=ansi PWD=/user/james USER=james # _

97 3. 유닉스 쉘 (계속) 변수 할당 Bourne 쉘과 Korn 쉘 VariableName = Value C 쉘
set VariableName = Value # set firstname = Graham // 지역 변수 설정 # set lastname = glass // 또 다른 지역 변수 설정 # echo $firstname $lastname // 변수들의 값 표시 Graham glass # _

98 3. 유닉스 쉘 (계속) 특별한 의미를 갖는 내장변수 이 름 $$ $0 $1..$9 $* 의 미 쉘의 프로세스 id
의 미 쉘의 프로세스 id 쉘 스크립트의 이름 $n은 명령어 줄의 n번째 인수를 나타냄 모든 명령 줄 인스의 목록

99 3. 유닉스 쉘 (계속) # cat > script.csh // 스크립트 파일 생성
# this is a sample C shell script // C쉘에 의해 해석 echo the name of this script is $ // 쉘 스크립트 이름 출력 echo the first argument is $ // 명령어 줄의 첫번째 인수 출력 echo a list of all the arguments is $* // 모든 명령 줄 인수의 목록 출력 ^C # chmod +x script.csh // 실행 허가권 부여 # script.csh james glass june the name of this script is script.csh the first argument is james a list of all the arguments is james glass june # _

100 3. 유닉스 쉘 (계속) 작업 제어 프로세서 상태 ps -aefptu -a :모든 사용자의 프로세스목록을 출력한다.
-f :프로세스 시작 시간, 프로세스의 부모 ID, 그 프로세스에 관련된 사용자 ID, 명령 이름과 가능한 매개변수(있다면) 등 모든 정보를 출력한다. -p pid :지정된 프로세스에 대한 정보를 출력한다. -t tty :지정된 터미널에 연관된 프로세스에 대한 정보를 출력한다. -u uid :지정된 사용자에 연관된 프로세스에 대한 정보를 출력한다.

101 3. 유닉스 쉘 (계속) # ps -u // 사용자 지향적 출력 요청
USER PID %CPU %MEM SZ RSS TT S START TIME COMMAND s pts/10 S 16:06:45 0: csh # ps -a // 모든 사용자의 프로세서를 표시 PID TT S TIME COMMAND console S 0: /usr/lib/saf/ttymon -g -h -p ce console login: -T sun pts/ S 0: [ sdt_shell ] pts/ S 0: [ csh ] pts/ S 0: /usr/dt/bin/dtsession pts/ S 0: /bin/csh pts/ S 0: /bin/csh pts/ S 0: csh pts/10 S 0: csh pts/10 O 0: ps -a pts/12 S 0: csh # _

102 3. 유닉스 쉘 (계속) 프로세스의 강제종료: kill 번호가 부여된 프로세스들의 목록에 signalID라는 코드를 가진 신호
을 보낸다. kill [-signalID] {pID} kill -l signalID: 디폴트는 TERM신호(signal)로써, 프로세서를 종료 시킨다. -l : 모든 시그널 이름의 목록을 제공한다. # (sleep 10; echo done)& 2497 # kill 종료됨(Terminated) ( sleep 10; echo done ) # _

103 grep -hnlvwi patten {filename}
4. 유틸리티 파일 여과(File filtering) grep -hnlvwi patten {filename} - h: 화일 이름을 명시하지 않는다. - n: 줄 번호 표시 - l: 화일 목록 표시 - v: pattern과 일치하지 않는 줄을 보여 준다. - w: 전체 단어로써 비교한다. - i: patten의 대소문자 무시

104 4. 유틸리티(계속) # vi grepfile well you know it's your bedtime,
so turn off the light, say all your prayers and then, oh you sleepy young heads dream of wonderful things, beautiful mermaids will swim through the sea, and you will be swimming there too. :wq! # grep the grepfile // # grep -wn the grepfile 2:so turn off the light, 5:beautiful mermaids will swim through the sea, # _

105 4. 유틸리티(계속) 화일 정렬(File sort)
ASCII값으로 비교하여 정렬한다.( 공백 < 대문자 < 소문자) sort -t -r {sortfield -bfMn} {filename} -t: 항목 분리자를 명시하기 위해서 사용 -r: 내림차순으로 정렬 -b: 줄의 앞에 있는 공백을 무시 -f: 대소문자 무시 -M: 월(Month) 순으로 정렬 -n: 숫자 순으로 정렬

106 4. 유틸리티(계속) # sort -r sortfile # vi sortfile jan start chapter 3 10th
Jan end chapter 7 27 Mar start chapter 7 27 may end chapter 7 17th :wq! # sort sortfile # sort -r sortfile jan start chapter 3 10th Mar srart chapter 7 27 Jan start chapter 1 30th may end chapter 7 17th Jan srart chapter 1 23th Jan end chapter 7 27

107 cmp -ls filename1 filename2
4. 유틸리티(계속) 화일 비교 cmp 두개의 파일사이에 서로 다른 첫번째 바이트를 찾아낸다. cmp -ls filename1 filename2 -l: 일치하지 않는 모든 바이트에 대한 옵셋과 값을 보여 준다. -s: 모든 출력을 금지

108 4. 유틸리티(계속) # vi lady1 lady of the night, I hold you close to me,
and all those loving words you say are right. # vi lady2 and everything you say to me is right. # cmp lady1 lady2 lady1와 lady2는 다름: 문자 19, 행 1 # _

109 4. 유틸리티(계속) diff 두 파일을 비교하고, 그 차이를 출력한다. diff -i filename1 filename2
출력형태 정보 첨가(addition) diff -i filename1 filename2 -i : 줄들의 대소문자 무시 Firststart a SecondStart, SecondStop > 둘째 파일에서 첫째파일로 첨가될 줄

110 4. 유틸리티(계속) 삭제(Deletions) 변경(Change) FirstStart, FirstStop d lineCount
< 첫째 파일에서 제거될 줄 FirstStart, FirstStop c SecondStart, SecondStop <첫째 파일에서 치환될 줄 ---- >치환을 위해 사용될 둘째 파일의 줄

111 4. 유틸리티(계속) # vi lady1 lady of the night, I hold you close to me,
and all those loving words you say are right. # vi lady2 and everything you say to me is right. # diff lady1 lady2 3c3 <and all those loving words you say are right. --- >and everything you say to me is right. # _

112 tar -cfrtuvx% [tarfilename] filelist
4. 유틸리티(계속) 파일 압축: tar tar -cfrtuvx% [tarfilename] filelist -c: tar 형식의 파일을 생성한다. -f: 디폴트 이름을 변경할 수 있게 한다. -v: 긴 출력 정보제공 -t: 목차 제공 -r: 무조건 리스트된 파일을 보관 파일에 덧붙인다. -u: 이미 보관된 파일보다 더 최근의 파일을 덧붙인다. -x: 명명된 파일을 추출해 준다.

113 4. 유틸리티(계속) # ls // 현 디렉토리 목록 표시 test1 test2 test3 test4
# tar -cvf tarfile // 현 디렉토리 압축 a ./ 0K a ./test1 0K a ./test2 0K a ./test3 0K a ./test4 0K tarfile test1 test2 test3 test4 # tar -tvf tarfile // tarfile의 리스트 출력 drwxr-xr-x 9561/ 년 5월 25일 14:15 ./ -rw-r--r / 년 5월 25일 14:08 ./test1 -rw-r--r / 년 5월 25일 14:09 ./test2 -rw-r--r / 년 5월 25일 14:09 ./test3 -rw-r--r / 년 5월 25일 14:09 ./test4 # _

114 4. 유틸리티(계속) # tar -rvf tarfile insert_file //insert_file의 추가
a insert_file 0K # tar -tvf tarfile //tarfile목록 표시 drwxr-xr-x 9561/ 년 5월 25일 14:15 ./ -rw-r--r / 년 5월 25일 14:08 ./test1 -rw-r--r / 년 5월 25일 14:09 ./test2 -rw-r--r / 년 5월 25일 14:09 ./test3 -rw-r--r / 년 5월 25일 14:09 ./test4 -rw-r--r / 년 5월 25일 14:22 insert_file # tar -xvf tarfile // 현재 디렉토리로 추출 x ., 0 bytes, 0 tape blocks x ./test1, 0 bytes, 0 테이프 블럭 x ./test2, 0 bytes, 0 테이프 블럭 x ./test3, 0 bytes, 0 테이프 블럭 x ./test4, 0 bytes, 0 테이프 블록 x insert_file, 0 bytes, 0 테이프 블럭 # _

115 find pathlist expression
4. 유틸리티(계속) 화일 탐색:find find pathlist expression pathlist: 경로명 expression: -name pattern -user userID -g groupID -atime count -mtime count -print 값 / 동작 파일의 이름이 pattern과 일치하면 참 파일의 소유자가 userID이면 참 파일의 그룹이 groupID이면 참 파일이 count 날 수 이내에 접근되었으면 참 파일의 내용이 count 날 수 이내에 수정되었고, 속성이 바뀌었으면 참 현재 파일명을 출력하고 참값을 반환

116 4. 유틸리티(계속) # ls //현재 디렉토리 내용 표시 a.c b.c test.c test1 test2
# find . -name '*.c' -print //*.c에 해당되는 파일을 현재의 디렉토리 ./a.c //부터 재귀적으로 탐색하여 출력 ./b.c ./test.c # _

117 4. 유틸리티(계속) 명령 스케줄링 -l: crontab 파일에 등록된 내용 표시 주기적인 실행: cron/ crontab
일련의 작업이 주기적으로 수행되도록 스케줄 한다. crontab crontabname crontab -ler [username] -l: crontab 파일에 등록된 내용 표시 -e: 등록된 crontab 파일을 편집 -r: 등록된 파일을 해제

118 4. 유틸리티(계속) # vi cronfile * * 1 echo happy today // 분, 시, 일, 월, 주 순서 :wq! # crontab cronfile // cornfile의 등록 # crontab -l // 등록된 crontab 파일의 내용 표시 * * 1 echo happy today # crontab -r // 등록 해제 # crontab -l # _

119 4. 유틸리티(계속) 프로그램 가능한 텍스트처리: awk 구조 하나 이상의 파일을 스캔 하여 특정한 조건에 맞는 모든 줄을
대상으로 정의된 동작을 실행한다. 구조 awk ‘pattern {action} pattern {action} …… ‘ filenames awk -f pattern-action-file filenames pattern-action-file: awk 실행 action을 가진 프로그램 파일

120 4. 유틸리티(계속) Pattern BEGIN 또는 END 논리 연산자, 관계 연산자 또는 정규식을 포함하는 식 action
if - else 문장 while 문장 for 문장 break continue 변수 = 연산식

121 4. 유틸리티(계속) 미리 정의된 변수 printf 형식[, 연산식의 리스트] [> 연산식]
next (현재 입력 줄에 남은 패턴을 건너뛴다) exit (현재 줄의 나머지는 건너뛴다) {문장의 리스트} 변 수 FILENAME FS NR NF OFS 내 용 현재 처리되고 있는 입력 파일의 이름 입력 필드 분리 문자 현재 레코드(행)의 번호 현재 레코드(행)의 필드의 갯수 출력되는 필드의 분리 문자

122 4. 유틸리티(계속) # awk '$2 > 90 {print $1}' exam // 점수가 90이상인 과목 출력
# vi exam Math 81 English 90 computer 75 chemistry 95 ethics 60 physics 86 :wq! # awk '$2 > 90 {print $1}' exam // 점수가 90이상인 과목 출력 chemistry # _

123 4. 유틸리티(계속) //평균값 계산 # vi average {sum += $2}
END {printf "The average is %.2f\n", sum/NR} # awk -f average exam The average is 69.57 # _

124 ln -sf original [newlink] ln -sf {original} directory
4. 유틸리티(계속) 하드 링크와 소프트 링크: ln ln -sf original [newlink] ln -sf {original} directory -s: 심볼릭 링크를 생성 -f: 수퍼유저가 디렉토리에 하드링크를 생성할 수 있게 한다. # ls -l heart -rw-r--r james netwk 월 16일 14:25 heart # ln -s heart heart_sln // 심볼릭 링크 # ls -l -rw-r--r james netwk 월 16일 14:25 heart lrwxrwxrwx james netwk 월 27일 11:05 heart_sln -> heart

125 4. 유틸리티(계속) # ls heart heart1 heart2 # ls -l
-rw-r--r james netwk 월 16일 14:25 heart -rw-r--r james netwk 월 27일 11:19 heart1 -rw-r--r james netwk 월 27일 11:19 heart2 # mkdir tmp # ln heart* tmp //하드 링크 # cd tmp # ls -l -rw-r--r james netwk 월 16일 14:25 heart -rw-r--r james netwk 월 27일 11:19 heart1 -rw-r--r james netwk 월 27일 11:19 heart2 # _

126 4. 유틸리티(계속) 사용자 대치: su 다른 사용자가 소유하는 서브 쉘을 생성할 수 있게 한다. su [ username]
username의 디폴트는 root이다. 본래의 쉘로 다시 되돌아 오기 위해서는 Control-D를 입력한다. # whoami james # su password: #root # __

127 4. 유틸리티(계속) 화일변환 화일 압축: compress/ uncompress compress -cv {filename}
uncompress -cv {filename} .Z 접미사가 붙는다. -c: 표준 출력으로 내보낸다. -v: 압축정보 제공

128 4. 유틸리티(계속) # compress -v misc.c main.c // 압축 수행
misc.c: 압축: 39.53% -- misc.c.Z로 대체됨 main.c: 압축: 55.46% -- main.c.Z로 대체됨 # ls -l -rw-rw-rw- 1 extra netwk 월 13일 14:28 main.c.Z -rw-rw-rw- 1 extra netwk 월 13일 14:28 misc.c.Z # uncompress -v *.Z // 원래 파일로 다시 복원, compress -d도 가능 main.c.Z: -- main.c로 대체됨 misc.c.Z: -- misc.c로 대체됨 # ls -l -rw-rw-rw- 1 extra netwk 월 13일 14:28 main.c -rw-rw-rw- 1 extra netwk 월 13일 14:28 misc.c # _

129 \215 lu4f^S\270^B{)^N'Q^W\232;:\312^FSb\276^T
4. 유틸리티(계속) 파일 암호화: crypt key를 이용해서 정규 텍스트를 암호화된 텍스트출력 key를 이용해서 암호화된 텍스트를 정규 텍스트로 출력 crypt [key] # vi cryptfile this is a very important :wq! # crypt secret <cryptfile> sample.crypt # cat sample.crypt \ lu4f^S\270^B{)^N'Q^W\232;:\312^FSb\276^T # rm cryptfile # crypt secret <sample.crypt> cryptfile # cat cryptfile # _

130 4. 유틸리티(계속) 파일 시스템 마운트: mount / umount
장치의 파일 시스템을 루트 계층 구조로 결합 시킬 수 있게 한다. 수퍼 유저만이 마운트 할 수 있다. 인수 없이 mount를 사용하면 현재 마운트된 장치의 목록을 제공. mount -o options [devicename] [directory] umount devicename options: rw은 읽기/쓰기로 마운트, ro는 읽기 전용으로 마운트

131 4. 유틸리티(계속) # mount // 현재 마운트된 장치 표시 /dev/dsk1 on (rw)
# ls /usr // /usr는 현재 비어 있음 # mount /dev/dsk2 /usr // /dev/dsk2 장치를 마운트 # mount // 현재 마운트된 장치 표시 /dev/dsk1 on / (rw) /dev/dsk2 on /usr (rw) # ls /usr // 마운트된 장치의 내용 표시 bin/ etc/ include/ lost+found/ src/ ucb/ demo/ games/ lib/ pub/ sys/ ucblib/ # _

132 4. 유틸리티(계속) # umount /dev/dsk2 // 장치를 마운트 해제 # mount // 현재 마운트된 장치 표시
/dev/dsk1 on (rw) # ls /usr // /usr가 다시 비어 있음 # _

133 4. 유틸리티(계속) 쉘의 소유자 확인: whoami 터미널 확인: tty whoami # whoami james # _
/dev/pts/6 # _

134 5. 네트워킹 사용자 표시 : users/ rusers/who/w users 지역 호스트 상에 있는 사용자의 간단한 목록 표시
james glass root rusers -a [host] 지역 네트워크상에 사용자 목록 표시 # rusers Sending broadcast for rusersd protocol version 3... netwk.hannam.ac. root neuro.hannam.ac. Jiho # _

135 5. 네트워킹(계속) who [am i] w {userID} who와 거의 동일하며, who보다 더 많은 정보를 출력한다.
지역 호스트상에 있는 사용자의 보다 더 많은 정보 출력한다. am i: 사용자 자신의 정보 표시 # who root console 월 22 13:56 (:0) james pts/ 월 29 16:39 (ce.hannam.ac.kr) glass pts/ 월 28 18:31 (netwk.hannam.ac.kr) # _ w {userID} who와 거의 동일하며, who보다 더 많은 정보를 출력한다.

136 5. 네트워킹(계속) 위치 정보: whois whois [-h hostname] id
# whois ce Aborting search 50 records found ..... CE (ZINKA-DOM) ZINKA.COM CE & P (SARAM3-DOM) SARAM.COM CE Alliance (CREDITCARDACCEPT-DOM) CREDITCARDACCEPT.COM CE Alliance (CREDITCARDMLM-DOM) CREDITCARDMLM.COM CE Associates (INCREMEDICAL-DOM) INCREMEDICAL.COM ……………. # _

137 5. 네트워킹(계속) 자신의 호스트 이름: hostname hostname 지역 호스트 정보를 출력 # hostname
netwk # _

138 5. 네트워킹(계속) 개인 자료: finger 사용자의 홈 디렉토리, 시작 쉘, 그리고 절대 경로 이름은 패스워드파일인 /etc/passwd로 부터 읽혀진다. userID가 생략되면, finger는 현재 로그인 되어 있는 모든 사용자들에 관한 정보를 제공한다. finger {userID} # finger Login Name TTY Idle When Where root Super-User console : Sat 22:38 :0 root Super-User pts/ : Sat 22:39 root Super-User pts/ : Sat 22:39 james kang Dong Ho pts/ Sun 16:15 james.hannam.ac.kr #

139 5. 네트워킹(계속) # finger james
Login name: james In real life: Kang Dong Ho Directory: /user/james Shell: /bin/csh On since May :00:47 on ttyp2 from netwk.hannam.ac.kr No unread mail # _

140 5. 네트워킹(계속) 사용자들과 통신 통신으로부터 보호: mesg 다른 사용자가 자신의 터미널을 사용하는 것을 막을 수 있다.
mesg [n | y] # mesg n // james 자신의 터미널을 보호 # write james // 다른 사용자가 james에게 write을 시도 wirte: you have wirte permission turned off # _

141 5. 네트워킹(계속) 한번에 한 줄 전송: write write userID # _
Message from on ttyp2 at 18:04 hi! James // glass가 보낸 메시지 # wirte glass hi! Glass // James가 보낸 메시지 ^D // 종료 #_

142 5. 네트워킹(계속) 대화형 통신: talk talk userID # talk james
[호출한 사람의 기기에서 초청 확인중] // 상대방(james)의 화면 Message from talk: connection requested by talk: respond with: talk # talk glass // glass와의 대화를 승인 // 화면은 두 부분을 나누어 서로가 입력한 내용을 출력해 준다.

143 5. 네트워킹(계속) 모든 사용자에게 메시지 전송: wall wall [filename]
로컬 호스트의 모든 사용자에게 메시지를 전송 # wall this is a test of the broadcast system Broadcast Message from james(pts/5) on netwk 일 5월 30 17:37:26... this is a test of the broadcast system # _

144 5. 네트워킹(계속) 파일 전송 프로토콜: ftp ftp -n [hostname] hostname 입력 시
사용자ID와 패스워드 입력을 요구한다. 로그인 성공후, ‘ftp>’라는 프롬프트가 출력된다. hostname 미 입력 시 명령모드로 들어가 원격호스트에 연결하기 위해 open 명령을 사용 한다. ftp -n [hostname] -n: ftp가 초기 자동 로그인 순서를 진행하는 것을 방지한다.

145 5. 네트워킹(계속) 명령 모드에서 유효한 명령 명 령 의 미 !command bye cd remoteD close
delete remoteF get remoteF [localF] help [command] lcd localD 의 미 지역 호스트상에서 command 실행 현재 원격 호스트 연결을 폐쇄하고 ftp 종료 현재의 원격 작업 디렉토리를 remoteD로 변경 현재의 원격 호스트 연결을 폐쇄 원격 호스트로부터 remoteF을 삭제 원격 파일인 remoteF를 지역파일 localF로 복사 Command에 대한 도움말 표시 현재 지역 작업 디렉토리를 localD로 변경

146 5. 네트워킹(계속) 명 령 의 미 ls remoteD mkdir remoteD open hostN [port]
put localF [romoteF] pwd quit rename A B rmdir remoteD 의 미 현재 사용중인 원격 작업 디렉토리의 내용 표시 원격 호스트상에 remoteD 생성 hostN이라는 호스트에 연결 시도 로컬 파일인 localF를 원격 파일인 remoteF로 복사 현재 작업중인 작업 디렉토리 표시 bye와 같음 원격 파일이름을 A에서 B로 변경 원격 작업 디렉토리인 remoteD를 삭제

147 5. 네트워킹(계속) # ftp netwk //netwk에 ftp연결 시도
Connected to netwk.hannam.ac.kr. 220 netwk FTP server (UNIX(r) System V Release 4.0) ready. Name (netwk:glass): glass // 로그인 331 Password required for glass. Password: // 패스워드 입력 230 User glass logged in. ftp> ls // 원격 호스트의 디렉토리 목록 얻기 test util 226 ASCII Transfer complete. 326 bytes received in seconds (7.3 Kbytes/s) ftp> !ls // 지역 호스트의 디렉토리 목록 얻기 doc sample

148 5. 네트워킹(계속) ftp> put sample // 파일을 원격 호스트에 복사
200 PORT command successful. 150 ASCII data connection for sample( ,32788). 226 Transfer complete. ftp> ls test util sample 226 ASCII Transfer complete. 326 bytes received in seconds (7.3 Kbytes/s) ftp> quit // 연결 종료 221 Goodbye. # _

149 5. 네트워킹(계속) 원격 연결: telnet 명령모드에서 사용 가능한 명령어 telnet [hostname [port] ]
host를 지정하지 않거나, control-]를 입력하면 명령모드로 들어간다. 명 령 ? close open host [port] quit z 메 시 지 telnet 명령들의 요약을 출력 현재의 연결을 폐쇄 지정 port로 host에 연결 telnet을 중단 telnet을 일시 중단

150 5. 네트워킹(계속) # telnet telnet> ? // 도움말 얻기
Commands may be abbreviated. Commands are: close close current connection logout forcibly logout remote user and close the connection display display operating parameters mode try to enter line or character mode ('mode ?' for more) …………………………………… z suspend telnet ! invoke a subshell environ change environment variables ('environ ?' for more) ? print help information telnet>

151 5. 네트워킹(계속) # telnet ce // ce에 접속 시도 SunOS 5.6 login: james Password:
Last login: Sun Jul 18 21:47:49 from extra.hannam.ac.kr Sun Microsystems Inc. SunOS Generic August 1997 # _

152 5. 네트워킹(계속) Archie : 네트워크에 광범위하게 분산된 데이터 집합들에 대한
사전 검색과 색인 기능 제공 ( Anonymous FTP 자원 검색 ) 연 결 접속과정에서 Login ID를 물어 오면 ‘archie’를 입력한다. # telnet Archie_Server_address

153 5. 네트워킹(계속) # telnet archie.sogang.ac.kr // archie서버에 접속 시도
Trying Connected to ccsun1.sogang.ac.kr. Escape character is '^]'. UNIX(r) System V Release 4.0 login: archie // archie로 ID 입력 Bunyip Information Systems, Inc., 1993, 1994, 1995 Terminal type set to `ansi 24 80'. `erase' character is `^H'. `search' (type string) has the value `sub'. archie> _

154 5. 네트워킹(계속) Archie 명령어 명령어 의 미 quit 접속 종료 help command
의 미 quit 접속 종료 help command 지정된 명령어에 대한 도움말 표시 set variable [value] 변수 설정 unset variable 현재 설정된 모든 변수 출력 list [pattern] 사이트 목록 표시 mail [address] 마지막 검색 결과를 우편으로 전송 find pattern 지정된 pattern의 이름을 포함한 파일 찾기 prog pattern find 와 동일 기능 site [site] 지정한 사이트에 있는 파일 목록 표시 whatis pattern 지정한 패턴으로 whatis 데이터 베이스 검색

155 5. 네트워킹(계속) archie> prog computer //computer라는 이름을 포함하는 파일 찾기
Host ftp.risq.qc.ca ( ) Last updated 04:11 21 Dec 1998 Location: /pub/ca-domain/registrations-flat FILE -rw-r--r bytes 23:34 5 Nov ca.sk.surge2000-computers archie> quit


Download ppt "UNIX 이 재 광 한남대학교 컴퓨터공학과."

Similar presentations


Ads by Google