550 likes | 788 Views
Linux 사용하기. 2007. 03. 22. 목 차. 리눅스 명령어 사용방법 vi editor 사용방법 Make 사용방법 RPM 사용방법. Linux 명령어. 명령어 히스토리 기능 : history & 화살표키
E N D
Linux 사용하기 2007. 03. 22
목 차 • 리눅스 명령어 사용방법 • vi editor 사용방법 • Make 사용방법 • RPM 사용방법
명령어 히스토리 기능: history & 화살표키 리눅스는 현재까지 사용한 명령어를 기억하고 있으며 필요할 땐 언제나 그 명령어를 다시 사용할 수 있다. 특히 복잡하고 긴 명령어일 경우에는 키보드로 다시 입력하기 보다는 이전에 사용했던 명령어를 재사용하는 것이 효율적이다. 명령어를 다시 사용하는 방법에는 다음과 같이 몇 가지 방법이 있다. - 화살표키 이용 - history 기능 위의 명령어를 실행 해 보고 그에 반응들을 아래의 빈칸에 적어 보자.
man 페이지 활용하기 리눅스나 유닉스시스템에는 외우기 힘들 정도로 많은 명령어가 있다. 이들 명령어를 모두다 알고 사용할 수 있으면 좋겠지만 어떤 명령어가 있다는 것과 어떤 상황에서 무엇을 알고자 할 때는 어떤 명령어를 사용해야 한다는 것 정도만 알아도 시스템관리를 훌륭하게 할 수 있다. 시스템관리를 잘하는 관리자는 명령어 도움말 즉, 매뉴얼 페이지를 잘 활용한다. 명령어에 대한 도움말이나 사용법 등을 확인하려면 "man 명령어"를 사용하라.
현재 작업디렉토리는? 유닉스계의 시스템에서 여기저기 다니면서 작업을 하다보면 현재 내가 어떤 디렉토리에 있는가를 확인해야 할 경우가 있다. 이때 사용하는 명령어가 pwd이며 현재 디렉토리의 절대 경로를 나타내 준다.
작업 디렉토리 변경 "change directory"의 약어로 디렉토리를 이동하기 위한 명령어로 원하는 디렉토리로 이동하고자 할 때는 "cd 디렉토리명"을 하면된다. 또한 한번에 이동하기 위해 절대경로로 지정하여 이동할 수도 있다. 그냥 "cd"라고 하면 자기의 홈 디렉토리로 이동합니다.
파일이나 디렉토리 복사하기 파일을 복사해 주는 명령어로 DOS의 copy 명령어와 같으며 사용하는 형식은 다음과 같다. $ cp <복사할 파일명> <복사되어 생성될 파일명>
파일 삭제하기 불필요한 파일을 삭제하기위한 명령어로 "rm"이라는 것을 사용한다. DOS의 "del"명령어와 같은 것으로 remove의 약어이다. 사용하는 형식은 다음과 같다. rm 삭제할파일명 파일명 . . . : 지정한 파일만을 지운다. rm *.html : html로 끝나는 모든 파일을 지운다. rm명령어에는 꼭 알아야하는 옵션이 두가지 있다. 첫 번째 -r옵션은 디렉토리까지 삭제하기 위한 옵션이며, 둘째 -f는 삭제하기전에 확인과정없이 강제로 지워버리는 옵션이다.
파일과 디렉토리의 이동 및 이름 변경 파일이나 디렉토리를 이동하고 싶거나 이름을 변경 하고자 할 때 사용 되어지는 명령어는 mv 이다. DOS 에서 move 명령어와 흡사하다. mv [바꿀파일 또는 디렉토리명] [바뀌어질 파일 또는 디렉토리명]
디렉토리 만들기와 디렉토리 지우기 필요한 디렉토리를 만들기 위한 명령어로 "mkdir"과 필요없는 디렉토리를 삭제하기 위한 명령어로 rmdir을 사용한다. rmdir로 디렉토리를 지울 때는 반드시 해당 디렉토리가 비어있어야 하며 비어있지않는 디렉토리를 지우려고 할 때는 "Directory not empty"란 에러메시지를 보여준다. 그래도 디렉토리와 그안에 들어 있는 파일들까지 한꺼번에 지우기 원한다면 "rm -rf 디렉토리명"을 사용하면 된다. 참고로 mkdir명령어에서 -p옵션은 필요한 디렉토리까지 생성하면서 새로운 디렉토리를 만들어주는 옵션이다.
소유권 변경하기 유닉스계의 OS에서 파일과 디렉토리에는 파일의 소유권과 그룹소유권이 표시된다. "ls -l"로 확인해 보면 3번째 필드에 해당되는 것이 소유권이며, 네 번째 필드에 해당하는 것이 그룹소유권이다. 이들 소유권을 변경할 수 있으며 파일소유권을 변경할때는 "chown"(change owner)이란 명령어를 사용하며 그룹소유권을 변경할때는 "chgrp"(change group)란 명령어를 사용한다. 사용형식 chown 새로운소유자 변경할파일(디렉토리) chgrp 새로운소유그룹 변경할파일(디렉토리)
파일내용보기- I 파일의 내용을 볼 수 있는 명령어는 cat과 pg 그리고 head와 tail, strings란 명령어가 있으며 도스의 type 명령어와 같으나 이보다 훨씬 다양하게 활용할 수가 있다. • cat 지정한 파일의 내용을 보고자 할 때 사용하는 명령어이다. cat명령어는 보고자하는 파일이 텍스트파일일 경우는 내용을 알아볼 수 있게 출력하지만, 바이너리파일일 경우에는 내용을 볼 수는 있으나 알 수 없는 문자들로 그 내용을 알기 어렵다. cat파일은 2개 이상의 파일이름이 지정되면 모든 파일이 연결되어 보여진다. [ 옵션 ] -b : 행번호를 앞에 붙여서 출력한다.(빈행은 번호를 붙이지 않는다.) -n : 행번호를 앞에 붙여서 출력한다.(빈행도 번호를 붙인다.)
파일내용보기– II • head head 명령어는 파일내용의 첫부분을 기준으로 출력한다. 숫자를 지정하 지 않은경우에는 처음 10행만 보여준다. • tail tail명령어는 파일내용의 뒷부분을 보고자할 때 사용하는 명령어이다. 숫자를 지정하지 않은 경우에는 마지막 10행만을 보여준다. 명령어에 숫자를 지정하면 지정된 숫자 만큼만 출력 해 준다.
디스크 사용량 확인하기 • du du명령어는 Disk Usage의 약어로 해당 디렉토리의 사용량을 출력해 준다. 그냥 "du"라고 하면 현재 디렉토리 이하의 개별 디렉토리별로 사용량을 체크해 주지만 "-s"(summary)을 주게 되면 전체사용량을 간략히 표현한다. 이때 표현되는 단위는 block으로 Kbyte 단위이다. 이를 좀더 알기쉽게 표현하려면 "-h"(human-readable)라는 옵션을 사용하며 단위로 표시하여 좀더 알기쉽게 표현해 준다. • df df는 현재 시스템에서 사용중인 파일시스템 즉 마운트된 디스크 정보와 사용량을 보여준다
압축관련 유틸리티 • tar : 여러개의 파일과 디렉토리를 하나의 파일로 묶어주는 유틸리티 • compress : 가장 오래된 압축유틸리티 • gzip : 압축효율이 좋아 현재 가장 많이 사용되고 있는 압축유틸리티 • bzip2 : gzip을 개선하여 나온 압축유틸리티
tar로 파일 묶기 tar는 여러 개의 파일을 하나의 파일로 묶을 수 있으며 묶여진 파일을 다시 풀 수 있는 유틸리티입니다. 또한 묶여진 파일을 풀기 전에 어떤 파일들이 묶여져 있나를 확인해 볼 수도 있습니다. 먼저 tar파일의 사용형식은 다음과 같습니다. 형식 : # tar [옵션] 대상파일
tar에 필요한 옵션 c : tar파일을 생성할 때(여러 개의 파일을 하나의 파일로 묶을 때) 반드시 사용 d : tar파일과 해당 파일시스템간의 차이점을 확인하고자 할 때 사용 r : tar파일에 다른 파일들을 추가하고자 할 경우에 사용 t : tar파일의 내용을 확인하고자 할 때 반드시 사용 f : tar파일을 사용할 때에는 반드시 사용 p : tar파일을 생성할 때(묶을 때) 당시의 파일 퍼미션을 그대로 하여 풀어줄 때 사용 v : 묶을 때나 풀어줄 때 파일들의 내용을 자세하게 보려고 할 때 사용 Z : compress로 압축파일을 사용할 때 압축이나 해제까지 한번에 할 때 사용 z : gzip과 관련하여 압축이나 해제를 한꺼번에 하려고 할 때 사용 j : bzip2와 관련하여 압축이나 해제를 한꺼번에 하려고 할 때 사용
compress, uncompress 가장 오래된 압축유틸리티이며 특히 오래 전에 압축된 파일들은 거의 대부분 이 유틸리티를 활용하여 압축되어 있습니다. 파일의 끝에 Z가 붙어 있는 압축파일들은 compress로 압축된 것입니다. 일반사용자들 보다 서버관리자가 필히 알아두어야 할 유틸리티입니다. 그리고 compress로 압축하기 전의 용량과 압축 후에 생성된 용량을 확인해 보시기 바랍니다. 압축된 후의 용량이 압축전의 용량의 절반쯤 됩니다. 즉 압축률이 50%쯤이라고 볼 수 있죠. 그리고 압축이 된 후에는 각각의 파일에 .Z라는 확장자가 붙게 됩니다. 이는 compress로 압축되었음을 의미하는 것입니다. 압축을 해제하는 방법은 uncompress라는 명령어를 사용하면 된다. compress로 압축된 파일은 반드시 uncompress로 압축해제를 해야 합니다. uncompress는 파일이 .Z로 끝나는 것만을 찾아서 압축해제를 해줍니다.
gzip, gunzip 유닉스환경에서 사용되는 압축유틸리티중 가장 많이 사용하는 유틸리티입니다. 압축을 하고나면 compress는 파일의 끝에 .Z를 붙여주지만 gzip은 .gz를 붙여줍니다. [ 사용하는 방법 ] - 압축할 때 : gzip 압축할파일명 - 압축풀 때 : gzip -d 압축된 파일명 또는 gunzip 압축된 파일명 gzip으로 압축을 할 때에는 거의 대부분 tar로 묶여진 파일을 다시 압축을 할 때 사용하게 됩니다. tar로 묶여진 파일을 gzip으로 압축을 하게되었을 때의 용량을 비교해 보십시오. 거의 10배의 압축효율이 있음을 알 수 있습니다. 이 압축효율 때문에 compress보다는 gzip을 많이 사용하게 된 것입니다. 또한 압축이 끝난후에는 파일의 끝에 .gz라는 것을 붙여주게되며 gzip으로 압축된 것임을 표시하게 됩니다. 그리고 나서 압축을 해제 하고 싶다면 gzip –d 또는 gunzip 이라는 명령어를 사용하면 된다.
tar와 gzip을 한번에 tar와 gzip을 동시에 할 수 있는 방법이 있으며 이는 tar의 옵션으로 다음과 같이 사용하실 수 있습니다. 이런 작업을 하시려면 원래 사용하던 tar의 옵션에 z라는 옵션을 추가해서 사용하시면 됩니다. 즉, 다음과 같이 사용하시면 됩니다. 묶고 압축할 때 $ tar cvzf 압축파일.tar.gz 압축대상파일 및 디렉토리 압축해제와 묶음 풀 때 $ tar xvzf 압축파일.tar.gz
bzip2, bunzip2 bzip2라는 유틸리티는 gzip보다 압축효율이 좋아서 차세대 압축유틸리티로 좋은 평을 받고 있는 유틸리티입니다. 사용하는 방법은 gzip과 거의 유사하며 압축된 후의 파일 끝에 .bz2라고 붙여줍니다. • Tar와 bzip2를 한번에 tar와 bzip2를 동시에 할 수 있는 방법이 있으며 이는 tar의 옵션으로 다음과 같이 사용하실 수 있습니다. 이런 작업을 하시려면 원래 사용하던 tar의 옵션에 j라는 옵션을 추가해서 사용하시면 됩니다. 즉, 다음과 같이 사용하시면 됩니다. 묶고 압축할 때 $ tar cvjf 압축파일.tar.gz 압축대상파일 및 디렉토리 압축해제와 묶음 풀 때 $ tar xvjf 압축파일.tar.gz
웹 상에 있는 파일 다운로드 받기 : wget 웹 상에 있는 파일을 wget을 이용해 다운받을 수 있다. wget [옵션] URL
리눅스 종료시 사용하는 명령어들 - sync : 명령어 변경후 disk에 저장되지 못한 block들을 write시키도록 하는 명령어 - halt : 아무런 경고 없이 시스템을 즉시 종료 시킨다. - reboot : 시스템을 reboot 한다. (shutdown -r 과 같음) - shutdown [옵션] 시간 [메시지] -t n : n초 후에 시스템 종료 신호 보냄 -r : reboot shutdown now : 즉시 system down - init : run level 변경으로 인한 시스템 종료방법. - init 0 : system down - init 1 : single mode booting - init 2 : multiuser mode booting (network = X) - init 3 : multiuser mode booting (network = O), text mode - init 4 : 사용자 정의 (사용안함) - init 5 : multiuser mode booting (network = O), X-window mode - init 6 : reboot ※ /etc/inittab에 명시되어 있음.
vi editor • linux에서 가장 많이 사용되는 에디터인 vi editor에 대해 설명합니다. 처음에는 불편한 부분이 많지만 조금만 익숙해 진다면 그 어떤 에디터보다 편하고 기능면에서도 파워풀하다는 것을 느낄 수 있을 것이다. 먼저 vi 에서는 다음의 세가지 상태 (명령대기상태, 글자입력상태, 명령줄상태)로 나눌 수가 있다.
vi editor ① vi를 실행한 직후는 명령대기 상태이다. ② 명령대기 상태에서 글자입력 상태로 바꿀려면 i, I, a, A, o, O 중 하나를 누른다. ③ 명령대기 상태에서 명령줄 상태로 바꾸려면 :,/,? 중 하나를 누른다. ④ 글자입력 상태에서 명령대기상태로 바꿀려면 ESC키를 누르면 된다. ⑤ 명령줄 상태에서 명령대기상태로 바꿀려면 ESC키, ENTER키 중 하나를 누른다. ⑥ 명령대기 상태에서 현재 편집중인 파일을 저장 하려면 :을 눌러 명령줄 상태가 되게한 후 w를 입력하고 ENTER키를 누른다.
vi editor ⑦ 명령대기 상태에서 현재 편집중인 파일을 저장하고vi를 빠져 나갈려면 :을 눌러 명령줄 상태가 되게한 후 wq!를 입력하고 ENTER키를 누른다. ⑧ 명령대기 상태에서 현재 편집중인 파일을 저장하지 않고 vi를 빠져 나갈려면 :을 눌러 명령줄 상태가 되게한 후 q!를 입력하고 ENTER키를 누른다. ⑨ 명령대기 상태에서 글자 찾기를 할려면 ? Or / 를 눌러서 명령줄 상 태가 되게한 후 찾고자 하는 글을 입력하고 ENTER키를 누른다.
vi editor • 명령 대기상태 명령어 명령대기 상태에서는 커서의 이동, 빈 줄의 추가, 삭제하기, 바꾸기, 메모리 복사와 붙여 넣기 등을 할 수 있으며, 이 들에 대한 명령 키와 설명은 다음 표에 열거되어 있다.
vi editor • 명령줄 상태 명령어 명령대기 :을 누르면 :으로 시작하는 명령줄 상태가 되고, /를 누르면 /로 시작하는 명령줄 상태가 된다. (탐색모드 위 -> 아래) ?를 누르면 ?로 시작하는 명령줄 상태가 된다. (탐색모드 아래 -> 위)
make • 리눅스 시스템(linux system)에서 우리는 종종 make utility를 사용하는데, 이것은 어떤 프로그램 그룹을 유지하는 데 필요한 유틸리티이다. 즉, 이것의 목적은 프로그램 그룹 중에서 어느 부분이 새롭게 컴파일 되어야 하는지를 자동적으로 판단해서 GCC와 같은 커맨드를 이용하여 그들을 재 컴파일시켜 프로그램의 일관성을 유지토록 한다. • make는 일련의 프로그램 개발에만 사용되지 않고 컴파일러처럼 일종의 명령어 방식으로 처리되는 모든 곳에서 사용가능 하다. 다시 말하면 입력파일이 바뀌면 자동적으로 결과파일을 바꿔 주었으면 할 때 등에 사용된다. 이를 위해 어떤 일관된 처리 루틴을 사용하는 데 이를 Makefile이라 한다. Makefile는 make가 이해할 수 있도록 일종의 쉘 스크립터 언어처럼 작성되어 진다.
make • 보통 리눅스시스템에서Makefile은 기본적으로 아래와 같이 목표(target), 의존 관계(dependency), 명령(command)의 세가지로 이루어진 규칙을 사용한다. make가 지능적으로 파일을 갱신하는 것도 모두 이 간단한 규칙(rule)에 의해서 이다. target : dependency ……. command ……..
make • 목표(target)부분은 명령(command)이 수행되어져서 나온 결과 파일을 지정한다. 당연히 목적파일(object file)이나 실행파일이 된다. 명령(command)부분에 정의된 명령들은 의존관계 부분에 정의된 파일의 내용이 바뀌었거나 목표부분에 해당하는 파일이 없을 때 이것에 정의된 것들이 차례로 실행된다. 명령부분은 반드시 TAB을 사용하여 띄우도록 하고 목표부분에는 결과 파일만이 올 수 있는 것이 아니고 보통 make clean, make all등과 같이 레이블(label)이 올 수도 있다.
make • 예제 프로그램 소스 : main.c, read.c write.c, io.h • 먼저 make를 사용하지 않고 명령어를 주어 각각 컴파일해서 test라는 실행파일을 생성시킨다. # gcc –c main.c # gcc –c read.c # gcc –c write.c # gcc –o test main.o read.o write.o # ./test
make • 다음으로 Makefile을 사용하여 컴파일하기 • Makefile 내용 test : main.o read.o write.o gcc –o test main.o read.o write.o main.o : io.h main.c gcc –o main.c read.o : io.h read.c gcc –o read.c write.o : io.h write.c gcc –o write.c
make • 각 파일들의 의존관계
make • 매크로(Macro)기능과 레이블(Label)기능을 사용하여 Makefile작성을 원활히 할 수 있다. 먼저 매크로의 사용에 대해서 살펴보면, 매크로는 특정 내용을 치환하여 프로그램을 단순화시키고자 할 때 사용되는 것으로 반드시 $(..)안에 넣어서 사용한다. 위에서 사용된 test 예제에서 매크로를 사용하여 작성한 Makefile이 아래에 있다. 여기서 사용한 매크로는 OBJECTS라는 것으로, main.o, read.o, write.o 부분을 OBJECTS로 치환하여 사용하였다. • 이 매크로 중에서는 CC, CFLAGS, LEX처름 미리 지정된 매크로(Pre-defined Macro)도 있다. 참고로 make –p를 실행해 보면 make에서 미리 지정되어 있는 모든 값들(매크로,환경 변수 등)을 미리 볼 수 있으며, 다음은 UNIX계열의 make에서 미리 정해져 많이 사용되고 있는 매크로들 이다.
make • Pre-defined Macro ASFLAGS = : as 명령어의 옵션 세팅 AS = as CFLAGS = : gcc의 명령어의 옵션 세팅 CC = cc (=gcc) CPPFLAGS = : g++의 옵션 세팅 CXX = g++ LDLFLAGS = : ld의 옵션 세팅 LD = ld LFLAGS = : lex의 옵션 세팅 LEX = lex
make • 레이블(Label) 사용에 대해 살펴보면, 목표 부분에 해당하는 부분이 레이블로 처리되어 간략화될 수 있다. 다음 슬라이드는 clean이라는 레이블을 사용하여 컴파일시에 생성된 오브젝트 파일들을 제거하는 예제이다. • 레이블로 사용될 때는 당연히 의존 관계 부분은 없어도 된다. 그리고 레이블clean을 사용하여 실행시키려면 아래와 같이 수행한다. # make clean rm main.o read.o write.o /* make clean으로 object file이 삭제된다. */
make • 매크로(Macro)와 레이블(Label)을 사용한 예제 • test.c 소스파일을 Makefile을 작성하여 실행파일 test를 생성하는 예제
make • Suffix Rule/Internal Macro확장자 규칙이란 간단히 말해서 파일의 확장자를 보고 그에 따라 적절한 연산 동작을 수행시키는 규칙 • .SUFFIXES Makefile에서 주의깊게 처리할 파일들의 확장자를 자동으로 처리 .SUFFIXES = .c .o • .c와 .o 확장자를 가진 파일들을 확장자 규칙에 의해 처리될 수 있도록 해주며, 미리 정의된 .c(C Source File)를 컴파일해서 .o(Object File)을 만들어내도록 자동적으로 동작한다.
make • Internal Macro임의로 사용할 수 없으며 주로 연산, 처리에 자주 사용된다 $* /* 확장자가 없는 현재의 목표파일(target)*/ $@ /* 현재의 목표파일(target)*/ $< /* 현재의 목표파일(target)보다 더 최근에 갱신되어진 파일이름*/ $? /* 현재의 목표파일(target)보다 더 최근에 갱신되어진 파일이름*/ • $< 와 $?의 기능은 거의 비슷하다. 각 내부 매크로에 대한 예. main.o : main.c io.h gcc -c $*.c