■ vi 편집기
vi 편집기란? 리눅스 안에서 사용할 수 있는 문서 편집기
vi(Visual Editor) 의 뜻에서 유래가 됨
vi 편집기 명령모드 3가지
1. command 모드(esc눌렀을 때 그 화면)
vi의 기본모드이며 vi를 실행하면 바로 보이는 화면
방향키로 왔다갔다 할 수 있는 화면
k , j 누르면 위아래 움직인다.
l 누르면 옆으로 움직인다.
2. Edit 모드
a, i, o 등을 누르면서 내용을 입력 또는 삭제하는 명령모드
3. last line 모드
입력모드에서 저장안하고 나가는거:
쉬프트+콜론 -> q! 엔터
입력모드에서 저장하고 나가는거:
:wq! 저장하고 종료(쉬프트+zz)
****대문자 ZZ를 쓰면 된다.(그래서 쉬프트씀)
:q! 저장안하고 종료(쉬프트+zq)
****대문자 ZQ 를 쓰면 된다.
■ 편집기를 시작하는 명령어
1. $ VI 파일명 : 읽기, 쓰기가 가능한 상태로 파일이 열린다.
2. $ view 파일명: 읽기만 가능한 상태로 파일이 열린다.
3. $ vi -r 파일명 : 손상된 파일을 복구하는 명령어
※ vi 편집기를 열 때 정상적으로 안열리고
이상한 경고 메시지들이 나오면서 열릴 때 해결방법은?
swap 파일을 삭제한다.
예:
$ rm .emp.txt.swp
***맨 앞에 . 찍힌건 숨김파일.
**내가 쉬프트zz 로 안끄고, 컨트롤zz 로 종료시키면(즉 비정상 종료)
이런 이상현상이 발생한다
■vi 편집기 내에서 커서 이동
$vi wintert.txt
1. j : 아래로 이동
2. k: 위로 이동
3. h : 왼쪽으로 이동
4. l : 오른쪽으로 이동
5. 1G : 맨 위로 이동
6. G: 맨 아래로 이동 (또는 소문자 gg 한솔이)
7. :set nu : 파일내의 텍스트에 번호표시
8. :set nonu : 번호 안보이게 하는 방법
■ vi 편집기의 입력 명령어
1. i : 커서의 왼쪽부터 입력하겠다.
2. a : 커서의 오른쪽부터 입력하겠다.
3. o : 커서의 다음라인부터 입력하겠다.
4. O : 커서의 윗라인부터 입력하겠다.
■ vi 편집기와 삭제 명령어
1. x : 철자 하나 삭제
2. dd: 한 행 삭제
3. dw: 커서에 있는 단어 삭제
4. :5,10 d : 5~10번째 행 삭제
5. D : 커서 오른쪽 행 삭제
■ 취소 명령어
u : 방금 작업한 거 취소 하겠다.
■ 복사/붙여넣기 명령어
1. yy : 하나의 행을 복사
2. p : 붙여넣기
3. yG : 현재행부터 파일 끝까지 복사하겠다.
4. :1,2 co 3 : 1~2행을 3행 다음으로 복사
5. :1,2, m 3 : 1~2 행을 3행 다음으로 이동
■ vi 편집기
░1. :/문자 -> 문자검색
예:
$ vi winter.txt
:/ELSA
알파벳 n을 누르면서 계속 검색(아래로~~)
shift + n 을 누르면서 다시 뒤로 검색(위로~~)
░2. :s/기존문자/변경할문자
"지금 커서가 있는 현재행의 기존문자를 변경할 문자로 변경하겠다"
문제. vi 편집창에서 emp2.txt 의 king 을 yyy 로 변경하시오
커서 갖다놓고 명령모드에서
:s/KING/yyy 실행
7839 yyy PRESIDENT 0 81/11/17 5000 0 10
░3.
:%S/기존문자/변경할 문자/g
"문서 전체의 기존문자를 변경할 문자로 변경하겠다"
**g는 글로벌의 약자 (그래서 커서,로우 상관없이 전 행에 효과를 미침)
■ vi 를 이용해서 파이썬 코드 만들기
$ vi p123.py
a=1
b=a
print(a+b)
[orcl:~]$ vi p123.py
[orcl:~]$ python p123.py
2
문제. 구구단 2단을 수행하는 파이썬 코드를 작성하고 아래와 같이
리눅스 에서 실행하면 결과가 출력되게 하시오
$python p_2_dan.py
2x1=2
2x2=4
:
:
2x9=18
[orcl:~]$ vi p_2_dan.py
for i in range(1,10):
print '2x'+str(i)+'='+str(2*i)
또는
for i in range(1,10):
print'2 x',i,'=',2*i
문제. 아래와 같이 숫자를 물어보게 하고
숫자를 입력하면 세모가 출력되게 하시오
$python p_star.py
숫자를 입력하세요~ 7
★
★ ★
★ ★ ★
★ ★ ★ ★
★ ★ ★ ★ ★
★ ★ ★ ★ ★ ★
★ ★ ★ ★ ★ ★ ★
★ ★ ★ ★ ★ ★
★ ★ ★ ★ ★
★ ★ ★ ★
★ ★ ★
★ ★
★
$ vi p_star.py
#-*- coding: utf-8 -*-
a = int(input('숫자를 입력하세요 ~'))
for i in range(1,a):
print ((a-i)*' '+i*'★ ')
■ 리눅스 쉘 스크립트를 디버깅 모드로 실행하는 방법
문제. cp_emp.sh를 디버깅 하시오
[orcl:~]$ vi cp_emp.sh
#!/bin/bash
i=1
while [ $i -le 20 ]
do
cp emp.txt emp$i.txt
let i=i+1
done
[orcl:~]$ sh -x cp_emp.sh
+ i=1
+ '[' 1 -le 20 ']'
+ cp emp.txt emp1.txt
+ let i=i+1
+ '[' 2 -le 20 ']'
+ cp emp.txt emp2.txt
+ let i=i+1
+ '[' 3 -le 20 ']'
+ cp emp.txt emp3.txt
+ let i=i+1
+ '[' 4 -le 20 ']'
+ cp emp.txt emp4.txt
+ let i=i+1
+ '[' 5 -le 20 ']'
+ cp emp.txt emp5.txt
+ let i=i+1
+ '[' 6 -le 20 ']'
+ cp emp.txt emp6.txt
+ let i=i+1
+ '[' 7 -le 20 ']'
+ cp emp.txt emp7.txt
+ let i=i+1
+ '[' 8 -le 20 ']'
+ cp emp.txt emp8.txt
+ let i=i+1
+ '[' 9 -le 20 ']'
+ cp emp.txt emp9.txt
+ let i=i+1
+ '[' 10 -le 20 ']'
+ cp emp.txt emp10.txt
+ let i=i+1
+ '[' 11 -le 20 ']'
+ cp emp.txt emp11.txt
+ let i=i+1
+ '[' 12 -le 20 ']'
+ cp emp.txt emp12.txt
+ let i=i+1
+ '[' 13 -le 20 ']'
+ cp emp.txt emp13.txt
+ let i=i+1
+ '[' 14 -le 20 ']'
+ cp emp.txt emp14.txt
+ let i=i+1
+ '[' 15 -le 20 ']'
+ cp emp.txt emp15.txt
+ let i=i+1
+ '[' 16 -le 20 ']'
+ cp emp.txt emp16.txt
+ let i=i+1
+ '[' 17 -le 20 ']'
+ cp emp.txt emp17.txt
+ let i=i+1
+ '[' 18 -le 20 ']'
+ cp emp.txt emp18.txt
+ let i=i+1
+ '[' 19 -le 20 ']'
+ cp emp.txt emp19.txt
+ let i=i+1
+ '[' 20 -le 20 ']'
+ cp emp.txt emp20.txt
+ let i=i+1
+ '[' 21 -le 20 ']'
'linux' 카테고리의 다른 글
디스크 관리[df,du,sar,한글 input, 리눅스 str] (0) | 2019.01.02 |
---|---|
권한관리[chmod,chown.chattr,권한관리 단축키, 단축어, root, chattr +i, whatis chmod] (0) | 2019.01.02 |
리눅스 기본 명령어3[diff,find,tar,ln,sed,cp,mv] (0) | 2019.01.02 |
리눅스 기본 명령어2[wc,grep,awk,sort,uniq,echo] (0) | 2018.12.29 |
1.리눅스 기본명령어[cd,touch,rm,rmdir,alias,cat,redirection,more,head] (0) | 2018.12.28 |