unix vi editorcontents.kocw.net/kocw/document/2014/dongguk/choyoungsuk...unix 명령어...
TRANSCRIPT
1차시: UNIX vi editor
• 프로그래밍 및 실험
• 제 1주
• 동국대학교 조영석
이 문서는 나눔글꼴로 작성되었습니다. 설치하기
본 강의자료는 아래 명시한 교재를 사용한 강좌를 위해 작성되었으므로 2차시 이후의 자료는, 많은 부분이 교재의 내용과 같거나 유사하며, 부분적으로 보충을 위한 내용이 작성자에 의해 추가되었음. Kelly and Pohl, A Book on C, 4th ed., Addison-Wesley, 1998 번역본: 김명호 역 A Book on C, 홍릉과학출판사, 2000
UNIX – VI 문서 편집기
동국대학교 컴퓨터학과
목 차
유닉스(UNIX) 소개 및 특징
문서 편집기구조 및 종류
vi 문서 편집기
1. 유닉스 소개 및 특징
1.1 유닉스(UNIX) 소개
우리가 개인용 컴퓨터에서 MS-DOS(도스)나 WIN95를 운영체제로 사용하는 것처럼 웍스테이션에서는 멀티프로세싱과 멀티태스킹을 지원하는 유닉스라는 운영체제를 사용
1970년대 초 Bell연구소에서 처음 개발하였으며 도스도 유닉스를 본따서 만든 것 이라고 할 수 있음
유닉스는 프로세스관리, 메모리관리와 파일관리 등의 기능을 비롯하여 통신기능까지 제공하는 뛰어난 사용 인터페이스를 지원함
1. 유닉스 소개 및 특징(계속)
1.2 유닉스(UNIX) 특징
① 대화형시스템: 사용자가 명령을 내리면 시스템은 그 명령을 수행
하고 결과를 알려줌.
② 높은 이식성: C언어로 구성(80%)되어 있어 타기종에 이식이
용이함.
③ 멀티태스킹 시스템: 동시에 여러개의 프로세서 수행이 가능.
④ 멀티유저 시스템: 여러명의 사용자가 동시 사용이 가능.
⑤ 쉘 프로그래밍: 반복적이고 복잡한 명령어를 대화식으로 간단히
처리할 수 있음.
⑥ 계층적 파일시스템: 계층적 구조의 파일시스템 형태로 사용자가
그룹간의 디렉토리 및 파일을 효과적으로 운용
2. 문서 편집기구조 및 종류
디스크 버퍼
(임시 저장장소)
1. 편집기에서 파일 호출
2. 편집기에서 파일 수정
3. 파일 저장
Why ? 파일 내용을 잘못 수정한 경우 버퍼의 내용 무시 …. 작업 취소 기능 제공
2.1 문서편집기 구조
2. 문서 편집기구조 및 종류(계속)
2.2 UNIX 문서 편집기
줄 단위 데이터 편집기 (라인 편집기)
- ed
- ex
디스플레이 편집기 (화면 편집기)
- vi
- 모든 UNIX에 있음.
- emacs
- 막강한 기능 제공. 설치해서 사용해야 함.
3. vi 문서 편집기
3.1 정의
vi 문서 편집기란 터미널 모드에서 편집을 할 수 있게 해주는
일종에 에디팅 툴
윈도우, 윈도우용 에디터(예: 윈도우즈의경우 워드나 아래아 한글, 노트패드 등)가 없는 상태에서 텍스트 파일을 편집하기란 쉽지 않겠죠 ?
유닉스에서는 기본적으로 텍스트 파일을 에디팅 할 수 있도록 해주는 툴로 vi 문서 편집기를 지원함
3. vi 문서 편집기(계속)
3. vi 문서 편집기(계속)
3. vi 문서 편집기(계속)
3. vi 문서 편집기(계속)
3. vi 문서 편집기(계속)
3. vi 문서 편집기(계속)
3. vi 문서 편집기(계속)
3. vi 문서 편집기(계속)
3. vi 문서 편집기(계속)
3. vi 문서 편집기(계속)
3.2 사용법 3.2.1 유닉스 서버 접속, 로그인과 로그아웃
유닉스 서버 접속 실행( R ) -> 입력창에 telnet dalma.dongguk.ac.kr dalma 서버에 접속됨
로그인(login) 유닉스 서버 시스템에 접속하는 일 같은 사람이 동시에 여러 번 로그인 가능
로그아웃(logout) 서버의 접속을 중단하는 일 남겨 둔 작업이 있는지 확인 - accounting!
3. vi 문서 편집기(계속)
3.2.3 vi 모드
명령 모드 입력 모드
i,a,o,O,R
Esc 입력한 내용을 명령어로 해석
입력한 내용이 버퍼로 옮겨져 데이터가 추가, 수정됨
3. vi 문서 편집기(계속)
3.2.4 vi 시작하기
vi 새로운 파일 시작 파일 저장할 때 이름 지정
vi 파일_이름 지정한 이름이 없으면 새로운 파일 생성 지정한 이름이 있으면 기존 파일 열기
3. vi 문서 편집기(계속)
3.2.5 파일생성
UNIX 명령어 입력상에서 vi 를 입력한 후 생성/ 편집할 파일명을 붙여준다
EX) % vi hello.c vi가 실행되면 화면 상태가 아래와 같이 변경된다.
Vi 편집기에서 hello.c 파일 생성
3. vi 문서 편집기(계속)
3.2.5 파일생성
UNIX 명령어 입력상에서 vi 를 입력한 후 생성/ 편집할 파일명을 붙여준다
EX) % vi hello.c vi가 실행되면 화면 상태가 아래와 같이 변경된다.
Enter (실행)후 화면
3. vi 문서 편집기(계속)
3.2.6 데이터 입력 / 저장하기 데이터 입력 명령어 사용 데이터 저장 명령어
명령어 수행 작업
i 커서 앞에 삽입
a 커서 뒤에 삽입
명령어 수행 작업
:w ↵ 현재의 파일명으로 파일 저장
:w 파일명 ↵ 지정한 파일명으로 파일 저장
3. vi 문서 편집기(계속)
- 데이터 입력 키보드의 ESC를 누른 후 소문자 i 를 입력 다음과 같은 C 프로그램 코드 입력
3. vi 문서 편집기(계속)
- 데이터 저장
작성했던 문서를 파일로 저장한 후 종료하기
키보드의 Esc키를 누른 후 콜론(:), w, q를 입력한 후 엔터키 입력
3. vi 문서 편집기(계속)
3.2.7 실행하기(compile)
저장이 완료된 문서를 실행 가능한 파일로 변환
% gcc hello.c (실행 가능한 파일로 변환)
% a.out (변환된 파일 실행)
3. vi 문서 편집기(계속)
% gcc –o : 출력 화일명을 정하는 옵션 Ex1) % gcc –o hello hello.c Ex2) % gcc hello.c –o hello 순서 바꿔도 결과는 똑같이 나옴.. ./hello 로 실행.
C Program의 작성(정리)
vi sea.c /* c program을 sea.c에 편집*/
gcc sea.c /* c program compile */
a.out /* compile된 c program을 실행*/
move a.out sea /* 또는 mv a.out sea*/
gcc –o sea sea.c /* compile 결과를 sea에 저장 */
3. vi 문서 편집기(계속)
3.2.8 gcc 옵션
% gcc –v : 버전 알아보는 옵션
3. vi 문서 편집기(계속)
% gcc –c : 컴파일 작업 옵션 결과적으로 만들어진 파일은 hello.c에서 .c 부분을 떼어내고 .o를 붙인 화일. 오브젝트 화일 또는 목적 화일 이라고 함.
Ex) % gcc –c hello.c
3. vi 문서 편집기(계속)
Redirection(재지정) - a.out > FILENAME - 예제
출력을 result 파일에 저장 result 파일 보기
3. vi 문서 편집기(계속)
리다이렉션(Redirection) 출력 리다이렉션
- 프로세스의 출력을 파일에 저장할 수 있게 한다.
예)
command > filename // command의 표준 출력을 filename파일로 보낸다.
command >> filename //command의 표준 출력을 filename이라는 파일의 끝에 덧붙인다
3. vi 문서 편집기(계속)
리다이렉션(예)
# cat > text //파일의 생성 I remember walking in the rain, on a cold and dark September, ^D (ctrl+d) // 입력의 끝
text 파일 내 내용 입력
3. vi 문서 편집기(계속)
리다이렉션(예)
# cat > text //파일의 생성 I remember walking in the rain, on a cold and dark September, ^D (ctrl+d) // 입력의 끝
text 파일 생성
3. vi 문서 편집기(계속)
리다이렉션(예) # cat text // text파일 보기 I remember walking in the rain, on a cold and dark September,
text 파일 출력 화면
3. vi 문서 편집기(계속)
리다이렉션(예) # cat >> text //파일의 끝에 덧붙이기 brown Autumn leaves were falling softly to the ground. ^D (ctrl+d) // 입력의 끝 # cat text //text파일 보기
text 파일에 내용 덧붙이기
3. vi 문서 편집기(계속)
리다이렉션(예) # cat >> text //파일의 끝에 덧붙이기 brown Autumn leaves were falling softly to the ground. ^D (ctrl+d) // 입력의 끝 # cat text //text파일 보기
text 파일 내 최종 내용
Input/Output Redirection(재지정)
sea > outfile /* program sea의 출력을 outfile로*/
sea < infile /* program sea의 입력을 infile 에서*/
sea < infile > outfile /* 위의 작업을 한번에*/
3. vi 문서 편집기(계속)
3.2.9 vi 옵션
-r 정전등의 시스템 장애로 버퍼내의 파일이 손상될 경우 복구시킴 -R 읽기 전용으로 파일 열기 view 명령과 동일 + 파일 내용을 열때 파일의 마지막 부분만 화면에 출력 -c 지정한 명령을 수행한 후 편집 상태로 됨
3. vi 문서 편집기(계속)
3.2.10 파일 읽어오기
vi vi_test.txt
:r hello.c
:e hello.c
명령어 수 행
:r 파일명 지정한 파일을 현재 커서 위치에 삽입
:e 파일명 현재 파일 대신 지정한 파일을 읽는다
3. vi 문서 편집기(계속)
3.2.11 파일 이름관련 명령
cp /etc/services cursor.txt
vi cursor.txt
명령어 수 행
:f 파일명 파일 이름을 지정한 이름으로 변경
:w %.old 현재 파일을 .old 이름으로 저장해 둘 때
^G 기본 적인 파일 정보 출력
3. vi 문서 편집기(계속)
3.2.12 파일 편집하기 기존에 존재하는 파일 수정.
- 앞에 만들었던 파일 개방 ex) % vi hello.c 예를 들어 아래 줄에 hello C!! 문장을 삽입해보자.
3. vi 문서 편집기(계속)
- 편집된 문서 실행결과
3. vi 문서 편집기(계속)
파일에 텍스트 넣기
명령어 수행 작업
i 커서 앞에 삽입
a 커서 뒤에 삽입
I 현재 줄 첫 칸 앞에 텍스트 입력
A 현재 줄 끝에 텍스트 입력
o 현재 줄 다음에 삽입
O 현재 줄 앞에 삽입
3. vi 문서 편집기(계속)
편집하는 범위를 지정하는 방법 - “: 범위 편집_명령” 형태로 사용
범위 의 미
1,$ 첫 줄에서 마지막 줄까지(파일내의 모든 줄)
1,. 첫 줄에서 현재 줄까지
.,$ 현재 줄에서 마지막 줄까지
.-2 현재 줄에서 앞쪽으로 2번째 줄
10,20 10번째 줄에서 20번째 줄까지
3. vi 문서 편집기(계속)
데이터 삭제
명령어 삭제 대상 수행 작업
x 문자 커서 위치의 문자 삭제
dw 단어 커서 위치의 단어 삭제
dd 줄 커서 위치의 한 줄 삭제
D 줄의 일부 커서 위치부터 줄 끝까지 삭제
:<범위>d 블록 단위의 줄 지정한 블록 삭제
u 방금 수행한 명령 취소
3. vi 문서 편집기(계속)
텍스트 치환
키 치환 대상 수행 작업
r 문자 현재 커서위치의 한 문자 변경
R 문자열 현재 커서부터 ESC 입력까지 변경
cw 단어 커서 위치부터 현재 단어의 끝까지 내용 변경
cc 줄 커서가 위치한 줄의 내용 변경
C 줄 일부 커서 위치에서 줄 끝까지 내용 변경
숫자 치환_명령 : 치환 명령을 지정한 숫자 만큼 반복수행
3. vi 문서 편집기(계속)
패턴에 의한 치환 - 파일 내 특정 문자열을 다른 문자열로 변경하고자 할 때 사용
명령어 수행 작업
:s/문자열1/문자열2 커서가 위치한 줄에서만 문자열1을 문자열2로 바꿈
:<범위>s/문자열1/문자열2
<범위>안의 모든 줄에 대해서 각 줄의 첫번째 문자열1을 찾아 문자열2로 바꿈
:<범위>s/문자열1/문자열2/g
<범위>안의 모든 줄에 대해서 모든 문자열1을 문자열2로 바꿈
:<범위>s/문자열1/문자열2/gc
<범위>안의 모든 줄에 대해서 각 문자열1을 문자열2로 치환할 때 수정할지 안 할지를 묻는다
3. vi 문서 편집기(계속)
데이터 치환 예1)
3. vi 문서 편집기(계속)
텍스트 붙이기 - 버퍼
Vi는 작업 내용을 버퍼에 저장 – 실행 취소 가능
- 버퍼 종류 Unnamed buffer (이름 없는 버퍼) Named buffers (이름이 있는 버퍼) “a, “b, … “z Numbered buffers(번호가 있는 버퍼) “1, “2, …,“9
3. vi 문서 편집기(계속)
명령어 수행 작업
yy 현재 줄을 버퍼로 복사
p 현재 줄 다음에 버퍼 내용 삽입
:<범위>y <범위>의 모든 줄을 버퍼로 복사
:pu 현재 줄 다음에 버퍼 내용을 삽입
:npu N번째 줄 다음에 버퍼 내용을 삽입
“knyy 버퍼 “k로 n줄 만큼 복사
“kp 버퍼 “k의 내용을 현재 줄 다음에 삽입
3. vi 문서 편집기(계속)
3.2.13 화면이동 화면에 나타나지 않은 파일의 내용을 편집할 때 필요
main() { int a, b, c; char k; else printf (“%d”, a);
for (a=1; a< 10; a++) sum += a;
…
이동 명령어
반 화면 위로 ^U
반 화면 아래로 ^D
한 화면 위로 ^B
한 화면 아래로 ^F
한 줄만 위로 ^Y
한 줄만 아래로 ^E
파일내용 다시 출력 ^L
현재 커서 위치를 첫 줄로 Z
현재 커서 위치를 마지막줄로 Z+~
현재 커서 위치를 중간줄로 Z+>
3. vi 문서 편집기(계속)
3.2.14 커서이동 화살표 키 이용 h, j, k, l 키 이용
k
h l
j
이동 명령어
한 줄 위 k
한 줄 아래 j
한 문자 오른 쪽 l
한 문자 왼쪽 h
줄의 시작 ^ 또는 0
줄의 마지막 $
이전 줄의 처음 -
다음 줄의 처음 + 또는 ↵
3. vi 문서 편집기(계속)
현재 화면에서 커서이동
이동 명령어
키 화면 맨 위로 H
키 화면 중간으로 M
키 화면 맨 아래로 L
한 단어 앞으로 w
한 단어 뒤로 b
다음 단어의 끝 글자로 e
현재 화면에서 커서이동
이동 명령어
줄 번호 n 위치로 :n 또는 nG
파일의 끝 줄로 이동 :$ 또는 G
n줄 만큼 앞으로 이동 n+
n줄 만큼 뒤로 n-
현재 문장의 처음으로 (
다음 문장의 처음으로 )
현재 문단의 처음으로 {
다음 문단의 처음으로 }
3. vi 문서 편집기(계속)
3.2.15 문자열 탐색
명령어 수행 작업
/문자열 현재 위치부터 파일 앞쪽으로 문자열 탐색
?문자열 현재 위치부터 파일 뒤쪽으로 문자열 탐색
n 다음 문자열 탐색
N 역방향으로 문자열 탐색
3. vi 문서 편집기(계속)
3.2.15 문자열 탐색(1)
3. vi 문서 편집기(계속)
3.2.15 문자열 탐색(2)
대문자 ‘N’ – 이전 단어로 이동
3. vi 문서 편집기(계속)
3.2.15 문자열 탐색(2)
소문자 ‘n’ – 다음 단어로 이동
3. vi 문서 편집기(계속)
3.2.16 쉘 명령 사용 - Vi 편집기 상에서 간단한 쉘 명령을 수행하는 방법
명령어 수행 작업
:!명령 Vi를 중단하고 지정한 명령 수행
(vi로 돌아올 때 : ↵)
:sh Vi를 잠시빠져나가서 쉘을 수행
(vi로 돌아올때 : exit)
3. vi 문서 편집기(계속)
3.2.17 그 밖의 유용한 편집 명령
명령어 수행 작업
:set number
:set nu 파일 내용의 각 줄에 줄 번호 부여
:set nonumber
:set nonu 줄 번호 취소
J 현재 줄과 다음 줄 연결
. 바로 이전에 수행한 명령 재 실행
~ 현재 커서 위치의 한 문자를 소문자 혹은 대문자로 전환
3. vi 문서 편집기(계속)
3.2.17 그 밖의 유용한 편집 명령
3. vi 문서 편집기(계속)
3.2.17 그 밖의 유용한 편집 명령