1 제 2 장유닉스사용
2 2.1 기본명령어
간단한명령어사용 $ date : 현재날짜및시간을확인 $ hostname : 사용하고있는호스트이름을확인 $ uname : 현재사용하고있는운영체제를확인 $ who : 현재로그인한사용자를확인 $ ls : 현재디렉터리내의파일목록을확인 $ clear : 화면을깨끗이하고화면의첫째줄에프롬프트를표시 $ passwd : 패스워드를변경 3
4 2.2 파일및디렉터리
파일의종류 일반파일 (ordinary file) 데이터를가지고있으면서디스크에저장된다. 디렉터리 (directory)/ 폴더 (folder) 디렉터리 ( 폴더 ) 자체도하나의파일로한디렉터리는다른디렉터리들을포함함으로써계층구조를이룬다. 부모디렉터리는다른디렉터리들을서브디렉터리로갖는다. 특수파일 (special file) 물리적인장치에대한내부적인표현 키보드 (stdin), 모니터 (stdout), 프린터등도파일처럼사용 5
디렉터리계층구조 유닉스의디렉터리는루트로부터시작하여계층구조를이룬다. 6
디렉터리계층구조 리눅스디렉터리 7
홈디렉터리 / 현재작업디렉터리 홈디렉터리 (home directory) 각사용자마다별도의홈디렉터리가있음 사용자가로그인하면홈디렉터리에서작업을시작함 현재작업디렉터리 (current working directory) 현재작업중인디렉터리 로그인하면홈디렉터리에서부터작업이시작된다. 8
디렉터리관련명령 pwd(print working directory) 현재작업디렉터리를프린트 $ pwd cd(change directory) 현재작업디렉터리를이동 $ cd [ 디렉터리 ] mkdir(make directory) 새디렉터리를만듬 $ mkdir 디렉터리 9
디렉터리리스트 ls(list) 디렉터리의내용을리스트 $ ls cs1.txt $ ls s 총 6 6 cs1.txt $ ls a... cs1.txt -s(size) -a(all) 10
디렉터리리스트 $ ls l -l(long) -rw-r--r-- 1 chang faculty 2088 4 월 16 일 13:37 cs1.txt $ ls asl 총 10 2 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 11
디렉터리관련명령어 명령어 의미 ls ls -a ls -asl mkdir cd 디렉터리 cd cd ~ cd.. pwd 파일및디렉터리리스트모든파일과디렉터리리스트모든파일자세히리스트디렉터리만들기디렉터리로이동홈디렉터리로이동홈디렉터리로이동부모디렉터리로이동현재작업디렉터리프린트 12
경로명 파일이나디렉터리에대한정확한이름 절대경로명 (absolute pathname) 루트디렉터리로부터시작하여경로이름을정확하게적는것 상대경로명 (relative path name) 현재작업디렉터리부터시작해서경로이름을적는것 ~ : 홈디렉터리. : 현재디렉터리.. : 부모드렉터리 13
파일내용리스트 파일내용출력과관련된다음명령어들 cat, more, head, tail, wc, 등 $ 명령어파일 $ 명령어파일 * $ more 파일 + 14
cat 명령어 파일내용출력 $ cat cs1.txt $ cat... ^D $ cat > cs1.txt... ^D 15
more/head/tail/wc more 명령어하나이상의파일이름을받을수있으며각파일의내용을페이지단위로출력 head 명령어파일의앞부분 (10 줄 ) 을출력한다. tail 명령어파일의뒷부분 (10 줄 ) 을출력한다. wc(word count) 파일에저장된줄, 단어, 문자의개수를세서출력 $ wc cs1.txt 38 318 2088 cs1.txt 16
cp 명령어 $ 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 파일디렉터리 파일 1 의복사본을디렉터리내에만듬 $ cp cs1.txt./tmp 17
mv 명령어 mv(move) 파일1의이름을파일2로변경한다. $ mv 파일1 파일2 $ mv cs2.txt cs3.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 18
파일 / 디렉터리삭제 rm(remove) 명령어명령줄인수로받은파일 ( 들 ) 을지운다. $ rm 파일 + $ rm cs1.txt $ rm -r 디렉터리디렉터리내의모든파일및하위디렉터리들을단번에지운다. rmdir(remove directory) 명령어명령줄인수로받은디렉터리 ( 들 ) 을지운다. $ rmdir 디렉터리 + 주의 : 디렉터리내에아무것도없어야한다. $ rmdir test 19
파일관련명령어 20
21 2.3 파일속성
파일속성 (file attribute) 파일의이름, 타입, 크기, 소유자, 사용권한, 수정시간 $ ls -sl cs1.txt 6 -rw-r--r-- 1 chang faculty 2088 4 월 16 일 13:37 cs1.txt 22
사용권한 (permission mode) 읽기 (r), 쓰기 (w), 실행 (x) 권한 파일의사용권한은소유자 (owner)/ 그룹 (group)/ 기타 (others) 로구분하여관리한다. 예 소유자그룹기타 rw- r-- r-- 23
X 윈도우의 GNOME 데스크톱에서속성확인 기본속성 사용권한 24
chmod(change mode) 파일혹은디렉터리의사용권한을변경하는명령어 $ chmod [-R] 사용권한파일 -R 옵션은디렉터리내의모든파일, 하위디렉터리에대해서도적용 사용권한 rw- rw- r-- 2진수 : 110 110 100 8진수 : 6 6 4 $ chmod 664 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 25
chown(change owner)/chgrp(change group) chown 명령어파일이나디렉터리의소유자를변경할때사용한다 $ chown 사용자파일 $ chown [-R] 사용자디렉터리 chgrp 명령어파일의그룹을변경할수있다 $ chgrp 그룹파일 $ chgrp [-R] 그룹디렉터리 파일의소유자또한슈퍼유저만이사용가능! 26
27 2.4 아카이브
아카이브 아카이브 백업또는다른장소로의이동시크는등의목적을위해 컴퓨터파일들을묶어놓는묶음 tar 명령어 여러개의파일들을하나의타르파일로묶어주는프로그램 $ tar cvf 타르파일파일 * ( 묶기 ) $ tar xvf 타르파일파일 * ( 풀기 ) 28
압축 compress 명령어유닉스에서기본적으로제공하는압축프로그램확장자는 Z $ compress 파일 * ( 압축 ) $ uncompress 파일.Z* ( 복원 ) gzip 명령어윈도우의 zip 프로그램과비슷한방법으로압축하며압축률과속도면에서우수함 $ gzip 파일 * ( 압축 ) $ gzip -d 파일.gz* ( 복원 ) $ tar cvf src.tar * $ gzip src.tar 29
AWK AWK 유닉스에서처음개발된일반스크립트언어 텍스트형태로되어있는줄을필드로구분하여처리하는기능 $ awk f 프로그램파일 * NF 필드의개수를나타내는빌트인변수 NR 현재줄의줄번호를나타내는빌트인변수 30
예제 대상이되는텍스트파일의각줄의단어수를세서출력하고파일끝에도달하면파일의전체줄수와단어수를출력하라. word.awk $ awk f word.awk test.txt 31
32 2.5 입출력재지정및파이프
출력재지정 (output redirection) 명령어의표준출력내용을모니터에출력하는대신에파일에저장 $ 명령어 > 파일 $ who > names.txt 33
출력재지정예 $ cat > list1.txt Hi! This is the first list. ^D $ cat > list2.txt Hello! This is the second list. ^D $ cat list1.txt list2.txt > list3.txt $ cat list3.txt Hi! This is the first list. Hello! This is the second list. 34
출력추가 명령어의표준출력을모니터대신에기존파일에추가 $ 명령어 >> 파일 $ 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. 35
입력재지정 (input redirection) 명령어의표준입력을키보드대신에파일에서받는다. $ 명령어 < 파일 $ wc < list1.txt 4 17 71 list1.txt 36
문서내입력 (here document) 명령어의표준입력을단어가다시나타날때까지의내용으로 보통스크립트내에서입력을줄때사용 $ 명령어 << 단어... 단어 $ wc << end hello! word count end 2 420 37
파이프 로그인된사용자들을정렬해서보여주기 $ who > names.txt $ sort < names.txt $ 명령어 1 명령어 2 명령어 1 의표준출력을명령어 2 의표준입력으로바로받는다. $ who sort 38
39 2.5 후면처리및프로세스
전면처리 vs 후면처리 전면처리 명령어를입력하면명령어가전면에서실행되며명령어실행이끝날때까지쉘이기다려준다. 후면처리 명령어들을후면에서처리하고전면에서는다른작업을할수있으면동시에여러작업을수행할수있다. $ 명령어 & 40
후면처리예 $ (sleep 100; echo done) & [1] 8320 $ find. -name test.c -print & [2] 8325 $ jobs [1] + Running ( sleep 100; echo done ) [2] - Running find. -name test.c print $ fg % 작업번호 $ fg %1 ( sleep 100; echo done ) 후면처리입출력 $ find. -name test.c -print > find.txt & $ find. -name test.c -print mail chang & $ wc < inputfile & 41
프로세스 (process) 실행중인프로그램을프로세스 (process) 라고부른다. 각프로세스는유일한프로세스번호 PID 를갖는다. ps 명령어를사용하여나의프로세스들을볼수있다. $ ps PID TTY TIME CMD 8695 pts/3 00:00:00 csh 8720 pts/3 00:00:00 ps $ 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 42
ps 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] root 3 0.0 0.0 0 0? SN 2011 0:00 [ksoftirqd/0] root 4 0.0 0.0 0 0? S< 2011 0:00 [watchdog/0]... root 8692 0.0 0.1 9980 2772? Ss 11:12 0:00 sshd: chang [pr chang 8694 0.0 0.0 9980 1564? R 11:12 0:00 sshd: chang@pts 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 43
kill 명령어 프로세스를강제적으로종료시키는명령어 $ kill 프로세스번호 $ kill % 작업번호 $ kill 8320 혹은 $ kill %1 [1] Terminated ( sleep 100; echo done ) 44
45 2.6 문서편집기
gedit GNOME 이제공하는 GUI 기반문서편집기 사용방법 [ 프로그램 ] -> [ 보조프로그램 ] -> [gedit 텍스트편집기 ] $ gedit [ 파일이름 ] & 기능 파일 : 새로만들기, 열기, 저장 닫기 편집 : 입력취소, 잘라내기, 복사 붙여넣기 보기 : 도구모음, 상태표시줄, 전체화면 검색 : 찾기, 바꾸기 검사 : 맞춤법검사 문서 : 모두저장, 모두닫기 도움말 46
kwrite KDE 데스크톱환경이제공하는 GUI 기반문서편집기 기능 파일 : 새문서, 열기, 저장, 편집 : 실행취소, 잘라내기, 복사붙여넣기 보기 : 새창, 줄번호, 글꼴크기 도구 : 맞춤법검사, 들여쓰기대소문자변환, 정렬 설정 : 도구모음, 상태표시줄, 편지기설정, 단축키설정 도움말 47
48
핵심개념 유닉스의디렉터리는루트로부터시작하여계층구조를이룬다. 절대경로명은루트디렉터리부터시작하고상대경로명은현재디렉터리부터시작한다. 파일의사용권한은소유자, 그룹, 기타로구분하여관리한다. 출력재지정은표준출력내용을파일에저장하고입력재지정은표준입력을파일에서받는다. 실행중인프로그램을프로세스라고한다. 49