Linux

VIM과 shell script

LeeJaeJun 2024. 2. 24. 22:01
728x90
반응형

VIM

  • Vi IMproved (Vi 기능을 확장하고 향상시킨 편집기)
  • Vi 편집기의 향상된 버전 (Vi는 초기 Unix 시스템에서 사용되었던 텍스트 편집기. 현재도 여러 곳에서 기본적인 편집기로 사용)
  • vim 파일이름: 파일 열기
  • Normal 모드, Insert 모드, Visual 모드, Command-Line 모드로 구성
    • Normal 모드: Vim이 시작되거나 다른 모드에서 Esc(또는 Ctrl+[)를 눌러서 돌아올 때의 기본 모드
      • 텍스트를 이동하고 복사, 붙여넣기, 삭제, 검색 및 기타 편집 작업을 수행 가능
      • 일반 모드에서의 키 바인딩
        • h, j, k, l: 좌, 하, 상, 우로 커서를 이동합니다.
        • x: 현재 커서 위치의 문자를 삭제합니다.
        • dd: 현재 행을 삭제합니다.
        • yy: 현재 행을 복사합니다.
        • p: 클립보드에서 내용을 붙여넣습니다.
        • /: 검색 모드로 전환합니다.  사용자가 찾고자 하는 텍스트를 입력한 후 Enter 키를 누르면 Vim이 해당 텍스트를 찾아주고 찾은 결과를 강조 표시합니다. 사용자가 다음으로 나온 결과로 이동하려면 n 키를 누르고, 이전 결과로 이동하려면 N 키를 누르면 됩니다. 다시 Normal 모드로 돌아가려면 Esc 키.
        • :q: Vim을 종료합니다.
        • w: 다음 단어로 이동
        • b: 이전 단어로 이동
        • gg: 파일의 맨 처음으로 이동
        • G: 파일의 맨 끝으로 이동
        • Ctrl+f: 다음 페이지로 이동
        • Ctrl+b: 이전 페이지로 이동
        • dd: 현재 행 삭제
        • yy: 현재 행 복사
        • p: 클립보드 내용 붙여넣기
        • u: 실행 취소
        • Ctrl+r: 다시 실행 (실행 취소의 반대)
    • Insert 모드: 텍스트를 입력할 때 사용되는 모드
      • Normal 모드에서 i, a, o 등의 키를 눌러 Insert 모드로 전환 가능
      • i: 현재 커서 위치에 삽입합니다.
      • a: 현재 커서 다음에 삽입합니다.
      • o: 현재 행 아래에 새로운 행을 만들고 삽입합니다.
    • Visual 모드:
      • 텍스트를 선택하여 복사, 삭제 또는 다른 편집 작업을 수행하는 데 사용
      • Normal 모드에서 v, V, Ctrl+v 등의 명령을 사용하여 Visual 모드로 전환
        • v: 현재 커서 위치에서 시작하여 문자 단위로 텍스트를 선택
        • V: 현재 커서 위치의 행 전체를 선택
        • Ctrl+v: 현재 커서 위치에서 시작하여 블록을 선택(열 방향)
        • 텍스트를 선택한 후
          • y: 선택한 텍스트를 복사
          • d: 선택한 텍스트를 삭제
          • 선택한 텍스트 위에 새로운 텍스트를 입력하면 선택한 텍스트가 새로운 텍스트로 대체
    • Command-Line 모드: 파일 저장, 검색, 설정 변경 등과 같은 다양한 작업을 수행하는 데 사용되는 모드
      • 콜론 (:)을 입력하여 시작
      • 명령을 입력하고 Enter를 누르면 해당 명령이 실행
      • 명령 예시
        • :w: 현재 파일을 저장합니다.
        • :q: Vim을 종료합니다.
        • :wq: 저장하고 종료합니다.
        • :q!: 변경사항을 저장하지 않고 종료
        • :set: Vim에서 다양한 옵션을 설정하거나 변경하는 데 사용되는 명령
          • number: 행 번호를 표시합니다.
          • nonumber: 행 번호를 숨깁니다.
          • relativenumber: 상대적인 행 번호를 표시합니다.
          • ignorecase: 검색 시 대소문자를 구분하지 않습니다.
          • smartcase: 검색 시 대소문자를 구분하지만 대문자를 포함한 검색어를 입력하면 대소문자 구분을 해제합니다.
          • tabstop: 탭 문자의 너비를 설정합니다.
          • expandtab: 탭 문자를 공백 문자로 대체합니다.
          • syntax: 문법 강조를 활성화합니다.
          • autoindent: 자동 들여쓰기를 활성화합니다.
          • wrap: 텍스트가 화면 너비를 초과할 때 줄 바꿈을 활성화합니다.
          • wrap!: 줄 바꿈을 비활성화합니다.
          • mouse: 마우스 지원을 활성화합니다.

 

VIM 설치 방법

대부분의 리눅스 배포판과 macOS에 기본으로 설치되어 있습니다. 그러나 설치되어 있지 않은 경우 또는 최신 버전을 사용하려는 경우 패키지 관리자를 통해 설치할 수 있습니다.

1. Ubuntu 및 Debian 기반 시스템

sudo apt update
sudo apt install vim

 

2. CentOS 및 Fedora 기반 시스템

sudo yum install vim    # CentOS 7 이하
sudo dnf install vim    # CentOS 8, Fedora

 

3. macOS

Vim은 기본적으로 설치되어 있습니다. 다음과 같이 Homebrew를 사용하여 최신 버전을 설치 가능합니다.

brew install vim

 

4. window

https://www.vim.org/download.php

 

download : vim online

Downloading Vim Vim is available for many different systems and there are several versions. This page will help you decide what to download. Most popular: Details and options for: Mirrors Alternative sites to download Vim files from. Sources Build Vim your

www.vim.org

 

.sh 파일

  • shell script file
  • 리눅스 및 유닉스 기반 시스템에서 셸(Shell)이라고 불리는 명령 줄 인터페이스를 사용하여 실행되는 스크립트 파일
  • 일반적으로 .sh 확장자를 가지며, 내용은 셸 스크립트 언어로 작성
  • 일반적으로 셸 스크립트 파일은 텍스트 에디터(ex. VIM)를 사용하여 작성하며, 터미널에서 실행
  • 실행 권한을 부여한 후 해당 스크립트 파일을 실행하면 셸이 스크립트 파일의 내용을 읽어들여 해당 명령어를 실행
  • 시스템 관리나 자동화된 작업을 수행하는 데 매우 유용

 

.sh 파일 작성법

1. 텍스트 편집기 열기

vim 파일이름.sh

2. 셸 스크립트 작성

#!/bin/bash
echo "Hello, World!"
ls -l
  • 첫 번째 줄은 스크립트를 실행할 셸을 지정하는 셔뱅(shebang) 라인입니다. 대부분의 경우 /bin/bash를 사용합니다. (이 스크립트가 Bash 셸에서 실행되어야 함을 의미)
  • ! 표시는 셔뱅 라인을 구분하는 데 사용
  • 두 번째 줄부터는 스크립트의 내용을 작성합니다. 위 예제에서는 "Hello, World!"를 출력하는 echo 명령어와 현재 디렉토리의 파일 목록을 출력하는 ls -l 명령어를 사용합니다

3. 파일 저장

  • 셸 스크립트를 작성한 후에는 변경 사항을 저장합니다.
  • Vim을 사용하는 경우 :wq를 입력하여 저장하고 Vim을 종료할 수 있습니다.

4. 실행 권한 부여

chmod +x 파일이름.sh
  • chmod를 사용하여 파일에 실행 권한을 부여해야 합니다.

5. 실행

./파일이름.sh

 

.sh 파일 예시

#!/bin/bash
echo "이름을 입력하세요:" # echo는 출력
read name # 사용자로 부터 입력받을 때는 name 사용
echo "안녕하세요, $name 님! 오늘은 $(date +%A)입니다."
# Unix 및 Linux 시스템에서 date 명령어는 현재 날짜와 시간을 출력하는 데 사용
# $(...)은 명령어를 실행하고 그 결과를 사용하는 것
#!/bin/bash
mkdir myfolder
cd myfolder
touch file1.txt file2.txt
echo "파일 생성이 완료되었습니다."
# 이 스크립트는 새로운 폴더를 만들고 해당 폴더로 이동한 후에 파일 두 개를 생성합니다.
#!/bin/bash
age=20
if [ $age -ge 18 ]; then
    echo "성인입니다."
else
    echo "미성년자입니다."
fi # fi는 if 문의 끝을 나타내는 키워드
# "-ge"는 셸 스크립트에서 사용되는 비교 연산자로, "greater than or equal to"의 약자
# "-eq"는 "equal to"를 나타내고, "-lt"는 "less than"을 나타냅니다.
#!/bin/bash
for fruit in apple banana orange
do
    echo "나는 $fruit 좋아합니다."
done

# 반복문 for
for 변수 in 리스트
do
    # 실행할 작업
done

# 반복문 while
while 조건
do
    # 실행할 작업
done
#!/bin/bash

# 이동할 디렉토리 경로(원하는 경로 적기)
target_dir="/path/to/your/directory"

# 지정된 디렉토리로 이동, 약 이동에 실패하면 스크립트가 종료
cd "$target_dir" || exit

# 이동한 디렉토리 내용 출력
ls -l
728x90
반응형

'Linux' 카테고리의 다른 글

SSH (Secure Shell), NC (Netcat)  (1) 2024.02.25
UFW(Uncomplicated Firewall)  (0) 2024.02.24
Permission of Linux  (0) 2024.02.23
Ubuntu 운영체제의 패키지  (0) 2024.02.22
Linux 디렉토리 구조  (0) 2024.02.22