UNIX란?
UNIX는 일종의 운영체제(Operating System)
Window, UNIX 모두 운영체제이지만 사용법이 다르지.
운영체제는 소프트웨어라고 할 수 있다.
다른 소프트웨어와 달리 운영체제는 시스템을 동작시키는데 핵심적이고 기본적인 것이다.
컴퓨터 시스템의 계층 구조
computer hardware > operating system kernel > system call (API) > libraries (API) > shell, commands, applications (UI) UNIX라는 그 말은 kernel 위에서 동작하는 여러 유틸리티를 포괄적으로 이른다고 말할 수 있다.
최종적으로 사용자가 사용하는건 shell, commands, applications 이것들을 사용하는 것을 배우는 것.
1주차
UNIX란 Operating System
좁은 의미로는 Only Kernel 넓은 의미로는 Kernel and Utilities
하드웨어 > 커널 > 쉘 > 유틸리티
커널 : 컴퓨터 자원 관리 –메모리, 파일 시스템, 장치 관리
쉘 : 사용자 인터페이스 제공, 사용자의 명령을 입력받아 처리한 후 결과를 출력
유틸리티 : 각종 프로그래밍 개발 도구, 문서 편집도구 등
UNIX의 특징
1. 이식성 : 높다. 다른 기계에서도 사용 가능 (대부분 c언어로 작성 되었기 때문)
2. 멀티 유저 환경 : 동시에 작업 가능 (timesharing 기법, interactive)
3. 멀티 태스킹 : 한 사용자가 여러개의 태스크를 사용할 수 있다.
4. 개방형 소프트웨어 : 소스가 공개되어 있다.
5. 풍부한 유틸리티 : 굉장히 많은 유틸리티가 제공
6. 파일 시스템 : 트리 구조로 구성
7. 장치 독립성
UNIX의 철학
작은 유틸리티들을 모아서 새로운 기능이나 조금 더 복잡한 기능을 사용자가 직접 조합해서 만들 수 있다. UNIX는 단순한 유틸리티들을 제공
UNIX의 기원
1969년 DEC사의 PDP-7에 탑재됨. Ken Thompson에 의해 탑재됨. Time-sharing, interactive system(대화형 시스템)
1973년 Kernel이 c언어로 재작성됨. Ken Thompson 과 Dennis Ritchie에 의해서.
Multics에 말장난 형태인 UNIX
Shell의 종류 Bourne, C, Korn, Bash(우리가 사용할 shell), tcsh
shell prmpt : %, $, >
UNIX는 대문자와 소문자를 구별한다. 전혀 다른 명령이 될 수 있다.
▪Erase the previous character • [Backspace] • [Ctrl]-[H] ▪Erase the entire current line [Ctrl]-[U]
▪Terminate the current command [Ctrl]-[C] ▪Stop scrolling of output on the screen [Ctrl]-[S]
▪Restart scrolling of output on the screen [Ctrl]-[Q] ▪ passwd change password ▪ logout log out ▪ date display current date and time
▪ who display a list of log-in users ▪ w similar to who
▪ whoami display the current log-in user ▪ echo $SHELL display running shell
▪ hostname display the name of the host computer ▪ uname display info. about OS
mailx/mail (사용자이름) : 내용 입력후 crtl+D로 보냄.
write userid : 내용 입력후 crtl+D로 나가기
man (알고싶은 명령) : 매뉴얼이 나온다.
whereis : 소스의 위치를 찾아준다.
which : 커맨드가 저장되어 있는 위치의 경로를 알려준다.
2주차
파일 : 바이트들의 나열
파일 이름 : 어떠한 제약 조건 없다.(특수문자가능. /와NULL은 제외), 대소문자를 구별한다.
파일 이름에 확장자를 붙인다고 해도 어떠한 의미로도 해석되지 않는다.
명령 이름을 파일 이름으로 사용할 수 있지만 혼란이 있을수 있다.
/는 root 최상의 디렉토리 그 밑에 여러 디렉토리들이 있다.
파일의 종류
보통 파일 : 일반 사용자 소유, Text file (문자가 담긴) vs. binary file(알아 먹을 수 없음)
디렉토리 파일 : 파일 목록
특수 파일 : I/O장치들, 특수 파일에 대한 읽기/쓰기는 해당 I/O 장치에 대한 읽기/쓰기와 동일
사용자로 하여금 I/O의 세부 사항을 알 필요 없이 파일개념으로 사용할 수 있게 해 줌.
경로의 지정
/ : root 디렉토리(최상위 디렉토리를 의미)
. : 현재 디렉토리
.. : 상위 디렉토리
~ OR $HOME : 홈디렉토리 : 각 사용자 계정마다 부여
절대 경로 : 전체 경로명 /home/faculty/jhkim/.logout
상대 경로 : . 또는 .. 으로 시작 ./.bash 나 ../../etc/passwd 등등
디렉토리 이동 및 확인
cd 이동하고자 하는 디렉토리
pwd : 현재 작업중인 디렉토리 출력
파일 목록 보기
ls
ls –a : list all
ls –F : 파일의 형태를 파악할 수 있다. /는 디렉토리 *는 실행파일 @는 심볼릭 링크가 있는
ls –l : 긴형태로 자세히 볼 수 있다.
date 명령은 현재 시간을 출력하는데 +%Y와 같은 형태로 형식을 정할 수 있다.
cat : 파일의 내용을 볼 수 있다.
more : 긴 파일 내용을 볼 때 쓰인다. 스페이스바로 다음 페이지로, 한줄씩은 엔터, 빠져나가고자 하면 Q 사용.
od(octal dump) : 파일을 8진수 형태로 볼 수 있다.
파일 복사 및 이름 변경
cp /복사할 파일 /복사할위치 나 변경할 이름 : -i 옵션은 덮어씌울것인지 묻는다.
mv /소스파일 /타겟파일 이름또는 경로 : -i 옵션은 덮어씌울것인지 묻는다. -f 는 묻지 않고 실행
rm /파일 이름 : 파일 삭제 –f 옵션은 묻지 않고 삭제, -i는 물어봄, -r 현재디렉토리와 하위디렉토리 전부 삭제.
mkdir /디렉토리 이름 : 디렉토리 생성
rmdir /디렉토리 이름 : 디렉토리 삭제
3주차
vi 편집기를 사용하기전 터미널 종류를 확인 $echo $TERM 만일 vt100, xterm이 아닌 경우 %TERM=xterm 명령 후 시작
시작 : vi /파일이름
끝 : • :q [enter] (종료 - 갱신된 내용이 이미 저장되었을 때)
• :q! [enter] (종료 - 갱신된 내용이 저장되지 않았음에도 불구하고) • ZZ (저장 후 종료)
• :x [enter] (저장 후 종료) • :wq [enter] (저장 후 종료)
vi의 3가지 모드
명령 모드 : 입력하는 문자는 vi에 내려지는 명령이 된다.
입력 모드 : 입력하는 문자는 파일의 내용이 된다.
• i 현재 커서 위치에서 시작 (input) • a 현재 커서 위치 다음부터 시작 (append)
• o 현재 줄 아래에 새로운 줄을 삽입하고 시작 • O 현재 줄 위에 새로운 줄을 삽입하고 시작
라인에디팅 모드 : :키로 들어간다.
저장: • :w 현재 파일 이름으로 저장 • :w /파일이름 다른 이름으로 저장
지우기 (vi 모드에서) • x 현재 커서 위치의 1문자 삭제 • dd 현재 커서 위치의 1줄 삭제
vi 사용법 고급
▪ 삭제 – ndd 여러줄 삭제, dw는 단어 삭제
▪ 교체 – r 입력후 교체할 문자 입력, cw는 1단어 교체
▪ 이동 - :n /enter 는 n번째 줄로 이동 (:se nu 는 줄번호 표시)
한 화면 앞으로 ctrl-F 뒤로는 ctrl-B 줄 처음은 0 끝은 $ 단어단위로 이동은 w
▪ 복사/붙이기 (Copy and Paste) - yy, p
▪ 잘라내기/붙이기 (Cut and Paste) - dd, p
▪ 복구(undo) - u / 반복(redo) - .
▪ 찾기(Find) - / 특정 문자나 문자열 후 엔터 다음 찾기는 n
▪ 찾기/교체 (Find and Substitute) - 현재 줄에서 찾은 처음 것 교체 - :s/reg-exp/string
현재 줄에서 찾은 것 전부 교체 - :s/reg-exp/string/g
파일 전체에서 찾은 것 전부 교체 - :1,$s/reg-exp/string/g
4주차
SHELL이란
일종의 프로그램
명령어 해석기 역할 –1.프롬프트($)출력 2. 명령어 입력 대기 3. 사용자 –명령어 입력 4. 명령어 실행
SHELL의 종류
• Bourne Shell - sh; script로 많이 사용 • Korn Shell – ksh
• C Shell - csh, tcsh ; 사용자로 환경으로 인기 • Bourne Again Shell – bash
사용자는 SHELL을 통해서 명령을 실행시킴
▪ sh - Bourne shell (Steve Bourne) (프롬프트 문자 : $)
• 가장 오래된 shell. 대부분의 UNIX 시스템에서 이용 가능.
• shell programming 또는 command file에 많이 이용.
▪ csh - C shell (Berkeley에서 Bill Joy) (프롬프트 문자 : %)
• 대화형 사용으로 가장 인기 있는 shell. • job control과 history 기능 (Bourne shell에는 없다).
• shell programming에는 문제 있다고 알려져 있음.
▪ ksh - Korn shell (David Korn) (프롬프트 문자 : $)
• Bourne shell 과 호환. • C shell 기능들 수용. • history editing 기능 (C shell에는 없다).
▪ bash - “Bourne-again” shell (Free Software Foundation) (프롬프트 문자 : $)
• Korn shell과 유사. • 많은 C shell 기능들 포함. • history editing, 내장 help 명령
▪ tcsh - C shell 확장 버전 (프롬프트 문자 : $)
• original C shell처럼 동작. • 더 많은 기능들 포함.
echo : 지정한 문자열 출력
[!]는 나열된 문자열을 제외한 문자와 매치(!대신 ^사용 가능)
Escaping 백슬래쉬 \문자를 메타문자 앞에 붙인다.
Quoting(인용부호 사용) 위에 참고.
'학교 수업 > UNIX' 카테고리의 다른 글
[UNIX] SHELL (0) | 2021.12.22 |
---|