리눅스 vi 명령어 모음

by 파시스트 posted Apr 10, 2017
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

<command mode>


h 왼쪽

j 아래

k 위

l 오른쪽

H,J,K,L(대문자): 끝까지 이동


w:

단어의 처음

특수기호 인식

왼->오

공백인식


b:

단어의처음

특수기호 인식

오->왼

공백인식


e:

단어의 끝

특수기호 인식

왼->오

공백인식


W,B,E(대문자): 특수기호 인식X


줄의 맨 처음(home) : 0 또는 ^

줄의 맨 끝(end) : $


문서의 맨 처음: gg 또는 [[

문서의 맨 끝: G 또는 ]]


화면의 처음으로 이동: H

화면의 중간으로 이동: M

화면의 끝으로 이동: L



책갈피 설정: m + (a~z 또는 A~Z)


책갈피 설정한곳으로 이동: ` + (a~z 또는 A~Z)


마지막 위치로 이동: ``


* 책갈피 기능은 1회성 (문서 닫으면 전부 사라짐)



<edit mode>


i : 현재 위치에서 입력

a : 한칸 오른쪽으로 이동해서 입력 (행 가장 끝에 내용 추가할때 사용)

I : 현재 행의 가장 왼쪽으로 이동해서 입력

A : 현재 행의 가장 오른쪽으로 이동해서 입력

o : 현재 행 아래에 빈 행을 추가해서 입력

O : 현재 행 위에 빈 행을 추가해서 입력

s : 현재 문자를 지우고 입력

S : 현재 행 내용을 지우고 입력


x : 현재 문자를 지움

X : 앞 문자를 지움

r : 현재 문자 하나만 수정

R : 수정모드 (단어가 밀리지 않음)

dd : 현재 행을 삭제

(숫자)+dd : (숫자)행 만큼 삭제


yy : 행 복사

(숫자) + yy : (숫자)행 만큼 복사

p : 현재 행 아래에 붙여넣기

P : 현재 행 위에 붙여넣기



** 조합 예: 

d$ : 현재 행에서 커서 뒷부분 지움

(알파벳 두개입력하는것 응용)




되돌리기(ctrl+z) : u

ㄴ 반대: crtl + r


v + 이동 : 드래그



<command line mode>


/(내용) : 검색

n: 다음으로

N: 이전으로



?(내용) : 검색

n: 이전으로

N: 다음으로



:set nu : 행번호 (= se nu)

:set nonu : 행번호X


:[범위]s/[기존문자]/[치환할문자]

:5s/passwd/samadal -> 5번째 행의 passwd를 samadal로 치환

:20,23s/PASS/madal -> 20~23행의 PASS를 madal로 치환

:%s/MAX/dalma -> 문서 전체의 MAX를 dalma로 치환

:56s/i/a/g -> g: 행에 중복문자 치환


:!(명령어) : 외부명령어 실행


:.!(명령어) : 외부명령어 실행해 문서 내에 출력

(내용이 없는 행에 커서를 두고 쓰기!)


crtl+(w,n) : 창 나누기

ctrl + ww : 창 바꾸기

:f : 문서 정보


:e [경로] : 문서 열기

:enew : 새 문서 열기

:save [이름] : [이름]으로 저장

:w : 저장



:[숫자]r [파일] => 편집중인 문서 [숫자]라인 다음줄부터 [파일]내용 추가

:[숫자]r! [명령어] => 편집중인 문서 [숫자]라인 다음줄부터 [명령어] 결과값 추가


:[숫자] => 커서를 [숫자]행으로 이동


Booting


시스템 종료와 재부팅

 

# shutdown -h now -> 시스템 종료

# shutdown -h +20 "The system will shutdown in 20minutes" ->시스템 관리자가 사용하는 사용자들에게 알려주는 메시지 

# shutdown -r now[시간입력해야됨] -> 리부팅

# shutdonw -c -> 예약된 shutdown 취소

# halt   -> 시스템 종료

# reboot -> 리부팅 

 

실행 레벨

 

# vi  /etc/inittab

Run Level 0 : 시스템을 종료할 때 사용하는 레벨이다.

Run Level 1 : 싱글 유저모드라고 하며, 기본적으로 관리자 권한의 셸을 얻게 된다.

                    그러나 대부분의 데몬들이 실행되지 않기 때문에 기능은 제약되어 있다.

Run Level 2 : NFS(Network File System)를 지원하지 않는 다중 사용자 모드이다.

Run Level 3 : 일반적인 기반의 인터페이스를 가진 다중 사용자 모드다.

Run Level 4 : 기본적으로 사용되지 않으나 여러분이 임의로 정의해서 사용할 수 있는

                    레벨이다.

Run Level 5 : 기본적으로 Run Level 3 과 같으나, GUI 환경을 지원한다.

Run Level 6 : 재부팅한다. 

 

runlevel 치면 현재 초기화 레벨을 볼수있음.

vi.png




저희는 # vi  /etc/inittab 들어가서 id:5:initdefault가 되있을탠대 5를 3레벨로 바꿔서 하겠습니다.

Run Level 3 : 일반적인  기반의 인터페이스를 가진 다중 사용자 모드다. 레벨5은 윈도우 모드라 생각하시면 됩니다. 바꾸고

reboot하시면 됩니다.

 

기본 명령어


# man [option] <command> -> 명령어에 대한 도움말 출력


메뉴얼단락

man.png



-a  -> section 별 모든 설명서 출력

<space> -> 페이지단위로 스크롤

<d> -> 반페이지 이동

<b> -> 페이지단위로 이전페이지로 이동

<q> -> quit


man ls 해서 설명들어가면 q누르면 거기서 나와짐

man -a ls

man -a socket 네트워크 함수관련 메뉴얼 설명

man date


synopsis 구조 description 구조 스페이스바 누르면 다음페이지 넘어감

D 반페이지 식 넘기기 B 뒤 페이지로 

 

# uname -> 시스템에 대한 정보 출력 uname -a 

-a -> 모든 정보 출력

-m -> 하드웨어 타입 [아키텍쳐]

-n -> hostname

-r -> 운영체제 release 커널 릴리즈

-s -> 운영체제 name


# date -> 시스템 날짜정보 설정 및 출력

# date [MMDDhhmmYY] 

       월 일 시간 분 년도

# cal -> 현재 월에 해당하는 달력 정보 출력

# cal YYYY -> 해당 년도의 1년의 달력 정보 출력


date 0715150013


# hwclock -> 하드웨어 시간 동기화  hw 하드웨어

-r -> 하드웨어 현재시간 출력

-s -> 하드웨어 시간을 현재시간에 동기화

-w -> 시스템시간을 하드웨어에 동기화


# rdate -> ntp(network time protocol)에 의해 시간동기화 //리모트 데이터//시간만 체크하는 서버

-p -> ntp서버의 현재시간 확인 공용 운용중인 ntp 서버 >>(time.bora.net) ///rdate -p time.bora.net 현재시간출력

-s -> ntp서버을 시스템 시간에 동기화 //rdate -s time.bora.net  


# pwd -> print working directory 경로 출력 [현재 작업경로 출력]

       pwd         =   /root/바탕화면 [처음에 / root 라는최상위 딜렉토리 중간에 /는 구분하는 표시] 



# cd -> change directory [경로이동할대 사용하는 명령어] 

# cd -> 로그인 사용자의 홈디렉토리로 이동 그냥 cd는 로그인한 사용자 홈 디렉토리로이동 ┐같음

# cd ~ -> 로그인 사용자의 홈디렉토리로 이동                                           ┘

# cd ~[user_name] -> 특정사용자의 홈디렉토리로 이동

.  -> 자기자신의 디렉토리

.. -> 상위 디렉토리

~  -> 홈 디렉토리

# cd  ~linux   ( linux의 홈디렉토리 )

# cd  ~+        ( 현재 작업 디렉토리 )

# cd  ~-        ( 이전 작업 디렉토리 )    ex>  cd  ~-

# cd  ~          (사용자의 홈디렉토리 )

# cd              (사용자의 홈디렉토리 ) 


# ls -> 파일/디렉토리 list 출력 list 약어

-a -> 모든 파일 리스트 출력(숨김파일포함)

-l -> long type 으로 출력 //파일들 속성값

-d -> 디렉토리 속성값 출력 -ld

-n -> id 값 출력

-i -> i-node 출력 앞에숫자는 파일 수

-F -> 파일 유형 출력 // 뒤에 /붙으면 딜렉토리 뒤에 *붙어잇으면 실행파일 뒤에@있으면 링크파일 

-R -> Recursive (하위경로포함)//// 모든 리스트 출력


쉘[사용자와 대화를 하게 해줌].으로 시작하는 파일들 환경설정에 관련됨//.으로 no시작은 일반 파일 터널 하드웨어 


# which   -> PATH에 있는 명령어의 절대경로

# whereis -> PATH에 있는 명령어의 절대경로 및 man page 경로

# whatis  -> man page의 간략한 설명


# echo [문자열] -> 입력문자열[키보드]을 표준출력장치[모니터]에 출력        $PATH 경로정보 출력

 


# history -> 사용했던 명령어 목록 출력 //!하고 번호하면내가사용했던거 다시사용됨.

# history <n>  -> n 만큼의 목록 출력

!<n> -> n번째 명령어 재사용

!!   -> 직전 명령어 재사용

-> Up&Down key 를 이용해서 이전 사용했던 명령어 재사용


# alias -> 별칭

# alias -> 별칭되어있는 정보 출력

# alias c='clear'


@@ 접속관련명령어


# id [user_name] -> 사용자 정보 확인

 id user 1 // uid=500아이디(user1) gid=500그룹


# logname -> 시스템에 로그인한 자신의 사용자명 출력


# w -> 접속한 사용자 정보 확인

 

 TTY 터미널

 밑에 것들 가상터미널

tty 치면 어떤 경로 로 쓰는지 알수잇음 


# who [option] -> 시스템에 로그인한 사용자 정보 확인


-w -> write 사용가능 여부 확인


# wall -> 로그인 한 모든 사용자에게 메시지 전송


터미널 두개키고


su -user1/// tty id  사용자 $

tty                   관리자 #

 

write user1 /dev/pts/0 

write root /dev/pts/0

다른쪽 pts/1

 

빠져나갈댄 컨트롤+D


# write <user_name> [dev_name] -> 문자메시지 전달 가능.


# whoami -> 로그인 한 자신이 누구인지 확인


# who am i -> 로그인 한 자신이 누구인지 확인


# users -> 현재 접속한 사용자들의 사용자 ID 확인


■VI 명령어

1.png


 

-> 대기모드(normal mode) -> esc

-> 편집모드(edit mode)   -> i,I,a,A,o,O,r,R,s,S

-> 실행모드(ex mode)-> :,/,?

 

          ㅇ대기모드[처음상태]   ㅇ대기모드[처음상태]

 

 

          ↓[i,l...]  ↑esc           ↑esc   ↓:,/,?       esc누르면 대기모드로

 

          ㅇ편집모드        ↔(x안됨)      ㅇ실행모드 

! 대기모드 -> 커서 이동은 반드시 대기모드상태에서 수행.

h -> 좌

j -> 하

k -> 상

l -> 우

 

w -> word 단위로 이동, 다음 단어의 처음으로 이동(forward)

e -> word 단위로 이동, 단어의 끝으로 이동(end)

b -> word 단위로 이동, 이전 단어의 처음으로 이동(back) 

 

Ctrl+f -> 페이지단위로 이동(앞)

Ctrl+d -> 반페이지단위로 이동(앞)

Ctrl+b -> 페이지단위로 이동(뒤)

Ctrl+u -> 반페이지단위로 이동(뒤)

Ctrl+g -> 커서가 몇번째 줄에 있는지 확인 

 

x     -> 현재 커서에 있는 문자 삭제

D     -> 현재 커서 위치부터 마지막 칼럼 삭제

dd    -> 현재 커서가 있는 라인 복사 및 삭제 

. -> 마지막 작업 재 수행

~ -> 대소문자 치환(toggle) 

 

! 파일오픈

# vi [file_name]

 

! 다중파일오픈

# vi [file1] [file2] [file3]

:<n/N> -> 다음 파일로 이동 앞으로 :n 전폴더 :N

:args  -> 현재 편집중인 파일 확인:::

 

! 화면 분할 오픈

# vi -o file1 file2

 

# vi -o  [file1] [file2] [file3] -> 수평 균등분할 후 파일 오픈

                                    화면간 이동: Ctrl+ww

 

~/ [home디렉토리] / ./[현재디렉토리] 

 

# vi  .exrc

    set  nu      행의 숫자를 보이게 한다.

    set  ic        대소문자를 구분하지 않는다.

    set  ts=4    tab을 눌렀을때 간격을 4로 설정한다. (기본 8 )

    set  ai        자동 들여쓰기한다.

■ shell 특수문자(meta-character)

     sheel.png



 ! 메타문자

>  -> 표준출력 전환 리다이렉션기호

>> -> 추가 출력에 대한 리다이렉션기호

<  -> 표준입력 전환 리다이렉션 기호

<< -> 추가 입력

*  -> 모든 문자열과 치환

?  -> 단일문자와 치환

|  -> 표준출력을 입력으로 보내는 파이프기호 //표준출력을 입력으로보내는 프로세스관에 데이터를전할대 사용대는

|| -> or 조건부실행 

&  -> 백그라운드 실행

&& -> and 조건부 실행

#  -> 주석처리   //   ; 두가지더 주석처리됨 

$  -> 변수에 대한 접근

 

1. 문자나 단어의 특별한 의미를 제거하고자 할 때 사용

- 모든 특수문자의 의미를 제거                  :  Single Quotes ( '  ' )

- 대부분의 특수문자들을 보호                   Double Quotes ( "  " )

- 다음에 나오는 문자의 특별한 의미를 제거 Backslash (  \  )

<연습>

# echo  $PATH

# echo  '$PATH'

# echo  "$PATH"

# echo  \$PATH 

 

- ` ` 로 묶여진 문자열은 명령어로 인식됨    : Backquotes ( `  ` )  `< 키보드 1 왼쪽꺼임

-                      shell 변수                       : Dollar sign (  $  )

<연습>

# echo  "Current  directory  is  `pwd` "

# name=edu0

# echo  $name 






Articles

1 2 3 4 5 6 7