본문 바로가기

Study/class note

리눅스 / 리눅스 vi편집기 명령어1

26  vi편집기 명령어

vi편집기 명령어를 알고 있어야 파일을 열어서 내용을 적을 수 있고 수정할 수도, 글을 지울 수도 있음. 지금부터는 현업처럼 oracle유저에서 작업을 하겠습니다.

[oracle@localhost ~]$ whoami
oracle
[oracle@localhost ~]$ cd
[oracle@localhost ~]$ pwd
/home/oracle

 

* vi편집기 명령모드 3가지

1. command 모드 : vi편집기의 기본모드, vi를 실행하면 바로 보이는 화면을 말함. 이 상태에서는 방향키로 왔다갔다 할 수 있음. 또는 아래의 키로 이동할 수 있음. 

h : 왼쪽으로 이동 / l : 오른쪽으로 이동 / j : 아래로 이동 / k : 위로 이동

 

2. edit 모드 : a, i, o, x 등을 누르면서 내용을 입력 도는 수정, 삭제하는 명령모드

i : 입력모드 / a : 입력모드인데 계속 덧붙여서 쓰겠다 / o : 입력모드인데 다음라인에 쓰겠다 / x : 철자 하나 삭제

 

3. last line 모드 : 입력모드에서 저장, 종료, 강제 종료등의 명령어를 입력하는 모드

:wq! 저장하고 종료(단축키 : ZZ)

:q! 저장안하고 종료(단축키 : ZQ)

 

문제118. (점심시간 문제) /home/oracle 밑에 bbb.txt를 생성하는데 아래의 내용이 저장되게 하시오.

select ename, sal

 from emp

 where empno = 7788;

[oracle@localhost ~]$ vi bbb.txt

i 누르면 edit모드로 전환, 입력가능함. 내용 입력 후 ESC키를 눌러 last line모드로 전환  :wq! 로 저장하고 종료

 

 

ㅇvi편집기 내에서 커서 이동

1. j : 아래로 이동

2. k : 위로 이동

3. h : 왼쪽으로 이동

4. l : 오른쪽으로 이동

5. 1G : 맨위로 이동

6. G : 맨 아래로 이동

7. :set nu : 파일내의 텍스트에 번호 표시

8. :set nonu : 번호 안보이게 하는 명령어

9. gg : 맨 위로 올라가는 단축키

 

예제. root 유저로 접속해서 /root밑에 있는 jobs.txt를 /home/oracle 밑으로 복사하시오.

[oracle@localhost ~]$ su -
암호:
마지막 로그인: 월  3월 14 12:03:42 KST 2022 일시 pts/0
[root@localhost ~]# cp jobs.txt /home/oracle/

예제2. /home/oracle 밑에 있는 jobs.txt의 소유자를 oracle로 변경하고 다시 oracle로 스위치 유저 하시오.

[root@localhost ~]# cd /home/oracle
[root@localhost oracle]# chown oracle:oracle jobs.txt
[root@localhost oracle]# ls -l jobs.txt
-rwxr-x---. 1 oracle oracle 12176  3월 14 13:46 jobs.txt
[root@localhost oracle]#
[root@localhost ~]# su - oracle
마지막 로그인: 월  3월 14 12:04:39 KST 2022 일시 pts/0

예제3. jobs.txt를 vi 열어서 아래로 이동해보시오.

[oracle@localhost ~]$ vi jobs.txt

빠져나올때 :q!하면 됨

 

 

ㅇ vi편집기의 삭제 명령어

1. x : 철자 하나 삭제

2. dd : 한 행 삭제

3. dw : 커서가 있는 단어를 삭제

4. :5,10d : 5~10번째 행 삭제

5. D : 커서 오른쪽 행 삭제

6. u : 작업 취소

7. 특정행만 지우고 싶다면 :5,5d 하면 됨

 

예제1. jobs.txt를 jobs2.txt로 백업하시오.

[oracle@localhost ~]$ ls
bbb.txt  emp.txt  jobs.txt
[oracle@localhost ~]$ cp jobs.txt jobs2.txt
[oracle@localhost ~]$ ls
bbb.txt  emp.txt  jobs.txt  jobs2.txt

 

예제2. jobs2.txt를 열어서 5번째 행을 지우시오.

[oracle@localhost ~]$ vi jobs2.txt

 

ㅇvi편집기의 복사/붙여넣기 명령어

1. yy : 하나의 행을 복사

2. p : 붙여넣기

3. yG : 현재행부터 파일 끝까지 복사

4. :1,2 co 3 : 1~2행 다음으로 복사

5. :1,2 m 3 : 1~2행을 3행 다음으로 이동

 

ㅇvi편집기 작업을 하다 비정상적으로 종료된 후에 다시 똑같은 파일을 열때 swap파일이라는 메시지가 나오면서 아무런 작업이 안될 때 조치방법

$ vi jobs2.txt 

작업하다가 ctrl + z를 눌러서 취소를 했다면 

 

$ vi jobs2.txt를 열어보면 제대로 안 열리고 swap파일이 있다고 나오면서 작업이 안됩니다.

그럴때는 :q! 실행해서 빠져나온후에 .jobs2.txt.swp를 지워주면 됩니다.

 

$ rm.jobs2.txt.swp를 지우면 됨

 

ㅇvi 편집기 내에서 특정 문자를 검색하는 방법

1. /검색어 : 검색어를 찾아줌.

n을 누르면 전진하면서 검색어를 찾아주고 shift+n을 누르면 후진하면서 검색어를 찾아줌.

$ vi jobs2.txt 
:set nu
/become

:nohl  # 검색어 해제

 

ㅇvi편집기 명령어로 문자를 변경하는 방법

:$s/기존문자/변경할문자/g

예제. jobs2.txt에서 about이라는 단어를 모두 kkkkk로 변경하시오.

:%s/about/kkkkk/g
/kkkkk # 단어 찾기

 

문제119. emp.txt를 emp2.txt로 백업하시오.

[oracle@localhost ~]$ cp emp.txt emp2.txt
[oracle@localhost ~]$ ls
bbb.txt  emp.txt  emp2.txt  jobs.txt  jobs2.txt

 

문제120. emp2.txt를 열어서 KING을 aaa로 변경하시오.

:%s/KING/aaa/g

 

문제121. emp.txt를 복사해서 emp1.txt ~ emp10.txt로 복사하세요.

[oracle@localhost ~]$ cp emp.txt emp1.txt
[oracle@localhost ~]$ cp emp.txt emp2.txt
[oracle@localhost ~]$ cp emp.txt emp3.txt
[oracle@localhost ~]$ cp emp.txt emp4.txt
[oracle@localhost ~]$ cp emp.txt emp5.txt
[oracle@localhost ~]$ cp emp.txt emp6.txt
[oracle@localhost ~]$ cp emp.txt emp7.txt
[oracle@localhost ~]$ cp emp.txt emp8.txt
[oracle@localhost ~]$ cp emp.txt emp9.txt
[oracle@localhost ~]$ cp emp.txt emp10.txt

 

문제122. emp.txt ~ emp10.txt의 내용중에서 SALESMAN을 jjj로 변경하시오.

$ vi emp*.txt
:argdo %s/SALESMAN/jjj/g | update
:wq! #저장하고 나옴

 

문제123. root유저로 접속해서 /root밑에 있는 dept3.txt를 복사해서 /home/oracle밑에 붙여넣으시오.

[oracle@localhost ~]$ su -
암호:
마지막 로그인: 월  3월 14 13:51:12 KST 2022 일시 pts/0

[root@localhost ~]# ls -l dept*.txt
-rw-r--r--. 1 root root 80  3월 10 13:51 dept2_backup.txt
-rwxr-x---. 1 root root 80  3월 11 14:28 dept3.txt
[root@localhost ~]# cp dept3.txt /home/oracle/dept.txt

 

문제124. /home/oracle 밑으로 와서 dept.txt의 소유자를 oracle로 변경하시오.

[root@localhost ~]# cd /home/oracle
[root@localhost oracle]# chown oracle:oracle dept.txt
[root@localhost oracle]# ls -l dept.txt
-rwxr-x---. 1 oracle oracle 80  3월 14 15:09 dept.txt

다시 oracle로 스위치 유저

[root@localhost oracle]# su - oracle
마지막 로그인: 월  3월 14 13:51:18 KST 2022 일시 pts/0

 

문제125. dept.txt를 dept4.txt ~ dept10.txt까지 복사하시오.

[oracle@localhost ~]$ cp dept.txt dept4.txt
[oracle@localhost ~]$ cp dept.txt dept5.txt
[oracle@localhost ~]$ cp dept.txt dept6.txt
[oracle@localhost ~]$ cp dept.txt dept7.txt
[oracle@localhost ~]$ cp dept.txt dept8.txt
[oracle@localhost ~]$ cp dept.txt dept9.txt
[oracle@localhost ~]$ cp dept.txt dept10.txt

 

문제126. dept.txt ~ dept10.txt의 내용중에서 DALLAS를 kkkkk로 변경하시오.

$ vi dept*.txt
:argdo %s/DALLAS/kkkkk/g | update
:wq!

 

반응형

'Study > class note' 카테고리의 다른 글

리눅스 / mysql workbench  (0) 2022.03.15
리눅스 / maria db  (0) 2022.03.14
리눅스 / 리눅스 명령어3  (0) 2022.03.14
리눅스 / putty로 서버 접속, 리눅스 명령어2  (0) 2022.03.11
리눅스 / 리눅스 명령어  (0) 2022.03.10