반응형

리눅스 커널 구조


운영체제의 관리 자원

물리적인 자원 : CPU, 메모리, 디스크, 터미널, 네트워크 등 시스템 구성 요소 및 주변 장치들

추상적인 자원 : task, 세그먼트, 페이지, 파일, 통신 프로토콜, 패킷 등

  * 물리적인 자원에 대응되지 않으며 추상적인 객체로만 존재하는 자원 : 보안, 사용자 ID에 따른 접근제어 등


커널이 관리하는 자원 ( 물리적인 자원 + 추상적인 자원)

CPU - task                  (Task 관리자)            => task의 생성, 실행, 상태 전이, 스케줄링, 시그널 처리, 프로세스 간 통신 등의 서비스 제공

Memory - Segment,page  (Memory 관리자)         => 물리 메모리 관리, 가상 메모리 관리, 세그멘테이션, 페이징, 페이지 부재 결함 처리 등의 서비스 제공

Disk - File                  (File System)              => 파일 생성, 접근 제어, inode 관리, 디렉터리 관리, 수퍼 블록 관리 등의 서비스 제공

Network 장치 - Socket     (Network 관리자)         => socket 인터페이스, TCP/IP 같은 통신 프로토콜 등의 서비스 제공

각종 장치 - Device Driver  (Device Driver 관리자)  => 디스크나 터미널, CD, 네트워크 카드 등과 같은 주변 장치를 구동하는 드라이버들로 구성


" 운영체제는 시스템 호출을 통해 테스크가 자원을 사용할 수 있게 해주는 자원관리자"



각 디렉터리의 내용


kernel 디렉터리

- task 관리자가 구현한 디렉터리

- task의 생성과 소멸, 프로그램의 실행, 스케줄링, 시그널 처리 등의 기능이 구현되있는 디렉터리


arch 디렉터리

- 리눅스 커널 기능 중 하드웨어 종속적인 부분들이 구현된 디렉터리

- CPU의 타입에 따라 하위 디렉터리로 다시 구분 ( 인텔의 i386, ARM계열, 모토로라의 68시리즈, SUN의 Sparc, IBM의 PPC 등 )


fs 디렉터리

- 리눅스에서 지원하는 다양한 파일시스템과 open(), read(), write() 등의 시스템 호출이 구현된 디렉터리.

- 대표적인 파일시스템 (ext2, ext3, ext4, nfs, fat,proc, sysfs, devfs, isofs, ntfs, reiserfs, f2fs, xfs 등)


mm 디렉터리

- 메모리 관리자가 구현된 디렉터리

- 물리 메모리 관리, 가상 메모리 관리, task마다 할당되는 매모리 객체 관리 등의 기능이 구현


driver 디렉터리

- 리눅스에서 지원하는 디바이스 드라이버가 구현된 디렉터리

- 디바이스 드라이버( 디스크, 터미널, 네트워크 카드 등 주변 장치를 추상화시키고 관리하는 커널 구성 요소 ) 


net 디렉터리

- 리눅스 커널 소스 중 상당히 많은 양을 차지하는 디렉터리

- 리눅스가 지원하는 통신 프로토콜이 구현된 디렉터리

- TCP/IP 뿐만아니라 UNIX 도메인 통신 프로토콜, 802.11, IPX, RPC, AppleTalk, bluetooth, socket 등 다양한 통신 프로토콜 구현


ipc 디렉터리

- 리눅스 커널이 지원하는 프로세스간 통신 기능이 구현된 디렉터리

- 대표적인 프로세스간 통신 ( 파이프, 시그널, SYS V IPC, 소켓 등 )

  * 파이프는 fs디렉터리에, 시그널은 kernel 디렉터리에, 소켓은 net 디렉터리에 구현


init 디렉터리

- 커널 초기화 부분, 즉 커널의 메인 시작 함수가 구현된 디렉터리


include 디렉터리

- 리눅스 커널이 사용하는 헤더 파일들이 구현된 디렉터리


others 디렉터리

- 리눅스 커널의 주요 기능이 구현된 디렉터리 외에도 리눅스 커널 소스에는 여러 다른 디렉터리가 존재한다.

- 대표적으로 (리눅스 커널 및 명령어들에 대한 자세한 문서 파일들이 존재하는 Documentation 디렉터리, 

                 커널 라이브러리 함수들이 구현되는 lib 디렉터리, 

                 커널 구성 및 컴파일 시 이용되는 스크립트 들이 존재하는 scripts 디렉터리 등)이 리눅스 커널소스에 존재



'Study Note > OS' 카테고리의 다른 글

[Linux] Task 관리  (0) 2016.03.07
[Linux] 리눅스 커널 컴파일 (fedora)  (0) 2016.03.07
[Linux] Shell Script  (0) 2016.02.15
[Linux] Shell & Shell 내장 명령어  (0) 2016.02.15
[Linux] Vi Editor  (0) 2016.02.15
반응형

Shell Script

쉘 실행 b.sh

1) . ./b.sh -> login sh로 실행(bash)

2) ./test.sh -> test.sh에 명시된 sh로 실행 -> 실행권한 필요!!

3) sh test.sh ->본쉘(sh)로 실행

4) bash test.sh - >bash로 실행

5) ksh test.sh - > ksh로 실행

 

변수의 기본

변수를 사용하기 전에 미리 선언하지 않으며, 변수에 처음 값이 할당되면서 자동으로 변수가 생성

모든 변수는 문자열(String)’로 취급

변수 이름은 대소문자를 구분

변수를 대입할 때 ‘=’ 좌우에는 공백이 없어야 함

 

※ 변수의 입력과 출력

‘$’문자가 들어간 글자를 출력하려면 ‘’로 묶어주거나 앞에 ‘\’를 붙임

“”로 변수를 묶어줘도 된다.

 

(expr은 띄어쓰기 잘해야함 let은 띄어쓰기 상관없음) b.sh 참고

 

※ 파라미터(Parameter) 변수

파라미터 변수는 $0, $1, $2...의 형태를 가짐

전체 파라미터는 $*로 표현

)

명령어

yum

-y

install

gttp

파라미터 변수

$0

$1

$2

$3

 

기본 if

 형식

if [ 조건 ]

then

참일 경우 실행

fi

[조건에 문장이 올 때는 대괄호 x]

 

 

조건 문에 들어가는 비교 연산자

문자열비교

결과

문자열1”=“문자열2”

두 문자열이 같으면 참

문자열1”!=“문자열2”

두 문자열이 같지 않으면 참

-n "문자열

문자열이 null(빈 문자열)이 아니면 참

-z "문자열

문자열이 null(빈 문자열)이면 참

산술 비교

결과

수식1 -eq 수식2

두 수식 또는 변수가 같으면 참

수식1 -ne 수식2

두 수식 또는 변수가 같지 않으면 참

수식1 -gt 수식2

수식1이 크다면 참

수식1 -ge 수식2

수식1이 크거나 같으면 참

수식1 -lt 수식2

수식1이 작으면 참

수식1 -le 수식2

수식1이 작거나 같으면 참

!수식

수식이 거짓이라면 참

 

elif


 형식

if [조건]

then

참일 경우 실행

 

elif [조건]

then 참일 경우 실행

else 거짓일 경우 실행

fi

 

 형식

if [조건]

then

참일 경우 실행

else

 

if [ 조건 ]

then 참일 경우 실행

else 거짓일 경우 실행

fi

fi


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

※ 파일과 관련된 조건

파일 조건

결과

-d 파일이름

파일이 디렉터리면 참

-e 파일이름

파일이 존재하면 참

-f 파일이름

파일이 일반 파일이면 참

-g 파일이름

파일이 set-group-id가 설정되면 참

-r 파일이름

파일이 읽기 가능이면 참

-s 파일이름

파일 크기가 0이 아니면 참

-u 파일이름

파일에 set-user-id가 설정되면 참

-w 파일이름

파일이 쓰기 가능 상태이면 참

-x 파일이름

파일이 실행 가능 상태이면 참

- 만 자주 씀 알아둘 것

 

case~esac (1)

if문은 참과 거짓의 두 경우만 사용 (2중분기)

여러 가지 경우의 수가 있다면 case(다중분기)

ex)

#!/bin/sh

case "$1" in

start|START|Start) &&&&& Yes|Y|Yes|YES)

echo "시작~~“;; &&&&& [nN]*) : n,N으로 시작하는 모든 문자

stop)

echo "중지~~“;;

restart)

echo "다시시작~~“;;

*)

echo "뭔지 모름~~“;;

esac

 

 

※ AND,OR 관계 연산자

and ‘-a' 또는 ’&&‘를 사용

or‘-o' 또는 ’||‘를 사용

 

ex )

#!/bin/sh

echo "보고 싶은 파일명을 입력하세요.“

read fname

if [ -f $fname && -s $fname ] <=> [ -f $fname -a -s $fname ] : 차이점 -a는 두구문에서만 사용

then

head -5 $fname

else

echo "파일이 없거나, 크기가 0입니다.“

fi

 

 

반복분 -for(1)

 

 형식

for 변수 in 1 2 3....

do

반복할 문장

done

 

ex)

#!/bin/sh

for pal in Tom Dick Harry Joe

do

echo "Hi $pal"

done

echo "Out of File"

 

반복문 -for(2)

현재 디렉터리에 있는 셸 스크립트 파일(*.sh)의 파일명과 앞 3줄을 출력하는 프로그램

 

ex)

#!/bin/sh

for fname in $(ls *.sh)

do

cat $fname >>

done

 

반복문 -while(1)

조건 식이 참인 동안 계속 반복

 

#!/bin/sh

while [ 1 ]

do

echo "CentOS 7"

done

 

반복문 -while(2)

비밀번호를 입력받고, 비밀번호가 맞을 때 까지 계속 입력받는 스크립트

 

#!/bin/sh

echo "비밀번호를 입력하세요.“

read mypass

while [ $mypass != "1234 ]

do

echo "틀렸음. 다시 입력하세요.“

read mypass

done

echo "통과~~“

 

until

while 문과 용도가 거의 같지만, until문은 조건식이 참일 때 까지 (=거짓인 동안) 계속 반복한다.

위 예 4행을 until [ $mypass = "1234" ]

 

사용자 정의 함수

 

 형식

함수이름 () {

-- 함수를 정의 내용들

}

 

함수이름 --함수를 호출

 

ex) #!/bin/sh

myFunction(){

echo "함수 안으로 들어 왔음

returu

}

echo "프로그램을 시작합니다.“

myFunction

echo "프로그램을 종료합니다.“

 

함수 파라미터 사용

 

ex) 

#!/bin/sh

hap(){

echo `expr $1 + $2`

}

echo "10더하기 20을 실행합니다

hap 10 20

 

eval

문자열을 명령문으로 인식하고 실행

 

#!/bin/sh

str="ls -l anaconda-ks.cfg"

echo $str

eval $str

 

set$(명령어)

리눅스 명령어를 결과로 사용하기 위해서는 $(명령어) 형식을 사용

결과를 위치변수로 사용하고자 할 때는 set과 함께 사용

 

#!/bin/sh

echo "오늘 날짜는 $(date)입니다,“

set $(date)

echo "오늘은 $4 요일 입니다.“

 

cut 명령어

cut 명령어는 텍스트 파일 내용 중 부분을 지정하여 출력하는 명령어이다.

옵션

-b : byte, 특정 자리만 출력

-c : character(자리수)로 구분하여 출력

-d : 인자로 받은 문자열을 기준으로 필드를 구분함

-f : -d 옵션과 함께 사용되며, 구분된 필드를 출력

 

-b옵션 사용방법

형식

의미

N

N자리

-b1

N,M,C

N자리,M자리,O자리

-b1,3,5

N-

N자리부터 마지막까지

-b10-

N-M

N자리부터 M자리까지

-b5-10

-M

처음부터 M자리까지

-b-10

 

tr 명령어

표준 입력을 표준 출력으로 내보낼 때, 선택한 문자들에 대해서 치환이나 삭제를 수행함

 

 형식

tr 'String1' 'String2' < filename

 

옵션

-d : 제거

-s : 반복된 문자에 대해서 한 번 치환 (반복된 문자를 하나의 문자로 인식)

 

tee 명령어

명령어의 결과를 화면과 파일로 동시에 출력하는 명령어

 

 문법

명령어 | tee [옵션] 파일명

옵션

-a : 파일에 내용 이어 쓰기

-i : interrupt 무시

ex)

#who | tee -a test.out

 

awk 명령어

자료 처리 및 리포트 생성에 사용하는 프로그래밍 언어

 

 문법

awk [옵션] [‘[‘/찾을문자열/’] { 명령어 }‘] 파일명 

 

필드값 변수

$0 -> 모든 필드 (행의 값 그대로)

$1 -> 첫 번째 필드

$2 -> 두 번째 필드...

$(NF-1) -> 마지막 전 필드

$NF -> 마지막 필드

 

산술연산

echo | awk '{print 3+2}'

 

grep과 같이 패턴 검색 (행 단위)

cat /etc/passwd | grep apache

cat /etc/passwd | awl /apache/

awk /apache/ /etc/passwd

 

마지막 필드의 출력

ls -l test.out | awk '{print $NF}'

 

구분자의 사용

문법

awk -F 구분자 ‘{print $위치순번}’ 파일

예제

find ~ -name "*.sh"|awk -F/'{print $NF}'

 

grepcut의 결합 사용

awk -F : '/user1/{print "username is " $1}' /etc/passwd

 

sed 명령어

비대화형 편집기

명령 행에서 직접 편집 명령어와 파일을 지정하여 작업한 후 결과를 화면으로 확인

원본을 손상하지 않는다.

 

 문법

sed [옵션] ‘명령어파일명

옵션

n : 해당 패턴 or 실행 결과만을 출력

(기본적으로 출력되는 모든 행을 막음)

명령어

p : print 명령 사용자가 지정한 행을 출력

 

ex) '1,3p' -> 1행부터 3행까지 출력

ex) '/yang/p' -> yang이 포함된 행 출력

d : delete명령 사용자가 지정한 행을 삭제

ex) ‘3d' -> 3번째 행을 삭제

ex) '3,$d' -> 3번째 행부터 마지막까지 삭제

r : read 명령 사용자가 지정한 행을 읽어온다

ex) '3r 읽어들일파일‘ [입력할파일]

---> 입력할파일의 3번째 행에 읽어들일 파일의 내용을 읽어와 출력

a\ : append 명령 검색된 패턴 아래 행에 내용을 덧붙인다.

ex) '/패턴/a\내용‘[파일명]

--> 패턴에 일치하는 행의 다음에 내용을 삽입하여 출력

i\ : insert명령 검색된 패턴 위에 내용을 덧붙인다. a\와 사용법은 동일

s : 검색패턴을 치환함

ex) 's/string1/string2/g' 파일명

유용한 표현식

sed '10,$s/^/#/' 파일명 : 10~마지막 줄 모두 주석처리

sed '/^#/d' 파일명 : 주석처리 줄 모두 삭제

sed 's/^/ /' 파일명 : 모든 라인에 1칸 들여쓰기

sed 'a\\' 파일명 : 모든 줄마다 공백라인 추가

sed '/^$/d' 파일명 : 공백라인 제거

 

배열

1차원 배열에 최대 1024개의 요소를 가질 수 있다.

배열의 요소에는 단어나 정수를 지정할 수 있다

배열 첨자는 0부터 시작한다

 

공통 쉘 배열선언

array[0]=tom

array[1]=dan

array[2]=bill

 

배열 호출

# echo ${array[0]}

tom

# echo ${array[*]}

tom dan bill

# echo ${#array[*]}

3

du :

 

※ 이외 유용한 명령어...

sort -k -n -r 5 : 5번째 열 정렬,숫자로인식,reverse

 

echo $? - > 이전 명령 오류가 없을시 0값 리턴 *********************

 

split -l 1000 test1.txt test1_ : 라인별로 나누기

-b 100m test1.txt test1_ : 용량별로 나누기

"   -d : 숫자로 구분 (파일명)

“ -d -a[n] : n자리 수로 파일명 숫자 구분

 

head -n : n만큼 앞에서 잘라서 출력

 

tail -n : n만큼 뒤에서 잘라서 출력

'Study Note > OS' 카테고리의 다른 글

[Linux] 리눅스 커널 컴파일 (fedora)  (0) 2016.03.07
[Linux] 리눅스 커널 구조  (0) 2016.03.07
[Linux] Shell & Shell 내장 명령어  (0) 2016.02.15
[Linux] Vi Editor  (0) 2016.02.15
[Linux] 기본 명령어  (0) 2016.02.15
반응형

Shell & Shell 내장 명령어

 

chsh [옵션] [사용자명] : 기본 셸 바꾸기

-s shell : 지정하는 셸(절대 경로)로 로그인 셸을 바꾼다

-l : /etc/shells 파일에 지정된 셸을 출력

 

셸 내장 명령

echo [-n] [문자열...] : 화면에 한 줄의 문자열을 출력

-n : 마지막에 줄 바꿈을 하지 않는다.

 

[특수문자 *]

ls * : 현재 디렉토리의 모든 파일과 서브 디렉토리를 나열. 서브 디렉토리의 내용도 출력

cp * /tmp : 현재 디렉토리의 모든 파일을 /tmp 디렉토리 아래로 복사

ls -F t* : t, tmp, temp와 같이 파일명이 t로 시작하는 모든 파일의 이름과 종류를 출력

cp *.txt ../ch3 : 확장자가 txt인 모든 파일을 상위 디렉토리 밑의 ch3 디렉토리로 복사

ls -l h*d : 파일명이 h로 시작하고 d로 끝나는 모든 파일의 상세 정보를 출력

 

[ 특수문자 ?[] ]

ls t?.txt : t 다음에 임의의 한 문자가 오고 파일확장자가 txt인 모든 파일 이름 출력

ls -l tmp[135].txt : tmp1.txt, tmp3.txt, tmp5.txt 출력

ls -l tmp[1-3].txt : tmp1.txt, tmp2.txt, tmp3.txt 출력

ls [0-9]* : 파일명이 숫자로 시작하는 모든 파일 목록

ls [A-Zaz]*[0-9] : 영문으로 시작하고 숫자로 끝나는 모든 파일 목록 출력

 

[ 특수문자 ~- ]

~ : 홈 디렉토리

- : 이전 디렉토리

 

[특수문자 ; | ]

; : 왼쪽부터 차례대로 ;로 실행

| : 동시에 실행

 

[특수문자 ‘’“”]

echo '$SHELL' : $SHELL 문자열이 출력

echo "$SHELL" : 환경변수 출력

 

[특수문자 ``]

echo "Today is `date`" : date 명령어는 실행 됨

 

 

배시 셸 환경 설정

 

set : 셸 변수와 환경 변수 모두 출력

env : 환경변수만 출력

export [-n] [셸 변수] : 환경 변수 설정하기

-n : 환경 변수를 셸 변수로 바꿈

ex ) export SOME=test

unset 변수 : 지정된 변수 해제

 

에일리어스와 히스토리

alias 이름 =‘명령’ ex ) alias rm = 'rm -r '

 

unalias 에일리어스 : 에일리어스 삭제

 

history : 명령 입력 기록

 

명령 재실행하기 : !

!! : 바로 직전에 실행한 명령 재실행

!번호 : 히스토리에서 해당 번호의 명령 재실행

!문자열 : 히스토리에서 해당 문자열로 시작하는 마지막 명령 재실행

 

배시 셸 시스템 환경 설정 파일 

시스템 환경 설정 파일

파일

기능

/etc/profile

본 셸이나 본 셸과 호환되는 모든 셸에 공통으로 적용되는 .profile 파일

배시 셸의 경우 /etc/bash.bashrc 파일을 실행

배시 셸이 아닌 경우 프롬프트를 #(root 사용자)$(일반 사용자)로 설정한다

/etc/profile/*.sh파일을 실행

/etc/bash.bashrc

시스템 공통으로 적용되는 .bashrc 파일이다

기본 프롬프트를 설정

sudo 명령과 관련된 힌트를 설정

/etc/profile.d/*.sh

언어나 명령별로 각각 필요한 환경을 설정

필요시 설정 파일을 추가

 

사용자 환경 설정 파일

파일

기능

~/.profile

경로 추가 등 사용자가 정의하는 환경 설정

.bashrc 파일 있을시 실행

~/.bashrc

히스토리의 크기 설정

기본 에일리어스나 함수 등 설정

~/.bash_aliases

사용자가 정의한 에일리어스를 별도 파일로 저장

~/.bash_logout

로그아웃 시 실행할 필요가 있는 함수 등을 설정

 

file [파일명] : 파일의 종류를 알려줌

 

groups [사용자명] : 사용자가 속한 그룹을 알려줌

 

권한

파일

디렉터리

읽기

파일을 읽거나 복사할 수 있다

ls 명령으로 디렉토리 목록을 볼 수 있다

쓰기

파일을 수정, 이동, 삭제할 수 있다(디렉터리에 쓰기 권한있어야함)

파일을 생성하거나 삭제 가능

실행

파일을 실행할 수 있다 (셸 스크립트나 실행파일의 경우)

cd 명령을 사용할 수 있다. 파일을 디렉터리로 이동하거나 복사 가능

 

 

접근 권한 변경 명령

chmod [옵션] 파일 또는 디렉토리 : 파일이나 디렉터리의 접근 권한을 변경

-R : 하위 디렉터리까지 모두 변경 가능

   

기본 접근 권한 확인하고 변경 

umask [옵션] [마스크 값] : 기본 접근 권한을 출력하거나 변경

-S : 마스크 값을 문자로 출력

 

※ 프로세스 관련 명령어

ps [옵션] : 현재 실행 중인 프로세스의 정보를 출력

-e : 시스템에서 실행중인 모든 프로세스 정보 출력

-f : 프로세스의 자세한 정보 출력

-u uid : 특정 사용자에 대한 모든 프로세스 정보 출력

-p pid : pid로 지정된 특정 프로세스의 정보를 출력

 

pgrep [옵션] [패턴] : 지정한 패턴과 일치하는 프로세스의 정보를 출력

-x : 패턴과 정확히 일치하는 프로세스 정보 출력

-n : 패턴을 포함하고 있는 가장 최근 프로세스 정보 출력

-u : 사용자 이름 : 특정 사용자에 대한 모든 프로세스 출력

-l : PID와 프로세스의 이름 출력

-t term : 특정 단말기와 관련된 프로세스의 정보 출력

 

kill [시그널] PID ... : 지정한 시그널을 프로세스에 보낸다

-2 : 인터럽트 시그널을 보낸다 (ctrl+c)

-9 : 프로세스 강제 종료한다

-15 : 프로세스가 관련된 파일을 정리하고 프로세스를 종료. 종료가 안될 수도 있음

 

pkill 명령을 이용해 프로세스 종료 

명령이름으로 찾아 종료하므로 같은 명령이 여러개 검색될 경우 한 번에 모두 종료

ex) ps - fp $(pgrep -x man)

 

포그라운드 작업과 백그라운드 작업

sleep 100 -> 포그라운드 작업

-> sleep 명령이 끝날때까지 기다림

 

백그라운드 작업

sleep 100& -> 백그라운드 작업

[1] 6852

$ -> 프롬프트가 바로 나와 다른 명령을 실행할 수 있다.

 

jobs [%작업 번호] : 백그라운드 작업을 모두 보여준다. 특정 작업 번호를 지정하면 해당 작업의 정보만 보여줌

 

작업 전환 명령

명령

의미

ctrl + z stop [%작업번호]

포그라운드 작업을 일시중지

bg [%작업번호]

작업번호가 지시하는 작업을 백그라운드 작업으로 전환

fg [%작업번호]

작업번호가 지시하는 작업을 포그라운드 작업으로 전환

ctrl + c

작업 종료하기

 

nohup [명령]& : 로그아웃한 뒤에도 백그라운드 작업을 계속 실행

 

정해진 시간에 반복 실행

crontab [-u 사용자 ID] [옵션] [파일 이름] : 사용자의 crontab 파일을 관리

-e : 사용자의 crontab 파일을 편집

-l : crontab 파일의 목록을 출력

-r : crontab 파일을 삭제

 

00 10 * * * /bin/ls -l > /home/yang/crontab : 10시 정각에 모든날에 crontab 폴더에 저 명령해서 나오는 값을 저장

 
※ 압축, 압축해제 명령어

tar 명령[옵션] [아카이브 파일] 파일 이름 : 파일과 디렉터리를 묶어 하나의 아카이브 파일 생성

-cvf : 아카이브생성

-tvf : 아카이브 내용보기

-xvf : 아카이브 압축 해제

-uvf : 아카이브 업데이트

-rvf : 아카이브에 파일 추가

 

gzip [옵션] 파일 이름 : 파일을 압축함

-d : 압축 해제

-l : 압축된 파일의 정보를 보여줌

-r : 하위 디렉토리를 이동하여 파일 압축

 

gunzip 파일 이름 : gz로 압축된 파일의 압축을 푼다.

 

 

'Study Note > OS' 카테고리의 다른 글

[Linux] 리눅스 커널 컴파일 (fedora)  (0) 2016.03.07
[Linux] 리눅스 커널 구조  (0) 2016.03.07
[Linux] Shell Script  (0) 2016.02.15
[Linux] Vi Editor  (0) 2016.02.15
[Linux] 기본 명령어  (0) 2016.02.15
반응형

Vi 에디터

 

[입력모드]

i : 현재 커서 앞에 입력

a : 현재 커서 뒤에 입력

o : 커서가 위치한 다음 행 입력

I : 커서가 위치한 행의 첫 칼럼 이동 입력

A : 커서가 위치한 행의 마지막 칼럼 이동 입력

O : 커서가 위치한 행의 앞에 입력

 

[파일 저장, 종료]

:q : 그냥 종료

:q! : 강제 종료

:w [파일명] : 작업 내용 저장 (파일 명 지정 시 새 파일로 저장)

:wq,:wq!,(명령모드에서) ZZ : 작업한 내용 저장하고 vi 종료

 

[커서 이동 명령]

h, j, k, l : , 아래, ,

^,0 : 현재행의 처음

$ : 현재 행의 마지막

- : 커서를 앞 행의 처음

+,Enter : 커서를 다음 행의 처음

H : 커서를 화면 맨 위로 이동

M : 커서를 화면 중간 행으로 이동

L : 커서를 화면의 맨 아랫 행 이동

w : 다음 단어 첫 글자로 이동

b : 앞 단어 첫 글자로 이동

e : 단어의 마지막 글자로 이동

 

[화면 이동 명령]

^u(ctrl+u) : 반 화면 위로 이동

^d(ctrl+d) : 반 화면 아래로 이동

^b(ctrl+b) : 한 화면 위로 이동

^f(ctrl+f) : 한 화면 아래로 이동

^y(ctrl+y) : 화면을 한 행만 위로 이동

^e(ctrl+e) : 화면을 한 행만 아래로 이동

 

[특정 행 바로 이동]

G(shift+g) : 파일 마지막 행으로 이동

행 번호G : 지정한 행 번호로 이동

:행 번호 : 지정한 행 번호로 이동 (마지막 행 모드)

:$ : 파일의 마지막 행으로 이동(마지막 행 모드)

 

[내용 수정하기]

r : 커서가 위치한 글자를 다른 글자로 수정

cw,#cw : 커서 위치부터 현재 단어의 끝가지 수정 #에는 수정할 단어의 수를 지정 ex)3cw

s,#s : 커서 위치부터 esc 키 입력까지 수정 #에는 수정할 글자 수

cc : 커서가 위치한 행 내용 모두 수정

C : 커서 위치부터 행의 끝까지 수정

 

[내용 삭제하기]

x,#x : 커서 위치의 글자 삭제. #에는 삭제할 글자 수 지정

dw, #dw : 커서 위치의 단어 삭제 , #에는 삭제할 단어 수 지정

dd, #dd : 커서 위치의 행 삭제, #에는 삭제할 행의 수 지정

D : 커서 위치부터 행의 끝까지 삭제

 

[명령 취소하기]

u : 명령 취소

U : 해당 행에서 한 모든 명령 취소

:e! : 마지막으로 저장한 내용 이후의 것을 버리고 새로 작업

 

[복사하기,잘라내기,붙이기]

yy, #yy : 커서가 위치한 행 복사. #에는 복사할 행 수 지정

p : 커서가 위치한 행 아래쪽에 붙임

P : 커서가 위치한 행 위쪽에 붙임

dd,#dd : 삭제와 같은 기능이지만 잘라내는 기능 포함

 

[범위 지정 명령]

1,$,% : 1행부터 마지막 행 까지 지정

1, . : 1행부터 커서가 있는 행까지 지정

., $ : 커서가 있는 행부터 마지막 행까지 지정

,-3 : 현재 행과 이전 세 번째 행까지 ( 총 네 행) 지정

10,20 : 10행부터 20행까지 지정

 

[마지막 행 모드에서 복사,잘라내기,붙이기]

:#y : #으로 지정한 행을 복사 ex) 3y3행을 복사

:<범위>y : 범위로 지정한 행을 복사 ex)2,4y2~4행을 복사

:#d : #으로 지정한 행을 잘라냄(삭제) ex) 3d3행을 잘라냄

:<범위>d : 범위로 지정한 행을 잘라냄(삭제) ex) 1,4d1~4행을 잘라냄

:pu : 현재 행 다음에 버퍼의 내용을 붙임

:#pu : #으로 지정한 다음의 버퍼 내용을 붙임 ex) 4pu

 

[검색하기]

/문자열 : 문자열 아래 방향으로 검색

?문자열 : 문자열을 위 방향으로 검색

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로 바꿀 때 수정할지 여부를 묻는다.

 

[파일 관련 명령]

:r 파일명 : 지정한 파일을 읽어들여 현재 커서 위치에 삽입

:e 파일명 : 지정한 파일로 전환 (기존 파일을 :w 로 저장한 뒤에 실행)

:n : vi 시작 시 여러 파일을 지정했을 경우 다음 파일로 작업 이동

:! [셸 명령] : vi 작업을 잠시 중단하고 셸 명령 실행 (enter키를 입력해야 함)

:sh : vi를 잠시 빠져나가 셸 명령을 실행한다 (vi로 돌아오려면 exit 명령을 입력해야 한다)

 

 

'Study Note > OS' 카테고리의 다른 글

[Linux] 리눅스 커널 컴파일 (fedora)  (0) 2016.03.07
[Linux] 리눅스 커널 구조  (0) 2016.03.07
[Linux] Shell Script  (0) 2016.02.15
[Linux] Shell & Shell 내장 명령어  (0) 2016.02.15
[Linux] 기본 명령어  (0) 2016.02.15
반응형

date : 날짜와 시간을 출력

 

clear : 화면을 지운다

 

man 명령어 : 명령 사용법을 화면에 출력

 

passwd : 사용자 계정의 비밀번호 변경

 

exit : 터미널 종료

 

cd [디렉토리명] : 디렉토리 이동

[기준]

/home/user1에서 /etc/passwd 이동

상대경로 : 현재위치를 기준으로 명시

ex) cd ./../../etc/passwd

절대경로 : 루트를 기준으로 명시

ex) cd /etc/passwd

 

 

pwd : 현재 위치 확인 (절대경로출력)

 

ls [옵션] 파일 또는 디렉토리 : 디렉토리 내용 출력

-a : 숨김 파일 출력

-d : 지정 디렉토리 자체 정보 출력

-i : inode 출력

-l : 파일 상세 정보 출력 (파일 종류 - : 일반 파일, d : 디렉토리 파일, l : 심벌릭링크)

-A : .(마침표)..를 제외한 모든 파일 목록 추가

-F : 파일 종류 표시 ( * : 실행파일, / : 디렉토리, @ : 심볼릭 링크 )

-L : 심볼릭 링크 파일 일 때 원본 파일 정보 출력

-R : 하위 디렉토리 목록까지 출력

-r : 최신이 맨아래 (DESC)

-t : 수정 시간

 

mkdir [옵션] 디렉토리명1, 디렉토리명2, ... : 디렉토리 생성

-p : 하위 디렉토리까지 한번에 생성

 

cat [옵션] 파일명... : 파일 내용 출력

-n : 행 번호 출력

 

more [옵션] 파일명 : 파일 내용을 화면 단위로 출력 (space bar: 다음화면 출력, Enter : 한줄 씩 스크롤)

+행 번호 : 출력 시작할 행번호

 

less 파일명 : 파일 내용을 화면 단위로 출력

( j :한줄 씩 다음 행, k : 한줄 씩 이전 행, ctrl + f : 다음 화면 이동, ctrl +b : 이전 화면 이동)

 

tail [옵션] 파일명 : 파일의 뒷부분 몇 행을 출력

+행 번호 : 지정한 행부터 끝까지 출력

-숫자 : 화면에 출력할 행의 수

-f : 파일 출력이 종료되지 않고 주기적으로 출력

 

 

cp [옵션] 파일명1/디렉토리명1 파일명2/디렉토리명2 : 파일이나 디렉토리 복사

-i : 파일명 2가 존재하면 덮어 쓸 것 인지 물어봄

-r : 디렉토리를 복사할 때 지정

* 이름이 존재 시 덮어씀

 

mv [옵션] 파일명1/디렉토리명1 파일명2/디렉토리명2 : 파일을 이동

-i : 파일명2/데릭토리명2 존재시 덮을 것인지 물어봄

* 이름 존재시 이름명 변경

 

rm [옵션] 파일명/디렉토리명 : 파일을 삭제

-i : 지정한 파일을 삭제할지 물어봄

-r : 지정한 디렉토리를 삭제

 

ln [옵션] 원본파일명 링크파일명 : 파일 링크 생성

-s : 심벌릭 링크 파일 생성

* 하드링크는 링크는 되있어 하나수정시 같이 바뀌지만 원본을 삭제해도 그대로 남아있음

심볼릭 링크는 주소값만 가져와 용량차지를 하지 않으며 원본 삭제 시 사용 불가능함

 

touch [옵션] 파일명 : 빈 파일 생성

-a : 접근 시간 변경

-m : 수정 시간 변경

-t : [[CC]YY]MMDDhhmm[.ss] : 시간 직접 입력 ( 오래되었을시는 시간표시 안됨 )

 

grep [옵션] 패턴 [파일명] : 지정한 패턴을 포함하는 행을 찾음 ex ) grep root /etc/passwd

-i : 대문자, 소문자 모두 검색

-l : 해당패턴 포함 파일 이름 출력

-n : 행 번호 출력

 

find 경로 검색 조건 [동작] : 조건에 맞는 파일을 지정한 위치에서 찾음

옵션 -name filename : 파일 이름으로 검색

-type 파일 종류 : 파일 종류로 검색

-user loginID : 지정한 사용자가 소유한 모든 파일 검색

-perm 접근 권한 : 지정한 사용 권한과 일치하는 파일 검색

동작 -exec 명령 {} \; : 검색된 파일에 명령을 실행

-ok 명령 {} \; : 사용자의 확인을 받아서 명령을 실행

 

whereis [옵션] 명령 : 지정된 경로에서 명령의 바이너리 파일이나 매뉴얼 파일의 위치를 찾음

-b : 바이너리 파일만 검색

-m : 매뉴얼 파일만 검색

-s : 소스 파일만 검색

 

which [명령어] : 명령어 파일의 위치를 찾아 경로나 에일리어스 출력

 

'Study Note > OS' 카테고리의 다른 글

[Linux] 리눅스 커널 컴파일 (fedora)  (0) 2016.03.07
[Linux] 리눅스 커널 구조  (0) 2016.03.07
[Linux] Shell Script  (0) 2016.02.15
[Linux] Shell & Shell 내장 명령어  (0) 2016.02.15
[Linux] Vi Editor  (0) 2016.02.15

+ Recent posts