명령행 편집이란? - Networking Laboratory

Download Report

Transcript 명령행 편집이란? - Networking Laboratory

Lecture 4.
명령행 편집
Spring 2006 Course, Sungkyunkwan University
Hyunseung Choo
[email protected]
Copyright 2000-2006 Networking Laboratory
명령행 편집이란?

유닉스 셸
 유닉스 셸 문법은 강력하다, 하지만

간결하지 않음

이상한 문자로 가득 차 있음

특별히 연상적이지도 않음

명령 행은 암호와 같이 복잡
 이러한 상황에서는,

입력한 명령 행에서 몇 글자만 틀려도 모두 다시 입력해야 함

이전에 사용한 명령을 다시 불러올 수 없음
Spring 2006 Shell Programming
Networking Laboratory 4-2/14
명령행 편집이란?

유닉스 셸
편집기를 사용하는 것처럼 명령
행도 편집할 수 있으면 좋을 텐
데…
Spring 2006 Shell Programming
Networking Laboratory 4-3/14
명령행 편집이란?

명령행 편집 모드 선택
 bash shell 이 제공하는 편집모드는 2가지

명령행에서 직접 입력
• emacs 모드
$ set –o emacs
• vi 모드
$ set –o vi

.inputrc 파일에서 readline 변수 설정
Spring 2006 Shell Programming
Networking Laboratory 4-4/14
명령행 편집

vi 편집모드
 특징

유닉스에서는 vi 편집기를 표준으로 사용하기 때문에 vi 모드를 더 많이
사용

하지만 vi 편집기는 원래 C 프로그램 작성을 하려고 설계했기 때문에
shell 에서 사용하는 것 과는 사용법이 많이 다르다
 vi 모드

입력 모드(input mode)
• 명령을 입력할 때 사용하는 모드

제어 모드(control mode)
• 명령행과 히스토리 파일을 헤집고 다닐 때 사용하는 모드
Spring 2006 Shell Programming
Networking Laboratory 4-5/14
명령행 편집

vi 편집모드

vi 모드

간단한 제어 모드 명령
•
두 가지의 워드 개념
1. 공백 문자가 없는 문자의 연속  공백 문자 없는 워드(non-blank
word)
2. 영 숫자, 밑줄( _ )의 연속이나 영 숫자가 아닌 문자의 연속  그냥
‘워드’
Spring 2006 Shell Programming
Networking Laboratory 4-6/14
명령행 편집

vi 편집모드

간단한 제어 모드 명령
명령
설명
h
한 문자 왼쪽으로 커서 이동
l
한 문자 오른쪽으로 커서 이동
w
한 워드 오른쪽으로 커서 이동
b
한 워드 왼쪽으로 커서 이동
W
다음 ‘공백 문자없는 워드’ 의 첫 문자로 이동
B
이전 ‘공백 문자없는 워드’ 의 첫 문자로 이동
e
현재 워드의 마지막 문자로 이동
E
현재 ‘공백 문자없는 워드’ 의 마지막 문자로 이동
0
명령행의 맨 왼쪽으로 이동
^
명령행에서 공백 문자가 아닌 첫 문자로 이동
$
명령행의 맨 오른쪽으로 이동
Spring 2006 Shell Programming
Networking Laboratory 4-7/14
명령행 편집

vi 편집모드

텍스트 입력과 변경
명령
설명
i
현재 문자 왼쪽에 텍스트 입력(끼워 넣음)
a
현재 문자 오른쪽에 텍스트 입력(덧붙임)
I
명령행 맨 왼쪽에 텍스트 입력
A
명령행 맨 오른쪽에 텍스트 입력
R
현재 텍스트에 텍스트 덮어 씀
Spring 2006 Shell Programming
Networking Laboratory 4-8/14
명령행 편집

vi 편집모드

삭제 명령
명령
설명
dh
왼쪽으로 한 문자 삭제
dl
오른쪽으로 한 문자 삭제
db
왼쪽으로 한 워드 삭제
dw
오른쪽으로 한 워드 삭제
dB
이전 ‘공백 문자없는 워드’ 삭제
dW
다음 ‘공백 문자없는 워드’ 삭제
d$
현재 위치에서 명령행 맨 오른쪽까지 삭제
d0
현재 위치에서 명령행 맨 왼쪽까지 삭제
Spring 2006 Shell Programming
Networking Laboratory 4-9/14
명령행 편집

vi 편집모드

vi 모드 삭제 명령의 변형
명령
설명
D
d$와 같다(현재 위치에서 명령행 맨 오른쪽 까지 삭제)
dd
0d$와 같다(전체 명령행 삭제)
C
c$와 같다(현재 위치에서 명령행 맨 오른쪽까지 삭제, 입력 모드 시작)
cc
0c$와 같다(전체 명령행 삭제, 입력 모드 시작)
X
dl과 같다(왼쪽으로 한 문자 삭제)
x
dh와 같다(오른쪽으로 한 문자 삭제)
Spring 2006 Shell Programming
Networking Laboratory 4-10/14
명령행 편집

vi 편집모드

히스토리 파일 헤집고 다니기
명령
설명
k 또는 -
이전 명령행으로 이동
j 또는 +
다음 명령행으로 이동
G
반복 횟수만큼 명령행 이동
/string
string을 이전 명령행부터 찾음
?string
string을 다음 명령행부터 찾음
n
이전에 했던 방향으로 검색 반복
N
이전에 했던 방향과 반대로 검색 반복
Spring 2006 Shell Programming
Networking Laboratory 4-11/14
명령행 편집

vi 편집모드
문자 검색 명령

명령
설명
fx
x 문자가 있는 오른쪽으로 이동
Fx
x 문자가 있는 왼쪽으로 이동
tx
x 문자가 있는 오른쪽으로 이동한 다음 한 문자 왼쪽으로 커서 이동
Tx
x 문자가 있는 왼쪽으로 이동한 다음 한 문자 오른쪽으로 커서 이동
;
마지막으로 내린 문자 검색 명령 다시 실행
‘
마지막으로 내린 문자 검색 명령 다시 실행(반대 방향)
Spring 2006 Shell Programming
Networking Laboratory 4-12/14
명령행 편집

vi 편집모드

그 밖의 각종 명령
명령
설명
~
현재 문자를 대문자에서 소문자로, 소문자에서 대문자로 변경
_(밑줄)
이전에 내린 명령행에서 마지막 워드를 현재 명령행에 끼워 넣은 다음 입력 모드 시
작
CTRL+L
화면을 지우고 현재 명령행을 다시 표시, 화면이 지저분할 때 사용
#
주석 문자(#)를 명령행 앞에 붙여 히스토리 파일에 추가, 다시 입력하지 않고 나중에
실행할 명령을 보관하는데 사용
Spring 2006 Shell Programming
Networking Laboratory 4-13/14
명령행 편집

히스토리 확장

히스토리 목록에서 명령을 불러내어 편집할 때 사용

이벤트 지정자
명령
설명
!
히스토리 대체 시작
!!
마지막 명령
!n
n째 명령
!-n
현재 명령행에서 뒤로 n째 명령행
!string
string으로 시작하는 명령행 중 마지막 명령행
!?string?
string을 포함하는 명령행 중 마지막 명령행, string 뒤의 ?는 선택 항목
^string1^string2
string1을 string2로 바꾸어 마지막 명령 반복
Spring 2006 Shell Programming
Networking Laboratory 4-14/14