본문 바로가기
정보보안/이론

[KITRI] Day3. vim 및 리눅스 기본 명령어-1

by 민-Zero 2020. 4. 22.

에디터 사용
X윈도우상 에서 사용하는 에디터 gedit이다. 터미널에서 gedit이라고 명령을 입력하게 되면 사용할 수 있고 프로그램 탭에서 텍스트 편집기를 선택해도 된다. 
해당 에디터는 일반적인 메모장이나 텍스트 편집기와 비슷하다.

vi 에디터, 일반적으로 서버에 접근할때 그래픽 환경이 아니라 원격 접속을 통해 텍스트 환경에서 수행하게 된다. 따라서 이때 사용하는 것이 vi 에디터이다. 에디터 실행은 vi나 vim이라고 명령을 실행하면 된다.

 

vi는 총 3가지의 모드가 존재한다. vi에 처음 접근하게 되면 만나는 명령모드, 글씨를 입력하는 입력 모드, 명령어를 수행하는 라인 명령 모드가 있다.

입력, 라인 명령 모드에서 esc를 누르면 명령모드로 돌아가게 된다. 명령 모드에서 i, a, o를 입력하면 입력 모드로 전환되고 :을 입력하게 되면 라인 명령 모드로 진입하게 된다.

 

vi 단축키


1. 명령(편집) 모드 이동
   h, j, k, l : 좌하 상우 1 문자씩 이동
   l : 우(오른쪽)로 1문자 이동
   5l : 우(오른쪽)으로 5 문자 이동
   7j : 하(아래)으로 7 문자 이동
   w : 다음 1 단어 첫 문자 이동
   b : 이전 1단어 첫문자 이동
   5w : 다음 5 단어 첫 문자 이동
   ) : 다음 1 문장 첫 문자 이동
   ( : 이전 1문장 첫문자 이동
   6) : 다음 6 문장 첫 문자 이동
   } : 다음 1 문단 첫 문자 이동
   { : 이전 1문단 첫문자 이동
   2} : 다음 2 문단 첫 문자 이동

   H : head, 커서를 현재 화면의 맨 위로 이동
   M : middle. 커서를 현재 화면의 중간으로 이동 
   L : low, 커서를 현재 화면의 맨 밑으로 이동

   1G, gg : 파일(전체)에서 1행으로 이동
   100G : 파일(전체)에서 100행으로 이동
   G : 파일(전체)에서 마지막행으로 이동

2. 명령(편집) 모드 삭제(잘라내기)
   x, [Delete] : [커서부터] 1 문자 삭제
   dd : [커서부터] 1행 삭제
   5dd : [커서부터] 5행 삭제
   dw : [커서부터] 다음 1 단어 삭제
   d5w : [커서부터] 다음 5 단어 삭제
   d) : [커서부터] 다음 1 문장 삭제
   d4) : [커서부터] 다음 4 문장 삭제
   dG : [커서부터] 마지막행까지 삭제
   
3. 명령(편집) 모드 복사 & 붙여 넣기
   p : 붙여넣기
   5p : 5번 연속 붙여넣기

   yy : [커서부터] 1행 복사
   2yy : [커서부터] 2행 복사
   yw : [커서부터] 1 단어 복사
   y5w : [커서부터] 5 단어 복사

6. ex(마지막행) 모드 편집 명령
   :[n] d : n행 삭제
   :[n], [m] d : n행부터 m행까지 삭제
   :1,$d : 1행부터 마지막행까지 삭제
   :%d : 전체(1행부터 마지막행) 삭제
   :.d : 커서행 삭제

   :[n]co[x] : n행을 복사하여 x행 아래에 붙여 넣기
   :[n],[m]co[x]: n행부터 m행까지 복사하여 x행 아래에
  붙여 넣기
   :.,[m]co[x] : 커서행부터 m행까지 복사하여 x행 아래에
  붙여 넣기

   :5,10co100 : 5행부터 10행까지 복사하여 100행 아래에
  붙여 넣기
   :5,10co0 : 5행부터 10행까지 복사하여 1행에 붙여 넣기

   :[n]mo[x] : n행을 잘라내여 x행 아래에 붙여넣기
   :[n],[m]mo[x]: n행부터 m행까지 잘라내어 x행 아래에

6. ex(마지막행) 모드 검색
   /패턴 : 아래 방향으로 '패턴' 검색
   ?패턴 : 윗방행으로 '패턴' 검색
   / [Enter] : 아래 방향으로 '패턴' 계속 검색
   ? [Enter] : 윗방향으로 '패턴' 계속 검색
   n : 찾던(정) 방향 계속 검색
   N : 반대(역) 방향 계속 검색

7. ex(마지막행) 모드 치환
   :.s/old/new : 현재행의 old문자열을 new문자열로 치환
   :4,10s/old/new : 4행부터 10까지 old문자열을 new문자열
  로 치환(1행당 1 문자열씩)
   :4,10s/old/new/g : 4행부터 10까지 old문자열을 new문자열
  로 치환(1행당 여러 문자열씩)
   :1,$s/old/new : 1행부터 마지막행까지 old문자열을
  new문자열로 치환(1행당 1문자열씩)
   :%s/old/new : 1행부터 마지막행까지 old문자열을
  new문자열로 치환(1행당 1문자열씩)
   :%s/old// : 1행부터 마지막행까지 old문자열을
  빈 문자열로 치환(1행당 1 문자열씩)

8. ex(마지막행) 모드 저장/종료
   :q : vi편집기를 종료(수정 후에는 종료 X)
   :q! : vi편집기를 종료(수정 후에도 종료 가능)
   :w : 편집 내용 (동일파일명) 저장
   :w 파일명 : 편집내용 다른(파일명) 저장
   :wq : 편집 내용 저장 후 종료
   :x : 편집내용 저장후 종료
   ZZ : 편집내용 저장후 종료

9. ex(마지막행) 그 외 기능
   :r 파일명 : 다른(파일명) 내용을 불러오기
   :[n]r 파일명 : n행 밑에 다른(파일명) 내용을 불러오기
   :!명령어 : 외부(시스템) 명령어를 실행

 

리눅스 기본 명령어

 

ls 명령어

  -> ls  [옵션]  [파일/디렉토리]

ls 명령어는 list라는 뜻으로 현재 위치하고 있는 디렉토리의 파일을 list형태로 출력해주는 명령어이다. 다양한 옵션을 통해 보여지는 목록의 형태를 변경할 수 있다. 

ls 명령어의 각 옵션들을 정리하면 아래와 같다.
 ls : 현재 디렉토리의 파일/디렉토리의 목록 출력
 ls -a : --all, 숨김 파일/디렉토리까지 출력
 ls -A : --almost-all, .과 ..을 제외한 숨김
  파일/디렉토리까지 출력
 ls -l : --format=long, 길게(자세히) 출력
          만든시간,수정시간,접근시간,용량,소유주,그룹
 ls -d : 디렉토리를 검색하는 경우 디렉토리안의 내용을
  보여주지 않고, 디렉토리 자체의 내용을 출력
 ls -l -h : 목록을 자세히 용량(자동) 출력
  (--human-readabl)
 ls -l : 목록을 자세히(수정시간) 출력
 ls -l --time=ctime : 목록을 자세히(생성시간) 출력
 ls -l --time=atime : 목록을 자세히(접근시간) 출력

pwd 명령어

현재 위치하고 있는 디렉토리의 위치를 절대경로로 볼 수 있는 명령어이다.

pwd : Print Working Directory, 작업(현재) 디렉토리 위치출력

 

cp 명령어

  -> cp  [옵션]  source(원본)  destination(복사본)

cp 명령어는 copy라는 뜻으로 파일/디렉토리를 복사할 수 있게 해주는 명령어 이다.

cp 명령어를 확인하기 위해 dir1 이라는 디렉토리 1개와 file1이라는 빈파일 1개를 만들었다.

그냥 일반적인 파일의 경우 cp명령을 사용하면 원하는 대상을 원하는 이름으로 복사할 수 있다. 하지만 복사하고자 하는 대상이 디렉토리라면 그냥 cp명령으로는 복사할 수 없다. 따라서 이때는 -r 옵션이 필요하게 된다.

만약 복사하고자 하는 파일의 이름과 동일한 이름의 파일이 이미 존재한다면 해당 파일을 덮어씌울것인지 물어보게 되며 y를 입력하면 덮어씌워지고 n을 입력하면 덮어씌우지 않게 된다.

 

cp 명령어와 옵션들에 대해 정리하면 아래와 같다.

cp  src  dst : src의 파일을 dst로 이름으로 수정하여 복사 이때, src는 파일이고, dst 라는 이름의 파일/디렉토리 존재 X

- src가 파일이고, dst가 동일한 이름의 파일로 존재 O 
        : 기존 동일한 이름의 dst에 덮어씌울 것인지 물어본다. 
- src가 파일이고, dst 라는 이름의 디렉토리 존재 O 
        : dst 디렉토리안에 src라는 이름으로 복사

cp  src1  src2  src3  dst : 원본 src1, src2, src3를 복사하여 dst 디렉토리안에 붙여넣기 (dst는 디렉토리여야만 한다.) 
cp -r source destination : 디렉토리 복사시 사용한다. 파일을 목적으로 만들어진 명령어 이기 때문에 디렉토리는 복                                       사가 안된다. 따라서 디렉토리 자체를 복사하고 싶다면 -r 옵션이 필요하다.
cp -f source destination : 물어보지 않고 강제로 덮어씌운다.
cp -i source destination : 동일 파일이 존재하는 경우 질문이 등장한다. 
cp -p source destination : 원본의 소유주와 생성시간등 원본 그대로 복사, root만 가능하다.
cp -a source destination : all, 원본파일의 속성, 링크 정보들을 그대로 유지하면서 복사,  -R -p -d 을 한번에 쓰는것                                       과 같은역할을 한다.


rm 명령어

rm 명령어는 원하는 파일/디렉토리를 삭제해주는 명령어이다.

기본적으로 삭제의 경우 의도치않게 파일을 지우는 일을 줄이기 위해 삭제시 삭제여부를 물어보도록 설정이 되어 있다.

이때 -f 옵션을 사용할 경우 삭제여부를 묻지않고 바로 삭제하도록 할 수 있으며 디렉토리의 경우 -r옵션을 붙여야 삭제가 가능하다.

 

rm 명령어의 옵션을 정리하면 아래와 같다.  

rm 파일명 : 해당 파일을 삭제 

rm -i 파일명 : 삭제시 삭제여부를 물어보지 않도록 설정되어있을 경우 삭제여부를 질문하도록 하는 옵션 
rm -r 디렉토리 : 디렉토리 삭제가능
rm -f 파일명 : 강제(force)옵션으로 -i 옵션 상쇄

 

touch 명령어

touch 명령어는 파일이나 디렉토리의 수정/접근 시간을 변경한다. 만약 파일이 존재하지 않을 경우 빈 파일 또는 빈 디렉토리를 생성 한다.

비어있는 디렉토리에 touch 명령을 실행하면 지정한 이름을 가지는 빈파일이 생성되는 것을 확인할 수 있다. 만약 파일이름 앞에 .을 붙인다면 숨김파일로 생성되어 ls -a 옵션을 붙여야 확인할 수 있는것을 볼 수 있다.

-t 옵션을 사용하면 해당 파일의 날짜정보를 원하는 시간으로 변경할 수 있다. file1의 날짜정보 4/27일을 2010년 1월1일 12:00 으로 변경한 모습이다.

 

touch 명령어의 옵션을 정리하면 아래와 같다. 

touch  파일이름 - 파일이름이 존재하는 경우 현재시간으로 수정/접근 시간을 변경, 존재하지 않는다면 빈 파일을 생성

touch -c 파일이름 - 해당 파일의 날짜정보를 현재 시간으로 변경한다.

touch -t YYYYMMDDhhmm 파일이름 - 년월일시분 을 입력하면 해당 정보로 파일의 날짜 정보가 변경된다.

touch -r 파일A 파일B - 파일B의 날짜정보를 파일A와 같게 만든다.

댓글