제2장 리눅스 사용 -...

53
리눅스 시스템 프로그래밍 청주대학교 전자공학과 한철수 2장 리눅스 사용

Upload: others

Post on 22-Oct-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

리눅스 시스템 프로그래밍

청주대학교 전자공학과

한철수

제2장 리눅스 사용

Page 2: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

목차

2

• 기본 명령어

• 파일 및 디렉터리

• 파일 속성

• 입출력 재지정 및 파이프

• 후면 처리 및 프로세스

• 문서편집기

Page 3: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

기본 명령어

3

2.1절

$ date // 날짜및시간을출력함.

$ hostname // 호스트명을출력함.

$ uname // 시스템정보를출력함.

$ who // 현재로그인한사용자정보를출력함.

$ ls // 현재디렉터리내의파일목록을출력함.

$ clear // 화면을지움.

$ passwd // 패스워드를변경함.

$ man 명령어 // 명령어에대한매뉴얼을보여줌.

Page 4: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

파일 및 디렉터리

4

• 리눅스에서는 데이터를 입출력 할 수 있는 대상은 모두 파일로간주함.‒ 즉, 디스크에 저장된 파일 뿐만 아니라 입출력 장치들도 파일로 간주함.

(교재 13쪽 유닉스의설계철학 중 단순성에해당함.)

• 리눅스의파일 종류‒ 일반파일

• 데이터를가지면서저장장치에저장된 것.

‒ 디렉터리(directory)• 데이터를가지면서저장장치에저장된 것.

• 다른 파일들을조직하고사용하는데필요한 정보를갖고 있음.

• 폴더(folder)라고도함.

‒ 특수파일• 물리적 장치에대해서 파일로간주한 것.

‒ 키보드: stdin

‒ 모니터: stdout

2.2절

Page 5: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

디렉터리 계층구조

5

• 한 디렉터리는 다른 디렉터리들을 포함함으로써 계층구조를이룸.‒ 부모디렉터리

• 다른 디렉터리를포함하는디렉터리

‒ 서브디렉터리(하위디렉터리)• 부모 디렉터리에포함된디렉터리들

• 리눅스 파일 시스템은 루트(root, /) 디렉터리부터 시작하여하위 디렉터리들이형성됨.

2.2절

Page 6: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

리눅스 주요 디렉터리

6

2.2절

루트 디렉터리

Page 7: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

유닉스 주요 디렉터리

7

2.2절

루트 디렉터리

Page 8: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

홈 디렉터리와 현재 작업 디렉터리

8

• 리눅스는 다중 사용자 시스템이기 때문에 각 사용자마다 별도의 홈 디렉터리(home directory)가 있음.

• 홈 디렉터리‒ 사용자계정을만들 때 관리자에의해정해짐.

‒ 사용자가로그인하면 홈 디렉터리에서작업을시작하게됨.

‒ 홈 디렉터리의이름은일반적으로사용자명과같음.

‒ 환경변수 $HOME에사용자의홈 디렉터리이름이저장됨.• $ echo $HOME

• 현재 작업 디렉터리(current working directory)‒ 현재작업 중인디렉터리

2.2절

Page 9: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

디렉터리 관련 명령어

9

• pwd (print working directory)‒ 현재작업 디렉터리를출력함.

‒ $ pwd

• mkdir (make directory)‒ 새 디렉터리를만듦.

‒ $ mkdir 만들 디렉터리명

‒ $ mkdir test // test라는서브디렉터리를만듦.

• cd (change directory)‒ 현재작업 디렉터리를이동함.

‒ $ cd [이동할디렉터리명]

‒ $ cd test // test 디렉터리로이동.

‒ $ pwd

‒ $ cd // 홈 디렉터리로이동.

‒ $ pwd

2.2절

Page 10: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

디렉터리 내용 리스트

10

• ls (list)‒ 디렉터리의 내용을 리스트함.

• $ ls // 파일명만 출력함.cs1.txt

• $ ls -s // -s(size), 파일의 블록 크기를 출력함.총 66 cs1.txt

• $ ls -a // -a(all), 숨김 파일까지 출력함.. .. cs1.txt

• $ ls -l // -l(long), 파일의 상세 정보를 출력함.-rw-r--r-- 1 chang faculty 2088 4월 16일 13:37 cs1.txt

• $ ls -asl // 여러 옵션을 조합할 수 있음.총 102 drwxr-xr-x 2 chang faculty 512 4월 16일 13:37 .2 drwxr-xr-x 3 chang faculty 512 4월 16일 13:37 ..6 -rw-r--r-- 1 chang faculty 2088 4월 16일 13:37 cs1.txt

2.2절

. 현재 디렉터리

.. 부모 디렉터리

Page 11: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

ls 명령어의 명령줄 인수

11

• 명령어의우측에 적는 값을 명령줄인수라고 함.

• ls [옵션] [디렉터리또는 파일들]

• ls 명령어는 명령줄 인수로 받은 디렉터리들의 내용을 리스트함.‒ $ ls /tmp

‒ $ ls ..

• 명령줄 인수가 없으면현재 디렉터리의내용을 리스트함.‒ $ ls

• 명령줄 인수가 파일들이면그 파일들만리스트함‒ $ ls cs1.txt

‒ $ ls cs1.txt cs2.txt

2.2절

Page 12: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

경로명(pathname)

12

• 경로명이란파일이나디렉터리에대한 이름을 말함.

• 경로명의종류‒ 절대경로명

• 경로명을루트디렉터리로부터시작하여모두 적은 것.

‒ 상대경로명• 경로명을현재작업디렉터리로부터시작하여적은 것.

2.2절

~ : 홈 디렉터리. : 현재 디렉터리.. : 부모 디렉터리

Page 13: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

경로명 연습(1)

13

• home 디렉터리‒ 절대경로: /home

‒ 상대경로: ..

현재 디렉터리

?

Page 14: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

경로명 연습(2)

14

• share 디렉터리‒ 절대경로: /usr/share

‒ 상대경로: share

현재 디렉터리

?

Page 15: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

경로명 연습(3)

15

• usr 디렉터리‒ 절대경로: /usr

‒ 상대경로: ../..

현재 디렉터리

?

Page 16: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

경로명 연습(4)

16

• root 디렉터리‒ 절대경로: /root

‒ 상대경로: ../root

현재 디렉터리?

Page 17: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

디렉터리 기호

17

• 다음 기호를 이용하여 홈 디렉터리, 현재 디렉터리, 부모 디렉터리를 지정 할 수 있음.

cd .. // 부모디렉터리로이동함.

cd ~ // 홈 디렉터리로이동함.

ls .. // 부모디렉터리의내용을리스트함.

ls ~ // 홈 디렉터리의내용을리스트함.

ls // ls 명령어가실행됨.

./ls // 현재디렉터리안에 있는 ls라는 파일이실행됨.

2.2절

~ : 홈 디렉터리. : 현재디렉터리.. : 부모디렉터리

Page 18: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

디렉터리 관련 명령어

18

2.2절

(p.49)

Page 19: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

실습

19

• p.77 실습문제‒ 1번) ls 명령어실습을해봅시다.

2.2절

Page 20: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

파일 내용 출력

20

• 파일 내용 출력과 관련된 명령어들‒ cat, more, head, tail, wc 등

• 사용법‒ 명령어 [파일들]

‒ cat cs1.txt // cs1.txt 파일내용을출력함.

‒ cat // 단독으로사용하면키보드로입력하는

내용을출력함.(more는제외)

• 실습을 위한 예제 파일 만들기$ cat > cs1.txt

Hello, World!

Stay hungry, stay foolish.

^D

2.2절

^D : 정상종료^C : 강제 종료^Z : 프로그램정지후,

후면으로보냄.

Page 21: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

cat 명령어

21

• 파일 내용을 그대로 화면에 출력함.

$ cat cs1.txt

$ cat // 명령줄인수로파일을지정하지않으면

... 키보드로입력하는내용을출력함.

^D

2.2절

Page 22: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

more / head / tail 명령어

22

• more 명령어‒ 하나 이상의 파일 이름을 받을 수 있으며 각 파일의 내용을 페이지 단위로출력함.

‒ 스페이스바로다음 페이지이동, q로 종료함.

• head 명령어‒ 파일의앞부분(10줄)을출력한다.

‒ head -5 cs1.txt // 보여줄앞부분의줄 수(5)를지정할수 도 있음.

• tail 명령어‒ 파일의뒷부분(10줄)을출력함.

‒ tail -5 cs1.txt // 보여줄뒷부분의줄 수(5)를지정할수 도 있음.

2.2절

Page 23: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

wc 명령어

23

• wc 명령어 (word count)‒ 파일에저장된줄, 단어, 문자의개수를세서출력함.

$ wc cs1.txt

38 318 2088 cs1.txt // 38줄, 318단어, 2088 문자 수가 출력됨.

‒ 옵션을 사용하면 줄 수(-l), 단어 수(-w), 문자 수(-c)를 선택해서 출력할 수 있음.

$ wc –l cs1.txt

38 cs1.txt // 줄 수만출력됨.

$ wc –w cs1.txt

318 cs1.txt // 단어수만 출력됨.

$ wc –c cs1.txt

2088 cs1.txt // 문자수만 출력됨.

2.2절

Page 24: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

more / head / tail / wc 연습

24

• 실습을 위한 예제 파일 만들기$ man ls > cju.txt // cju.txt 파일이만들어짐.

• 실습$ ls

$ cat cju.txt

$ more cju.txt // 스페이스바로이동, q로 종료

$ head cju.txt

$ head -3 cju.txt

$ tail cju.txt

$ tail -5 cju.txt

$ wc cju.txt

$ wc -l cju.txt

$ wc -w cju.txt

$ wc -c cju.txt

2.2절

Page 25: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

파일 및 디렉터리 조작 명령어

25

• cp 명령어 (copy)

• $ cp 파일1 파일2‒ 파일1의복사본파일2를현재디렉터리내에 만듦.

$ cp cs1.txt cs2.txt

$ ls -l cs1.txt cs2.txt

-rw-r--r-- 1 chang faculty 2088 4월 16일 13:37 cs1.txt

-rw-r--r-- 1 chang faculty 2088 4월 16일 13:45 cs2.txt

• $ cp 파일 디렉터리‒ 파일의복사본을디렉터리내에 만듦.

$ cp cs1.txt /tmp

$ ls /tmp/cs1.txt

-rw-r--r-- 1 chang faculty 2088 4월 16일 14:31 cs1.txt

2.2절

Page 26: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

mv 명령어

26

• mv (move)

• $ mv 파일1 파일2‒ 파일1의이름을파일2로변경함.

$ mv cs2.txt cs3.txt // cs2.txt 파일은 더 이상 존재하지 않게 됨.

$ ls -l

-rw-r--r-- 1 chang faculty 2088 4월 16일 13:37 cs1.txt

-rw-r--r-- 1 chang faculty 2088 4월 16일 13:56 cs3.txt

• $ mv 파일 디렉터리‒ 파일을디렉터리내로이동

$ mv cs3.txt /tmp

$ ls /tmp/cs3.txt

-rw-r--r-- 1 chang faculty 2088 4월 16일 14:56 cs3.txt

2.2절

Page 27: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

파일 및 디렉터리 삭제 명령어

27

• rm 명령어 (remove)‒ 명령줄인수로받은 파일들을삭제함.

$ rm 파일1 [파일2]

$ rm cs1.txt // cs1.txt를삭제함.

$ rm cs1.txt cju.txt // cs1.txt와 cju.txt를삭제함.

• rmdir 명령어 (remove directory)‒ 명령줄인수로받은 디렉터리들을삭제함.

‒ 단, 디렉터리내에아무 것도없어야삭제가능함.

$ rmdir test

$ rmdir test1 test2

• 디렉터리내의 모든 것을 한번에 지우려면$ rm -r 디렉터리 // rmdir이아닌 rm 명령어를사용함.

2.2절

Page 28: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

파일 관련 명령어

28

2.2절

(p.58)

Page 29: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

실습

29

• p.77 실습문제‒ 2번) cp 명령어실습을해봅시다.

• p.78 실습문제‒ 4번) rm 명령어실습을해봅시다.

2.2절

Page 30: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

질문

30

Q&A

Page 31: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

파일 속성

31

• 파일은 이름, 타입, 크기, 소유자, 사용권한, 수정 시간 등의 파일 속성을갖음.

$ ls -sl cs1.txt

6 -rw-r--r-- 1 chang faculty 2088 4월 16일 13:37 cs1.txt

2.3절

6

-

rw-r--r--

chang faculty

2088

4월 16일 13:37

Page 32: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

파일의 사용권한(permission)

32

• 시스템 관리자는 보안 관리를 위해 동일한 성격의 사용자들을하나의 그룹으로묶어서 관리함.‒ 사용자는하나이상의그룹에속함.

• 파일의 사용권한은읽기(r), 쓰기(w), 실행(x) 권한을 의미함.

• 파일의 보안을 위해 파일의 소유자(owner)/그룹(group)/기타(others)로구분하여 사용권한을관리함.

• 파일의 사용권한이 rw-r--r-- 이면,‒ 소유자(rw-), 그룹(r--), 기타(r--)

2.3절

Page 33: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

chmod 명령어 (change mode)

33

• 파일 혹은 디렉터리의사용권한을변경하는명령어$ chmod 사용권한파일

$ chmod [-R] 사용권한디렉터리• -R 옵션은 디렉터리 내의 모든 파일, 하위 디렉터리에 대해서도 사용권한변경이 적용됨.

2.3절

• 8진수를이용하는방법사용권한 rw- rw- r--2진수: 110 110 1008진수: 6 6 4$ chmod 664 cs1.txt

$ chmod 400 cs1.txt결과는?

• 기호를이용하는방법[u|g|o|a]+[+|-|=][r|w|x]+

u(user), g(group), o(other), a(all)연산자: +(추가), -(제거), =(지정)권한: r(읽기), w(쓰기), x(실행)$ chmod g+w cs1.txt$ chmod o-r cs1.txt$ chmod go=rw cs1.txt

Page 34: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

실습

34

• p.78 실습문제‒ 3번) chmod 명령어실습을해봅시다.

2.3절

Page 35: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

퀴즈

35

• cju.avi 파일의 사용권한이 다음과 같다. 사용권한의 의미를 설명하시오.

rw-------

• cju.avi 파일의 사용권한을 rw-r--r--로 바꾸고자 한다. 8진수를 이용하는방법의 올바른 명령어사용방법을답하시오.

$

• 다음은 기호를 이용한 사용권한 변경 방법이다. cju.avi 파일의사용권한은어떻게 변경되는가?

$ chmod a=r cju.avi

2.3절

Page 36: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

chown/chgrp 명령어

36

• chown 명령어 (change owner)‒ 파일이나디렉터리의소유자를변경함.

‒ 시스템관리자만사용가능함.

$ chown 사용자파일

$ chown [-R] 사용자디렉터리

$ chown cju2 cs1.txt // cs1.txt의사용자를 cju2로변경함.

• chgrp 명령어 (change group)‒ 파일이나디렉터리의그룹을변경함.

‒ 파일소유자는자신이속한그룹으로만그룹을변경할수 있음.

‒ 시스템관리자는자유롭게그룹을변경할수 있음.

$ chgrp 그룹파일

$ chgrp [-R] 그룹디렉터리

$ chgrp student cs1.txt // cs1.txt의 그룹을 student로 변경함.

2.3절

Page 37: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

출력 재지정

37

• 출력 재지정(output redirection)을 이용하면 명령어의 출력을 모니터에출력하는대신에 파일에 저장함.‒ 출력재지정기호 ( > )

‒ 사용법$ 명령어 > 파일

$ who > names.txt

2.4절

Page 38: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

출력 재지정 예제

38

• cat 명령어와 출력 재지정을이용한 간단한 파일 생성‒ cat 명령어는 명령줄 인수가 없으면 키보드로부터 입력 받은 내용을 모니터에출력함.

‒ 출력재지정을이용하면모니터가아닌파일에출력할수 있음.

$ cat list1.txt // 파일출력

$ cat list2.txt // 파일출력

$ cat list1.txt list2.txt // 두 파일함께 출력

$ cat list1.txt list2.txt > list3.txt // 출력재지정

$ cat list3.txt // 파일출력

2.4절

$ cat > list1.txt // 출력재지정

Hi ! This is the first list.^D

$ cat > list2.txt // 출력재지정

Hello ! This is the second list.^D

Page 39: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

출력 추가

39

• 출력 추가(output append)를 이용하면 명령어의 출력을 모니터 대신에 기존 파일의 뒤에 추가함.‒ 출력추가 기호 ( >> )

‒ 사용법$ 명령어 >> 파일

‒ 예

2.4절

$ cat >> list1.txt // 출력 추가

Bye !This is the end of the first list.^D$ cat list1.txt // 출력 추가

Hi ! This is the first list.Bye !This is the end of the first list.

기존 파일 내용

추가된 내용

Page 40: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

입력 재지정

40

• 입력 재지정(input redirection)을 이용하면 명령어의 입력을키보드에서받는 대신에 파일에서받음.‒ 입력재지정기호 ( < )

‒ 사용법$ 명령어 < 파일

$ wc < list1.txt

4 17 71 list1.txt

2.4절

Page 41: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

문서 내 입력

41

• 문서 내 입력(here document)이란 명령어를 실행할 때 문서(보통 스크립트) 내에서 입력을 받을 수 있는 기능을 말함.‒ 문서내 입력 기호 ( << )

‒ 사용법$ 명령어 << 단어 // << 기호 뒤의 단어가

... // 다시 나타날 때까지의내용을입력 받음.

단어

‒ 예$ wc << end

> hello !

> word count

> end // end가나왔으므로입력 받기를종료함.

2 4 19 // end가나오기 전까지의 2줄에대한 결과

2.4절

Page 42: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

파이프

42

• 파이프의필요성‒ 로그인된 사용자들을정렬해서보여주기

• 입력, 출력 재지정을이용하면가능하긴하지만 상당히번거로움.

$ who > names.txt // 출력 재지정

$ sort < names.txt // 입력 재지정

• 파이프(pipe)‒ 파이프를 이용하면 한 명령어의 출력을 다른 명령어의 입력으로 바로받을수 있음.

‒ 파이프기호 ( | )

‒ 사용법• $ 명령어1 | 명령어2

‒ 예• $ who | sort // 로그인 된 사용자를정렬해서보여줌.

• $ who | wc -l // 로그인 된 사용자 수를출력함.

2.4절

Page 43: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

입출력 재지정 관련 명령어

43

2.4절

(p.68)

명령어 의미

명령어 > 파일 표준 출력을 파일로 재지정

명령어 >> 파일 표준 출력을 파일에 추가

명령어 < 파일 표준 입력을 파일로 재지정

명령어1 | 명령어 2명령어1의 표준출력이 파이프를 통해 명령어2의표준입력이 됨.

cat 파일1 파일2 > 파일3 파일1과 파일2를 연결하여 파일 3을 만듦.

Page 44: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

전면 처리

44

• 전면 처리란 명령어를 입력하면 명령어가 전면에서 실행되며,명령어 실행이 끝날 때까지 쉘이 기다려 주는 명령어 처리 방식을 말함.‒ 전면에서 실행되고 있는 명령어는 필요에 따라 키보드와 모니터로 입출력을할 수 있음.

‒ 명령어를전면처리하면한 순간에하나의명령어만실행할수 있음.

2.5절

Page 45: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

명령어의 강제 종료, 정지, 계속

45

• 전면 처리 실행중인 명령어의강제종료‒ ^C // 컨트롤키와 c키를동시에누름.

• 전면 처리 실행중인 명령어의정지‒ ^Z // 컨트롤키와 z키를동시에누름.

• 정지된 명령어를전면(foreground)에서계속실행‒ $ fg

• 예$ cat

^C // 강제종료됨.

$ cat

^Z // 정지됨.

$ fg // 계속실행함.

2.5절

Page 46: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

후면 처리

46

• 후면 처리를 이용하여 특정 명령어를 후면에서 처리하고, 전면에서는 다른 작업을 수행함으로써 동시에 여러 작업을 수행할수 있음.‒ 사용법

• $ 명령어 & // 후면 처리할 명령어뒤에 & 기호를 붙여 실행함.

‒ 시간이 오래 걸리는 작업이나 동시에 여러 작업을 수행하고자 할 때 후면 처리를이용할수 있음.

‒ 예$ cat & // cat 명령을 후면 처리로실행시킴.

$ fg // 전면 처리로 계속 실행함.

2.5절

Page 47: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

후면 처리 예제

47

• 두 명령어를후면 처리 실행

$ (sleep 100; echo done) & // 100초 기다린 후, 문자열 “done”을 출력함.

[1] 8320

$ find . -name test.c -print & // 현재 작업 디렉터리에서 test.c라는 이름의

[2] 8325 파일을 찾아 있으면 파일이름을 출력함.

• 후면 처리되고있는 작업들의표시

$ jobs

• 후면처리에서전면 처리로전환$ fg %작업번호

$ fg %1

• 후면처리입출력

‒ 후면 처리의 출력이 전면 처리의 출력과 뒤섞이지 않도록 하기 위한 조치

$ find . -name test.c -print > find.txt & // 후면 처리의 출력을 파일에 저장함.

$ find . -name test.c -print | mail chang & // 후면 처리의 출력을 메일로 전송함.

‒ 후면 처리는 키보드로부터 입력을 받을 수 없으므로, 텍스트 파일로부터 입력 받아야 함.

$ wc < inputfile & // 텍스트 파일로부터 입력 받음.

2.5절

작업번호 PID

Page 48: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

프로세스

48

• 실행중인프로그램을프로세스(process)라고 부름.‒ 각 프로세스는유일한프로세스번호인 PID를 갖음.

• ps 명령어‒ 나의프로세스에대한정보를보여줌.

$ ps

PID TTY TIME CMD

8695 pts/3 00:00:00 csh

8720 pts/3 00:00:00 ps

2.5절

Page 49: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

ps 명령어의 옵션

49

• u 옵션‒ 나의프로세스에대한정보를자세히보여줌.

$ ps u

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

chang 8695 0.0 0.0 5252 1728 pts/3 Ss 11:12 0:00 -csh

chang 8793 0.0 0.0 4252 940 pts/3 R+ 11:15 0:00 ps u

• aux 옵션‒ 시스템내의모든프로세스에대한정보를자세히보여줌.

$ ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 2064 652 ? Ss 2011 0:27 init [5]

root 2 0.0 0.0 0 0 ? S< 2011 0:01 [migration/0]

...

chang 8695 0.0 0.0 5252 1728 pts/3 Ss 11:12 0:00 -csh

chang 8976 0.0 0.0 4252 940 pts/3 R+ 11:24 0:00 ps aux

2.5절

Page 50: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

kill 명령어

50

• kill 명령어는프로세스를강제적으로종료 시키는 명령어임‒ 프로세스 번호 또는 작업 번호를 명령줄 인수로 적어 실행하면 해당 프로세스를종료시킴.

‒ 사용법• $ kill 프로세스번호

• $ kill %작업번호

‒ 예• $ kill 8320

• $ kill %1

2.5절

Page 51: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

문서편집기

51

• CUI 기반 문서편집기‒ vi // Vi(Vim) Editor (1위)

‒ nano // Nano Editor (3위)

• GUI 기반 문서편집기‒ gedit // Gedit (2위)

2.6절

Page 52: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

실습

52

• p.79 실습문제‒ 5번) 에디터실습을해봅시다.

2.6절

Page 53: 제2장 리눅스 사용 - cis.cju.ac.krcis.cju.ac.kr/wp-content/lecture-materials/linux-system-programming/… · 장리눅스사용 . 목차 2 • 기본명령어 ... ‒head -5

질문

53

Q&A