✅ VI 에디터란?
- VIM
- 리눅스에서 가장 많이 사용하는 텍스트 에디터
- VI에 자동화와 시각화 메뉴 등을 추가한 프로그램
1️⃣ VIM 모드
- 일반(명령) 모드
- 처음 실행했을 때 혹은 입력/명령 모드에서 ESC입력 시 - 찾기, 커서이동 등
- 명령 모드
- 일반 모드에서
:(콜론)
입력 시 - 저장, 파일 읽기, VIM 설정 등
- 입력(편집) 모드
- 일반 모드에서 a 또는 i 또는 o 입력 시 - 내용 입력
- Visual 모드
- 일반 모드에서 v 입력 시 - 블럭 복사/붙이기
2️⃣ 핵심 명령어
- 입력 : 입력 모드 진입 시, 왼쪽 하단에 "--INSERT--" 라는 문구가 출력
i
: 포커스 잡힌 커서 위치에서 편집 모드 시작
a
: 포커스 잡힌 커서 위치 바로 다음에서 편집 모드 시작
- 삭제
- 파일 저장
:w
: 현재 오픈된 파일 저장
:q
: 저장하지 않고 종료
:wq
: 현재 오픈된 파일 저장 후 종료
:q!
: 강제 종료
- 블록 지정 및 복사
v
: 단어 단위로 블럭 지정
Shift + v
: 라인 단위로 블럭 지정
y
: 지정된 블럭 복사
p
: 복사된 블럭을 현재 커서에 붙여넣기
i
: 직전 실행 작업 취소 (control + z 와 같음)
- 편집
x
: 커서의 한 문자를 삭제
dd
: 커서의 현재 라인 삭제
Shift + j
: 커서의 아래 라인과 현재 라인을 하나의 라인으로 합침
3️⃣ VIM 설정
작성법 | 설명 |
---|
:set [Option] | 옵션 켜기 |
:set no[Option] | 옵션 끄기 |
:set | 기본값이 아니 옵션 목록 보기 |
:set all | 모든 옵션 목록 보기 |
작성법 | 설명 |
---|
:set autoindent | 기존 줄 들여쓰기 만큼 새로운 줄도 들여쓰기 |
:set cindent | C 언어용 들여쓰기 옵션.(범용으로 VIM을 사용 할 때는 autoindent만으로 충분함) |
:set tabsize=# | 탭 크기를 #만큼 설정 |
:set expandtabs | 탭 대신 공백을 탭 크기만큼 입력 |
작성법 | 설명 |
---|
:set hlsearch | 검색된 문자열을 하이라이트해줍니다. CentOS에서 vim-enhanced 팩키지가 설치 되어 있어야 동작 |
:set ignorecase | 대소문자 구분하지 않고 검색합니다. |
:set smartcase | ignorecase와 함께 사용하여 검색문자열이 전부 소문자인 경우 대소문자 구분하지 |
| 않고 검색하며 대문자가 들어 있다면 대소문자 구분하여 검색 |
:set incsearch | 검색 문자열을 입력하면 실시간으로 검색 |
:set wrapscan | 끝까지 검색한 후 처음부터 다시 검색 |
작성법 | 설명 |
---|
:set number | 줄번호를 보여줌 |
:set ruler | 하단에 줄번호와 컬럼번호를 출력(CentOS에 포함된 VIM에서는 동작안함) |
✅ 쉘스크립트란?
- 쉘을 사용해서 프로그래밍을 할 수 있습니다.
- 서버 작업 자동화나 운영을 위해 기본적으로 익혀두는 것이 좋습니다.
- 사용 예)
- 서버가 다운되었는데, 이유는 로그 파일이 너무 많이 쌓여서 서버 저장 공간이 없었기 때문이다.
- 해결) 간단한 쉘 스크립트를 생성하여 주기적으로 실행해준다.
- 파일의 첫 라인은
#!/bin/bash
로 시작하여야 합니다.
- 파일은 일반적으로
파일이름.sh
로 생성합니다.
- 주석 처리는
#
을 사용합니다.
1️⃣ 변수 선언
- 선언
- 변수명=데이터
- 변수명=데이터 사이에 띄어쓰기를 허용하지 않습니다.
사용법
$변수명
- 리스트 변수(배열)
- 변수명=(데이터,데이터,데이터 ...)
사용법
${변수명[인덱스번호]}
2️⃣ 조건문
- 연산자
expr
: 숫자 계산
- expr를 사용하는 경우
백틱
을 사용해야 함
- 연산자와 괄호 앞에는 역슬래시와 함께 사용
- 연산자와 숫자, 변수, 기호 사이에는 space를 넣어야 함
예
num=`expr \(3 \* 5 \) /4 + 7`
- 조건문 문법
- if문
- 명령문을 꼭 탭으로 띄워야 하는 것은 아님(then과 fi 안에만 있으면 됨)
if [조건]
then
명령문
fi
- if/else 문
- 명령문을 꼭 탭으로 띄워야 하는 것은 아님(then과 fi 안에만 있으면 됨)
if [조건]
then
명령문
else
명령문
fi
- 조건
==
: 문자가 서로 일치
!=
: 문자가 서로 일치하지 않음
-z
: 문자가 null이면 참
-n
: 문자가 null이 아니면 참
- 수치 비교
-eq
: 값이 같음
-ne
: 값이 다름
-lt
: 1이 2보다 작음 (1 < 2)
-le
: 1이 2보다 작거나 같음 (1 =< 2)
-gt
: 1이 2보다 큼 (1 > 2)
-ge
: 1이 2보다 크거나 같음 (1 => 2)
3️⃣ 반복문
for 변수 in [범위](리스트 또는 배열, 묶음 등)
do
반복할 작업
done
예제
- 현재 디렉토리에 있는 파일과 디렉토리를 출력하라
#1/bin/bash
for database in $(ls)
do
echo $database
done
while [조건문]
do
명령문
done
예제
- 현재 디렉토리에 있는 파일과 디렉토리를 출력하라
#1/bin/bash
lists=$(ls)
num=${#lists[@]}
index=0
while [ $num -ge 0 ]
do
echo ${lists[$index]}
index=`expr $index + 1`
num=`expr $num - 1`
done