<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! [명령어] => 편집중인 문서 [숫자]라인 다음줄부터 [명령어] 결과값 추가
:[숫자] => 커서를 [숫자]행으로 이동
[출처] 리눅스 vi 명령어 정리|작성자 동글
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 /etc/inittab 들어가서 id:5:initdefault가 되있을탠대 5를 3레벨로 바꿔서 하겠습니다.
Run Level 3 : 일반적인 셸 기반의 인터페이스를 가진 다중 사용자 모드다. 레벨5은 윈도우 모드라 생각하시면 됩니다. 바꾸고
reboot하시면 됩니다.
■기본 명령어
# man [option] <command> -> 명령어에 대한 도움말 출력
메뉴얼단락
-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 명령어
-> 대기모드(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)
! 메타문자
> -> 표준출력 전환 리다이렉션기호
>> -> 추가 출력에 대한 리다이렉션기호
< -> 표준입력 전환 리다이렉션 기호
<< -> 추가 입력
* -> 모든 문자열과 치환
? -> 단일문자와 치환
| -> 표준출력을 입력으로 보내는 파이프기호 //표준출력을 입력으로보내는 프로세스관에 데이터를전할대 사용대는
|| -> 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
[출처] 리눅스 VI명령어 & 부팅 & 기본명령어 & 특수문자.|작성자 김동하