Unix/Linux 입문 컴퓨팅브릿지김정한
History of Unix/Linux
UNIX Basics - Structure KERNEL Shell 운영체제의핵심 시스템자원들을관리하는부분 명령어해석기 사용자와시스템간의명령의전달 File System 계층구조를이루고있음 정보들을저장할수있는장소 SHELL KERNEL HARDWARE KERNEL
File Hierarchy / usr etc bin tmp home lib local bin lib sbin mpi apache
Directory File 디렉토리기능 /usr 공유가능한파일들을포함 /bin 기본적인실행가능한명령파일을가지고있음. cat, cp, date, echo, mv, pwd, mv /dev /etc /home /lib 장치파일들이있는디렉토리시스템의모든입출력파일을가지고있음 시스템에서사용하는관리파일 init.d, bashrc, motd, hosts.allow, passwd.. 다중사용자홈디렉토리 기본적인프로그램모듈이있는디렉토리
Command - Structure Command + Options + Arguments (e.g) ls ls a ls a /home
Command - Structure Command structure command -option argument command usually lowercase what you want to do -option sometimes not required enhances output of command tailors output to your needs can be combined with one or more other options argument what your command will act upon can have more than one argument sometimes not required
Manual page UNIX 시스템에서제공하는도움말 manual page(man page) 기본적으로 command 마다해당 man page 를가짐 keyword 로검색가능 도움말을보고자하는 command 를인자로주어 man 명령실행 다음페이지를보기위해서는 space bar 또는 f 입력 이전페이지를보기위해서는 b 입력 마치려면 q 를입력 $man command 해당 command 에관한 man page 출력 $man k keyword 키워드로 man page 검색 $whatis command 해당 command 에관한간단한설명
Manual page man page 의분류 man 페이지항목분류코드를괄호안에숫자로표시 shell prompt에서사용할수있는 command system programming에사용되는 system call들 때로다른분류에같은이름의항목이있으므로 man 명령을줄때이분류번호를명시하면해당분류의항목을표시해줌 $man section_num chmod Sections 1: User-level l commands and applications 2: System calls and kernel error codes 3: Library calls 4: Standard file formats (BSD 계열의경우 5) 5: Miscellaneous files and documents (BSD계열의경우 7) 6: Games and demonstrations 7: Device drivers and network protocols (BSD 계열의경우 4) 8: System Administration commands
기본명령어 KISTI 슈퍼컴퓨팅센터
date Easy Command 현재날짜와시간을나타냄 cal 달력보기
who Easy Command UNIX 시스템에현재사용자를나타냄
Easy Command ls 디렉토리내의파일목록을보기위한명령 옵션의미 -a 모든파일보기 -l 자세히보기 -c 생성시간순으로정렬해서보기 -d 디렉토리만보기 -k 파일의크기를 KB 단위로표시하기 -t 변경시간순으로정렬해서보기 -R 하위디렉토리의파일까지보여주기 --color=yes 파일속성에따라다른색상으로표시하여보여주기
디렉토리파일관련 mkdir 새로운디렉토리를만들때사용 rmdir cd 디렉토리를삭제할때사용 디렉토리이동명령 touch cp 파일이존재할경우파일의수정날짜변경하며, 존재하지않을경우0kb 의파일생성 파일복사명령 속성을유지할경우 -a 옵션추가
디렉토리파일관련 rm 파일이나디렉토리를삭제할때 옵션의미 -i 삭제할때확인 -f 강제삭제 -r 디렉토리를삭제할때하위디렉토리와파일도모두삭제 -v rm 명령어진행과정출력 mv 파일과디렉토리의이름을변경하거나경로를옮길때사용 -b 옵션사용시 : 같은파일이있을경우는 backup 파일을생성
디렉토리파일관련 diff 2 개의텍스트파일내용을비교할때사용 바이너리파일의경우는같은지다른지비교 file 파일의타입을알아볼때사용 echo 텍스트를화면상에출력 Ex) echo hello history 쉘상에서입력했던명령어목록을보여줌
텍스트파일관련 cat 텍스트로작성된파일내용을화면에출력할때 파일들을취합할때에도사용한다 head, tail head : 처음 10 줄출력 tail : 마지막 10 줄출력 more 텍스트파일내용을페이지단위로한화면씩출력할때 wc 줄또는단어개수를출력 -l : 줄개수, -w : 단어개수
파일묶기 (tar archive) tar option c for create a tar file x extract the contents of tar file u for update r for relace v for verbose output f to specify a file name z to use gzip compression j to use bzip2 compression 유용한옵션 tar cvzf archive.tar.gz * : 현재위치의모든파일은묶기 tar xvjf archive.tar.bz2 : tar 파일을풀기
. Some Special Directories (.) means the current directory.. (..) means the parent of the current directory ~ H di t i l b f d t b th tild ( ) Home directories can also be referred to by the tilde (~) character.
Easy Command 디렉토리관리하기 $ mkdir test $ cd test $ pwd $ echo > test1.f $ echo > test2.f $ mkdir test_sub $ ls l $ cd.. $ rm rf test test 디렉토리만듦 test 디렉토리로이동현재작업디렉토리를나타냄 test1.f 파일생성 test_sub 디렉토리만듦상위디렉토리로이동디렉토리안모든자료강제삭제
Absolute & Relative Path 절대경로 (Absolute Path) / (root) /(root directory) 를기준 상대경로 (Relative Path).(current directory) 를기준 (e.g) zeus mars > cd /home/mars > cd../mars home dooley zeus mars
파일속성 ls -al 명령을사용하여속성확인 필드정보속성 / 허가권링크수사용자그룹크기생성일자생성시간파일명 예제 -rw----- 1 consult ks0226 12 2 월 22 일 13 시 58 분.dbxhist
첫번째필드 파일속성 - 속성 / 허가권 파일속성및허가권을총 10 개의문자로표시 1+3+3+3 으로구분하여읽음 -rw-r--r-- : - + rw- + r-- + r 파일속성 + 소유주권한 + 그룹권한 + 나머지사용자권한파일속성영역 문자 파일의유형별의미 - 일반파일 b c d I p s 파일입출력과관련된블록디바이스용도의장치파일 터미널, 네트워크, 프린트, 마우스, 사운드카드와같은장치관련캐릭터디바이스용도의장치파일 디렉토리 심볼릭링크파일 파이프 소켓
파일속성 - 속성 / 허가권 파일허가권영역 사용자 / 그룹 / 나머지로권한설정 rwx 로표기 r: 읽기, w: 쓰기, x: 실행, - : 해당권한없음 옥텟 ( 숫자 ) 으로표현한파일허가권권한 7 ( rwx = 4 + 2 + 1 ) 읽기 / 쓰기 / 실행가능 6 ( rw- = 4 + 2+ 0 ) 읽기 / 쓰기가능 5 ( r-x = 4 + 0 + 1 ) 읽기 / 실행가능 4 ( r-- = 4 + 0 + 0 ) 읽기만가능 3 ( -wx = 0 + 2 + 1 ) 쓰기 / 실행가능 2 ( -w- = 0 + 2 + 0 ) 쓰기만가능 1 ( --x = 0 + 0 + 1 ) 실행만가능 0 ( --- = 0 + 0 + 0 ) 읽기 / 쓰기 / 실행불가능
chmod 파일허가권변경 chmod [who][+/-] [ 새로운권한 ][ 파일명 ] Who? WHO 설명 u g o 파일을소유한사용자 파일에대한소유권을가진그룹 나머지사용자 a 모든사용자 ( 소유자, 그룹, 다름사람 ) + 를사용하여권한을더해줄수있고, -를사용하여권한을삭제 chmod u+rw my My라는파일의사용자권한중 r,w를추가 chmod u-w,o+r test.txt
chmod exercise $ mkdir test $ cd test $ pwd $ echo > test.dat $ echo > test.txt t t t $ ls -l test 디렉토리만듦 test 디렉토리로이동현재작업디렉토리를나타냄 test.dat 파일생성 test.txt t t t 파일생성 $ chmod ***** test.txt 를모든사용자가모든권한을가지도록설정 $ ls -l $ chmod ***** test.dat 를다른사용자들이읽기가능하 $ ls l 고, 그룹이쓰기가능하도록설정
파일속성 - 기타 두번째필드 파일의하드링크수 세번째필드 파일의소유주를나타냄 chown 명령으로소유주변경 네번째필드 파일의그룹소유자를나타냄 chgrp 명령을사용하여그룹소유주변경가능 chown id:group id file 위명령으로전체소유주및그룹소유주변경가능 마지막파일명필드 /etc/dir_color 에컬러정의되어있음.
파일을나타내는와일드카드문자 * : 모든문자열 문자열의길이가 0, 즉문자열이아니거나길어도됨 rm * : 모든파일삭제 rm a* : a 로시작하는이름을가진모든파일삭제 rm bet*as? : 어떤문자 ( 문자열 X, 한글자 ) ls *.txt : 현재 directory내의 txt로끝나는파일나열 ls *.t?t : 확장자가 t?t 인세글자파일들나열 ls *t?
리다이렉팅 리눅스에서지원하는가장강력한명령어방식 명령어나프로그램의결과를스크린에보여주는것처럼파일로방향전환을하는기능파일을입력또는출력으로사용명령의결과를다른명령의입력으로사용할수있다. 프로그램의결과를파일로 test.x > test.out cal > October.txt 파일의내용을명령의입력으로사용 test.x < input.dat > result.txt mail mark < letter
리다이렉팅 명령어간의파이프 어떤명령어의결과가다른명령어의입력이되도록해준다 who grep mark who명령어는시스템에접속한사용자가누구인지, 어떤터미널이사용되고있으며언제로그인했는지를살펴보는명령어 grep 은주어진패턴과일치하는 line 만을골라내어보여주는명령어 ( 주요옵션 i:ignore, -v:not match) 위명령어는 who 로나열되는사용자중 mark 가있는지를보여줌
파일의검색 find 명령어 하드디스크의파일 ( 파일명, 디렉터리명 ) 을찾는명령어 find [path ] [expression] Expression 부분을이용하여상세검색이가능하고, 유닉스마다다른문법을가지고있음 : 맨페이지참고 find ~/ -name *.txt 홈디렉터리또는그하위디렉터리에서 txt 로끝나는파일들을나 열해준다. find ~/ -name *.txt ls : ls 형식으로출력 find / -name et* type d 전체하드디스크에서디렉터리이름이 et로시작하는모든디렉터리찾기 ( 옵션순서에주의 )
파일의검색 기본적인 expression Expression 설명 -name -type -user / -group -atime -ctime 와일드카드와함께사용될때에는반드시따옴표로묶어야함 f=file d=directory l=link 이름이나 UID / 이름이나 GID 파일이읽힌가장최근시간 find. atime +30 : 읽은지 30일지난파일검색파일의소유자나권한이바뀐가장최근시간 -mtime 파일이수정된가장최근시간 find. mtime 1 : 24 시간내에수정된파일 -newer 주어진파일보다나중에만들어진파일 find. name.* newer.bashrc -delete -ls 찾은파일을삭제 ls 형태로결과출력
파일의검색 모든 expression 들은 and 구조로결합 실습 or 구조로결합하기위해서는사이에 -o 사용 find. atime +7 o name.* 실습 )find 명령어를사용하여자신의홈디렉터리에서오늘생성 된파일검색 실습 ) find 와 grep 명령어를사용하여위검색을수행하고 FIND.txt 라는파일로생성
Make links 링크생성 ln [option]. TARGET [LINK_NAME] 홈디렉터리에있는실행파일또는 inputfile 들을 link 스크레치디렉터리에서작업가능 $ cd /work01 스크레치디렉터리로이동 $ mkdir /edun** 자신의계정디렉터리생성 $ cd edun** $ ln s /home01/edun**/test.x test.x Test.x 링크생성
Control key 컨트롤키 stty 명기능설명 Ctrl C intr 현재명령중지 Ctrl D eof 입력의끝 Ctrl \ quit Ctrl-C 가동작하지않을경우현재명령중지 Ctrl S stop 화면출력정지 Ctrl Q 화면출력다시시작 Ctrl? or DEL erase 마지막문자삭제 Ctrl U kill 전체명령행삭제 Ctrl Z susp 현재명령일시중단
간단한스크립트실습 #!/bin/bash echo 'Vim is a text editor that is upwards compatible to Vi. It can be used to edit all kinds of plain text. It is especially useful for editing programs. There are a lot of enhancements above Vi: multi level undo, multi windows and buffers, syntax highlighting, command line editing, filename completion, on-line help, visual selection, etc.. See ":help vi_diff.txt" for a summary of the differences between Vim and Vi. While running Vim a lot of help can be obtained from the on-line help system, with the ":help" command. See the ON-LINE HELP section below.' > test.txt cat test.txt echo "number of lines in text.txt is " wc -l testtxt test.txt grep vi test.txt > test_vi.txt grep It test.txt > test_it.txt tar cvzf test.tar.gz test* mkdir test cd test tar xvzf../test.tar.gz exit 0