Linux vi shell 사용

2024. 1. 20. 17:59·AWS Cloud School/Linux, Network

Linux 편집기의 종류

  • GUI 환경인 그놈에서 제공하는 gedit
  • Unix에서부터 사용했던 행 편집기(라인 편집기)와 화면 편집기

행 단위 편집기 : ed, ex, sed

화면 단위 편집기 : vi, emacs(이맥스)

GUI 편집기 : gedit

  • 화면 단위 편집기
    • vi : Linux에서 일반적으로 사용할 수 있는 화면 편집기
    • emacs(이맥스) :제공하는 기능이 매우 다양하지만 사용법이 어렵고 복잡하여 전문적인 애호가 위주로 사용 

 

 

vi의 동작 모드

 vi는 visual editor의 약자입니다. vi로 파일을 열기 위해서는 vi 뒤에 경로를 입력해야 합니다.

  • 절대 경로 방식 : /etc/~~ 처럼 /로 시작하는 경로 방식입니다.
  • 상대 경로 방식 : 현재 자신의 폴더가 etc이고 etc/services 현재 경로에서부터 출발 합니다.
  • 보통 i를 많이 사용 해서 입력 모드로 들어가고 :wq! 를 사용해 저장을 하고 vi를 끕니다.
  • 저장 안하고 끌려먼 :q, :q!를 사용하면 됩니다.
  • :w [ 파일명 ] : 작업한 내용을 저장만 합니다. 파일명을 지정하면 새 파일로 저장을 합니다.
  • ZZ : 작업한 내용을 저장하고 vi를 종료합니다.

 

특정 행으로 바로 이동하기

  • [[ -> 맨 앞으로 이동, ]] -> 맨 뒤로 이동
  • :행 번호 -> 지정한 행 번호로 이동합니다.
  • G -> 파일의 마지막 행으로 이동합니다.
  • 행 번호G -> 지정한 행 번호로 이동합니다 (:행 번호 와 동일)
  • :$ -> 파일의 마지막 행으로 이동합니다.

 

내용 삭제하기

  • x, #x 
    • 커서 위치의 글자를 삭제합니다. 
    • #에는 삭제할 글자 수를 지정합니다. (ex. 3x는 세 글자를 삭제합니다)
  • dw, #dw
    • 커서 위치의 단어를 삭제합니다.
    • #에는 삭제할 단어 수를 지정합니다.
  • dd, #dd
    • 커서 위치의 행을 삭제합니다.
    • #에는 삭제할 행의 수를 지정합니다. (ex. 5dd는 커서 위치부터 다섯 행을 삭제합니다)
  • D
    • 커서 위치부터 행의 끝까지 삭제합니다.

 

명령 취소하기

  • u 
    • 명령을 취소합니다.
  • U
    • 해당 행에서 한 모든 명령을 취소합니다.
  • :e!
    • 마지막으로 저장한 내용 이후의 것을 버리고 새로 작업합니다.

d를 한 후에 u를 하면 삭제한 내용 복구!! 

d를 하면 삭제가 되는데 그 후 u를 누르면 복구가 된다. 그럼 d를 하고 어디에 저장하는 걸까??
d를 사용하여 텍스트를 삭제할 때, 해당 텍스트는 "버퍼"라고 불리는 일시적인 저장 공간으로 이동합니다. Vim에서는 "레지스터"라는 특별한 형태의 버퍼를 사용합니다.
Vim에서 레지스터는 텍스트를 임시 저장하는 공간으로, 사용자가 삭제하거나 복사한 텍스트가 저장됩니다. 이 레지스터는 다양한 용도로 사용될 수 있으며, 삭제된 텍스트의 복구에도 사용됩니다.

 

복사하기, 잘라서 붙이기

  • yy, #yy
    • 커서가 위치한 행을 복사합니다.
    • #에는 복사할 행의 수를 지정합니다. 예를 들어 3yy는 3개의 행을 복사합니다.
  • p
    • 커서가 위치한 행의 아래쪽에 붙입니다.
  • P
    • 커서가 위차한 행의 위쪽에 붙입니다.
  • dd, #dd
    • 커서가 위치한 행을 잘라둡니다.
    • 삭제와 같은 기능입니다. 컨트롤 x와 같은 기능.
  • 1,$ 또는 %
    • 1행부터 마지막 행까지 지정합니다. 
  • #y, #d
    • #로 지정한 행을 복사합니다, #로 지정한 행을 잘라낸다.
  • :pu, :#pu
    • #로 지정한 행 다음에 버퍼의 내용을 붙입니다.

 

검색하기

  • /찾고 싶은 단어 입력 -> 위에서 아래로 찾습니다.
  • ?찾고 싶은 단어 입력 -> 아래에서 위로 찾습니다.
  • n -> 원래 찾던 방향으로 다음 문자열을 찾습니다.
  • N -> 역방향으로 다음 문자열을 찾습니다. 

 

바꾸기

  • 커서 위치의 문자열만 바꿀 수도 있고, 파일 전체나 특정 범위 내에서 해당하는 문자를 바꿀 수 있습니다.
:s/문자열1/문자열2/          # 커서가 위치한 행에서 첫번째 문자열1을 문자열2로 바꿉니다.
:%s/문자열1/문자열2/g        # 파일 전체에서 모든 문자열1을 문자열2로 바꿉니다.
:<범위>s/문자열1/문자열2/    # 범위 내 모든 행에서 첫 번째로 나오는 문자열1을 문자열2로 바꿉니다.
:<범위>s/문자열1/문자열2/g   # 범위 내 모든 행에서 문자열1을 문자열2로 바꿉니다.
:<범위>s/문자열1/문자열2/gc  # 범위 내 모든 행에서 문자열1을 문자열2로 바꿀 때 수정할지 여부를 묻습니다.
  • 지금 변경은 대소문자를 구분합니다. 대소문자를 가리지 않고 바꿀려면 어떻게 해야 할까?
:set ignorecase                   # set ignorecase를 하면 대소문자를 구별을 안합니다. 
:%s/tcp/KDN/g

:%s/.*/\L&/g                      # 대문자를 소문자로 변경할 때

:%s/.*/\U&/g                      # 소문자를 대문자로 변경할 때

 

vi에서 셸명령 사용하기

  • :! 셸 명령
    • vi 작업을 잠시 중단하고 셸 명령을 실행합니다.(vi로 다시 돌아올려면 Enter 키 입력)
  • :sh
    • vi를 잠시 빠져나가거나 셸 명령을 실행합니다. (vi로 돌아오려면 exit 명령어를 입력해야합니다.)

 

vi 환결 설정

  • 사용자 홈 디렉터리에 .exrc 파일로 저장
  • 환경 변수 EXTINIT에 지정
  • vi의 마지막 행 모드에서 명령으로 실행

 

vi 환결 설정 명령(set)

  • :set nu -> 라인 넘버를 찍어 줍니다.
  • :set nonu -> 찍은 라인 넘버를 삭제 해줍니다.

 

trusted 관계의 서버들을 등록 할 수 있습니다.

Cluster type(분산 시스템)을 구현할 때 자주 사용합니다.

분산 시스템에서 제일 중요한 것은 시간 동기화 이기 때문에 ntpd를 이용해 시간 동기화 또한 해줘야 합니다.

vi /etc/hosts
cat ~/.ssh/known_hosts

 

시간 ntp 설정
systemctl status ntpd          # ntpd 상태 확인
systemctl start ntpd           # ntpd 시작
systemctl enable ntpd          # 부팅시 자동 시작 설정
ntpq -p                        # 시작동기화 여부 확인

'AWS Cloud School > Linux, Network' 카테고리의 다른 글

DMZ (Demilitarized Zone)란?  (1) 2024.02.01
Network 주요 기기 및 기술 설명  (0) 2024.01.30
Linux - Shell, alias, 방화벽, 환경설정  (2) 2024.01.21
CentOS에서 보안 회선 VPN 구성 (이론)  (0) 2024.01.21
Linux - (1)  (0) 2024.01.20
'AWS Cloud School/Linux, Network' 카테고리의 다른 글
  • Network 주요 기기 및 기술 설명
  • Linux - Shell, alias, 방화벽, 환경설정
  • CentOS에서 보안 회선 VPN 구성 (이론)
  • Linux - (1)
인프라 감자
인프라 감자
  • 인프라 감자
    삶은 인프라
    인프라 감자
  • 전체
    오늘
    어제
    • 분류 전체보기 (243)
      • 클라우드&인프라 (28)
        • 인프라 공부 (4)
        • AWS 구조와 서비스 (18)
        • 클라우드 공부 (4)
        • Terraform (2)
      • AWS Cloud School (13)
        • project (5)
        • Linux, Network (6)
        • Docker (2)
      • BackEnd (162)
        • JAVA 공부 (15)
        • 알고리즘 공부 (71)
        • MySQL 문제 풀기 (8)
        • 스프링 핵심 원리 - 기본편 (18)
        • 스프링 MVC 1편 (4)
        • 자바 ORM 표준 JPA 프로그래밍 (21)
        • 실전! 스프링 부트와 JPA 활용1 (8)
        • 실전! 스프링 부트와 JPA 활용2 (5)
        • 스프링 데이터 JPA (8)
        • Querydsl (4)
      • 혼자하는 프로젝트 (32)
        • 배달의 민족 클론코딩 (7)
        • 나만의 프로젝트 (10)
        • 스프링 부트로 구현한 웹 (15)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Email
    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    스프링 핵심 원리-기본편
    VPN
    dp
    querydsl
    다이나믹 프로그래밍
    유니온 파인드
    자동 배포
    이것이 자바다
    쿼드 압축
    정렬
    중첩 선언
    조합
    네트워크 기본 용어
    프로그래머스
    상속
    백트래킹
    완전탐색
    디팬스 게임
    linux
    자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
인프라 감자
Linux vi shell 사용
상단으로

티스토리툴바