LINUX EXERCISE Jo, Heeseung
실습 : VMWARE 설치 실습목표 Vmware 를설치 결과화면 2
가상머신의겉모양 가상머신이생성된화면 3
실습 : 가상머신생성 실습목표 앞으로계속사용할가상머신을생성 가상머신이생성된결과화면 네트워크는반드시 "Vmnet8(NAT)" 로지정 4
실습 : LINUX ISO 파일다운로드 실습목표 인터넷에서 Linux 설치용 ISO 파일을다운로드 다운로드사이트예 http://www.kernel.org http://mirrors.kernel.org http://fedoraproject.org/ http://www.centos.org/ http://www.ubuntu.com/ 6
실습 : ISO 파일설치 실습목표 물리적인 CD/DVD 대신에 ISO 파일을사용 가상머신에서 CD/DVD 대신 ISO 파일사용화면 7
실습 : UBUNTU 설치 실습목표 DVD를이용해그래픽환경으로기본적인설치를진행 Ubuntu 16.04 desktop amd64 버전설치 로그인후인터넷이되는지확인 설치시한글로설치하지말것 ( 영어사용 ) 기본설정 - Processors: 4 - Memory: 2GB - Storage: 40GB (single file) - Network Adapter: NAT 8
BASIC COMMANDS
LINUX 접속 Client telnet, ssh, ftp,... putty, securecrt, mlterm,... WinSCP, securefx,... 10
LINUX 접속 putty with ssh Host: 192.168.XXX.XXX port: 22 connection type: SSH 11
LINUX 접속 Login and shell ID: root PW: XXXX 12
LINUX 접속 Password 변경 passwd 명령 13
SHELL Shell? 운영체제상에서다양한운영체제기능과서비스를구현하는인터페이스를제공하는프로그램 BASH: GNU Bourne Again Shell 가장많이쓰이며, 가장범용적으로사용됨 거의모든리눅스배포판의기본 shell CSH: C 스타일문법을가지는쉘, BSD 시스템표준 Bourne sheell 의확장 UC berkeley 에서처음개발 KSH: 실제 AT&T 버전의 Korn shell 어휘의스코프, 합성변수, 결합배열, 이름참조그리고부동소수점연산등이새로운기능 14
기본명령 shell commands 의규칙 command -option xxx 빈칸이구분자로사용됨 - 빈칸을명령에포함하려면 " 또는 ' 를사용 - ex. ls file name ls "file name" 도움말 - command --help - ex. ls --help 15
기본명령 로그인 / 로그아웃 명령기능주요옵션예제 ssh 유닉스시스템에접속 - ssh iter2.jbnu.ac.kr logout 유닉스시스템에서접속 - logout exit 해제 - exit passwd 암호변경 - passwd 16
기본명령 파일 / 디렉토리조작명령 명령기능주요옵션예제 pwd 현재디렉토리경로출력 - pwd ls 디렉토리내용출력 -a : 숨김파일출력 -l : 파일상세정보출력 -F : 종류구분 cd 현재디렉토리변경 - cp 파일 / 디렉토리복사 -r : 디렉토리복사 mv 파일 / 디렉토리이동 이름변경과 rm 파일 / 디렉토리삭제 -r : 디렉토리삭제 - ls -a /tmp ls -l cd /tmp cd ~han01 cp a.txt b.txt cp -r dir1 dir2 mv a.txt b.txt mv a.txt dir1 mv dir1 dir2 rm a.txt rm -r dir1 17
기본명령 파일 / 디렉토리조작명령 명령 기능 주요옵션 예제 mkdir 디렉토리생성 - mkdir dir1 rmdir 빈디렉토리삭제 - mkdir dir2 cat 파일내용출력 - cat a.txt more 파일내용을쪽단위로출력 - more a.txt chmod 파일접근권한변경 - chmod 755 a.out grep 패턴검색 grep abcd a.txt 18
기본명령 프로세스관련명령 명령기능주요옵션예제 ps 현재실행중인프로세 -ef : 모든프로세스에 ps 스의정보를출력 대한상세정보출력 ps -ef ps -ef grep ftp kill 프로세스강제종료 -9 : 강제종료 kill 5000 kill -9 5001 19
DIRECTORY HIERARCHY 특수 directory directives. : 현재위치.. : 상위 directory ~ : 사용자의홈디렉토리 (ex. /home/user1) 절대경로 / <- 로시작하는경우 상대경로 - cp /tmp/a.txt. - cp /home/user1/a.txt /tmp / <- 로시작하지않는경우 - cp./a.txt /tmp - cp../../dir1/a.txt../a.txt 20
환경설정 alias env 특정명령의다른이름을지정 지금자신의환경변수를나열.bashrc (.profile) Bash shell 이시작시참조하는환경변수설정 Hidden file PS1 Linux에서는파일명앞에 '.' 이붙으면숨김파일임 Bash shell에서프롬프트를설정 PATH 실행파일또는참조할파일의위치를결정 PATH 변수의순서대로특정파일을찾음 21
TIPS alias ls='ls -af --color=auto' alias ll='ls -afl --time-style=long-iso' alias l='ls -aflh --time-style=long-iso' alias ps='ps -ef' alias gr='grep -rni ' PATH=.:$PATH; export PATH PS1='\u@\h:$PWD> ' 22
TIPS tar zip gz 여러파일을하나로묶음 여러파일을하나로압축 하나의파일을압축 history 사용한명령어들을나열 indent 소스코드를예쁘게정렬해줌 indent -npsl -bli0 -sob -nbc -i8 -l1000 code.c alias ind='indent -npsl -bli0 -sob -nbc -i8 -l1000' 23
TIPS tab 자동완성 Bash shell 에서는 tab 키로나머지명령을자동으로완성가능 상하커서키 history 에서최근에사용된명령을다시사용할때 ctrl + r history 에서최근사용된명령을자동완성 ctrl + s & ctrl + q 스크린출력을정지 / 재개 * 모든문자들을대체 24
META CHARACTERS Char. Function > Redirection from stdout to file >> Redirection from stdout to file < Redirection from file to stdin * Any character? Any character, but one Pipe from stdout of p1 to stdout of p2 ; Command order & Background execution 25
LINUX 서버접속 PROTOCOL Shell File telnet: TCP port 23 - Deprecated in most systems ssh: TCP port 22 ftp: TCP port 21 ssh(sftp, scp): TCP port 22 26
필요 PACKAGE 설치 apt-get update root 권한필요 sudo apt update sudo apt -y install vim sudo apt -y openssh-server 27
VI EDITOR
VI EDIT 의모드 Command mode Text 의위치나편집가능하게함 Input mode 사용자가 text 를작성할수있는모드 29
HOW TO EXIT FROM VI (COMMAND MODE) :q <enter> to exit, if you have not made any changes to the file :q! <enter> the forced quit, it will discard the changes and quit :wq <enter> for save and Exit :x <enter> same as above command ZZ for save and Exit (Note this command is uppercase) The! Character forces over writes, etc. :wq! 30
MOVING AROUND You can move around only when you are in the command mode Arrow keys usually works (but may not) The standard keys for moving cursor are: h - for left l - for right j - for down k - for up 31
ENTERING TEXT To enter the text in vi you should first switch to input mode To switch to input mode there are several different commands a - Append mode places the insertion point after the current character i - Insert mode places the insertion point before the current character I - places the insertion point at the beginning of current line o - is for open mode and places the insertion point after the current line O - places the insertion point before the current line R - starts the replace(overwrite) mode 32
EDITING TEXT x - deletes the current character d - is the delete command but pressing only d will not delete anything you need to press a second key dw - deletes to end of word dd - deletes the current line d0 - deletes to beginning of line There are many more keys to be used with delete command 33
UNDO AND REPEAT COMMAND u - undo the changes made by editing commands. - repeats the last edit command 34
COPY, CUT AND PASTE IN VI v - visual mode y - yank yy - (yank) copy current line to buffer nyy - where n is number of lines p - below P - above paste the yanked lines from buffer to the line paste the yanked lines from buffer to the line (the paste commands will also work after yank) 35
JUMP gg - jump the first line of file G - jump the end of file ng - jump to the line (where n is line number) 36
SEARCH / REPLACE /asdf - search forward for 'asdf' to move forward, type n?asdf - search backward for 'asdf' to move backward, type N :%s/asdf/xywz/g - replace 'asdf' by 'xywz' 37
Everything in a Slide 38
유용한 VI ENVIRONMENT ->.VIMRC au FileType * setl fo-=cro syntax on / off set number / nonumber set wrap / nowrap set hlsearch set ignorecase set ts=4 39
GCC OPTION(1) -o -c 출력 (output) 화일명을정하는옵션 gcc -o hello hello.c hello.c 라는파일을 hello 라는실행파일로만듦 컴파일 (compile) 작업만하고싶은경우 gcc -c hello.c hello.c 파일에서 hello.o 라는오브젝트파일로만듦 40
GCC OPTION(2) -I -g #include 문장에서지정한헤더화일이들어있는곳을정하는옵션 gcc -c source.c -Iinclude -I 를붙여씀 컴파일된오브젝트파일에디버깅코드를추가 gcc -g -o hello hello.c 41
GCC OPTION(3) -O -l -L 코드를최적화 (optimization) -O2는가장많이최적화 -O0라고하면최적화를하지않음 기본값 : -O1 어떤라이브러리를사용하는지지정 -l 은명령줄의맨뒤에사용할것 그라이브러리가어느디렉토리에있는지알려줌 42
EX: VI 로 C CODE 를작성 실습목표 vi 를이용하여, 1~100 사이의 prime number 를출력하는프로그램을작성 main.c 에서는 for 문으로 1~100 의 loop prime.c 에서는 checkprime 함수를구현하여 prime number 인지확인 Compile: gcc -o getprime main.c prime.c./getprime 으로실행 43
MAKE
MAKE Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one It can use to command based programs 45
MAKE BASIC RULES 3 components target, dependency, command File format file name: Makefile (makefile) format target: dependency [tab] command 46
MAKE EXAMPLE make 를사용하지않을때 $gcc -c main.c $gcc -c add.c $gcc -c sub.c $gcc -o test main.o add.o sub.o 혹은, gcc -o test main.c add.c sub.c 47
MAKE EXAMPLE Makefile all: main.o add.o sub.o gcc -o test main.o add.o sub.o main.o: addsub.h main.c gcc -c main.c add.o: add.c gcc -c add.c sub.o: sub.c gcc -c sub.c clean: rm *.o test 반드시 tab 으로입력 49
MAKE EXAMPLE 어느때어떤 target이다시컴파일될것인가? main.c가바뀌었을경우 add.c 혹은 sub.c가바뀌었을경우 addsub.h가바뀌었을경우 50
LABEL 레이블로사용될때는의존관계부분이없어도가능실행방법 make clean all: main.o add.o sub.o gcc -o test main.o add.o sub.o main.o: addsub.h main.c gcc -c main.c add.o: add.c gcc -c add.c sub.o: sub.c gcc -c sub.c clean: rm *.o test 51
macro CC=gcc SRC=main.c add.c sub.c main: ${SRC} ${CC} o test ${SRC} 52
미리정해져있는매크로 make -p 를통하여모든값들을확인가능 ASFLAGS = as 명령어의옵션세팅 - AS = as CFLAGS = gcc 의옵션세팅 - CC = cc (= gcc) CPPFLAGS = g++ 의옵션 - CXX = g++ LDLFAGS = ld 의옵션세팅 - LD = ld LFLAGS = lex 의옵션세팅 - LEX = lex YFLAGS = yacc 의옵션세팅 - YACC = yacc 53
SIMPLE MAKEFILE CFLAGS = -Wall -O -g bin=hello t1=main t2=funcs obj=$(t1).o $(t2).o all: $(bin) $(bin): $(obj) $(CC) $(obj) -o $@ clean: rm -f $(bin) *.o $(bin) 을나타내는내부변수 54
EX: MAKEFILE 작성 실습목표 앞서코딩한 getprime 프로그램을 build 할수있는 Makefile 을작성 make, make all, make clean 이정상적으로동작하는지확인 55