리눅스시스템 - Chapter 2: 리눅스입문 1. 리눅스시작하기 2. 기본명령어 (1) 3. 파이프, 연결재지향 4. 기본명령어 (2) 5. vi 와 vim 에디터 담당교수 : 천은홍교수님 20021002 조정현 1
1. 리눅스시작하기 man page man 명령어 - 해당명령어에대한매뉴얼페이지를보여죾다. man useradd man f printf 2
man h finger <-man 옵션-> -C Config_file: 사용 할 -M path: 멘페이지검색을위 man.conf파일을지정 한디렉토리리스트를지정 -P Pager: 사용할페이지를지정 -S Section_list: 검색을위한매뉴얼섹션의리스트를콜롞으로구분한리스트 -a Name에맞는모든매뉴얼페이지를표시 -c 최싞의 cat페이지가존재하여도소스맨페이지를재형식화한다. -d 맨페이지를표시하지않고, 디버깅정보의덩어 -D 표시와디버깅정보둘다출력한다. 리를프릮트한다. -f Whatis 와같다. -F or -- preformat 형식화만하고표시하지않는다. -h 갂단한도움말메시지를출력하고종료 3
locale, character set locale 에따른출력변화 user useradd <ID> 새로운유저의추가 passwd <ID> 유저의암호생성처음유저생성시기본암호는 root 가지정 su - [ID] substitute user ID 생략시 root 로. 4
2. 기본명령어 directory 명령어 cd- change directory cd[ 경로 ] pwd-print working directory directory 명령어 mkdir-make directory - mkdir 명령어는주어진이름으로경로를만든다 <-mkdir옵션-> -p --parents: 상위ㅣ경로까지만든다 -m --mode: 새로만들어지는디렉토리의권한을설정한다. mode로사용할것은 chmod(1) 에서사용하는기호형식이나, 숫자형식이며, 이값은초기값으로지정되는모드를무시한다. 5
rmdir-remove directory rmdir- 빈디렉토리를삭제하는명령어 <-rmdir옵션-> -p --parents: 상위경로도지운다. 해당디렉토리상위경로안에내용이비어있어야가능하다. 6
file 명령어 ls - list file - ls 명령어는디렉토리와파일의목록을보여주는명령어이다. <-ls옵션-> -a --all:. ( 숨긴파일 ) 을포함한경로안의모든파일을나열한다. -d --directory: 경로안의내용을나열하지않고, 그경로를보여죾다. -n --numeric: 이름의나열에서 UID, GID 번호를사용한다. -r --reverse: 정렬순서를내림차순으로한다. -t --sort=time: 파일시갂순으로정렬한다. 최근파일이제일먼저보인다. -F --classify: 파일형식을알리는문자를각파일뒤에추가한다. -R --recursive: 하위경로와그안에있는모든파일들도같이나열한다. -S --sort=size: 파일크기가가장큰것부터정렬해서나열한다. -U --sort=none: 정렬을하지않고, 디스크에저장된순서대로보여죾다. 7
cat - catenate - 텍스트파일내용을표죾출력으로보여죾다. <-cat 옵션-> -b -number-nonblank: 공백을제외한파일내용의죿의맨앞에 1부터시작하는죿수를보여죾다. -E --show-ends: 각죿의끝에 $ 로끝죿을나타낸다. -n --number: 모든죿의앞에 1부터시작하는죿수를보여죾다. -s --squeeze-blank: 공백의죿수를하나이상보여주지않는다. -T --show-tabs: 탭문자를 ^ 로보여죾다. -v --show-nonprinting: 개행문자와탭문자를제외한 ^ 와 M 표시를보여죾다. -A --show-all: -vet 와같다. -e -ve 와같다. -t -vt 와같다. 덮어쓰기 : cat > aa 이어쓰기 : cat >> aa 입력후저장 : Ctrl + D 8
ln - make links hard link - 두파일을같은 i-node 로가리킨다. 즉, 같은파일이다. symbolic link - 완젂히다른파일로단지특정파일의위치를가리키는기능을하고있음. <-ln 옵션-> -b --backup: 대상파일이있으면, 그것을백업한다. -d, --directory: 경로의하드링크를허용한다. 이것은 -F 시스템관리자만가능하다. -f --force: 대상파일이이미있어도그냥지운다. -i --interactive: 대상파일이이미있을때어떻게할것인지사용자에게물어본다. 9
-n --no-dereference: 만약링크할원본이심볼록파일이면, ln 명령은그심볼릭대상이되는파일을링크한다. 이렇게하지않고, 단지그심볼릭파일자체를심볼릭정보와함께링크하고자할때이옵션을사용한다. 이옵션은 --force 옵션과함께유용하게쓰인다. -s --symbolic: 심볼릭링크, -v --verbose: 각파일의작업상태를자세히보여죾다. -s --suffix backup-suffix: 만약에대상이이미있어, 백업을해야할경우에그백업파일에서사용할파일이름의꼬리문자를지정한다. -V --version-control {numbered, existing, simple} : 백업하는방법을지정하는데이옵션은이미지정되어있는 VERSION_CONTROL 홖경변수를무시한다. hard link symbolic link 10
cp - 파일복사 <-cp 옵션-> -a --archive: 원본파일의속성, 링크정보들을그대로유지하면서복사한다. -f --force: 복사대상파일이있을경우, 복사대상파일을강제로지우고복사한다. -i --interactive: 복사대상파일이있을경우, 사용자에게복사에대한여부를물어본다. -p --preserve: 원본파일의소유자, 그룹, 권한, 시갂정보들이그대로보존하여복사한다. -v --verbose: 복사상태를자세하게보여죾다. -R, --recursive: 디렉토리를복사할경우하 -r 위디렉토리와파일을복사한다. <-실습-> (-R 옵션 ) 11
mv - 파일이나디렉토리를이동하거나이름을바꿀떄사용한다. rm - 파일과디렉토리를삭제하는명령어이다. <-rm 옵션-> -f --force: 강제로삭제한다. -i --interactive: 삭제하기젂사용자에게삭제여부를확인한다. -R, --recursive: 하위디렉토리를포함한 -r 모든내용을삭제한다. -v --verbose: 지워지는파일의정보를화면에출력한다. 12
파일속성 : chmod chmod - 파일권한을변경해죾다. find - find directory [expression] -name filename filename의이름과같은파일을검색 -size n 크기가 n 인파일을검색 -inum n inode number가 n 인파일을검색 -samefile file file과같은 inode를가진파일을검색 (= 같은하드링크를검색 ) -maxdepth level 탐색할위치의하위디렉터리최대깊이가 level인파일을검색 -mindepth level 탐색할위치의하위디렉터리최소깊이가 level인파일을검색 13
검색후작업지시 i18n 관련명령 convmv 변환옵션 - mv와같지만코드변홖기능이있음 - 설치 yum -y install convmv <-convmv 옵션-> -f encoding 원본의문자세트인코딩을지정한다. -t encoding 변홖할문자세트인코딩을지정한다. --notest 테스트모드로작동하지않는다.( 실제로변홖작업을한다.) -r 하위디렉토리에대해서도작업한다. -unescape %xx식의 16진수문자열을 8bit로변홖하여작업한다. ( 웹에서다운로드한일부파일들의파일명변홖에유용하다.) convmv 가지원하는문자세트리스트 14
변홖실습 3. 파이프, 연결재지향 방향재지정 (redirection) - 채널의방향을다른곳으로연결 15
4. 기본명령어 (2) 압축 - 여러개의파일로묶는작업과압축이분리됨 tar, cpio: 단순히파일을묶는작업 gzip, bzip2, compress: 압축, 압축해제 <-tar 옵션-> c create 아카이브를생성 t test 아카이브를테스트 x extract 아카이브로부터파일을풀어냄 f archive-file 입출력할아카이브파일명 --exclude file: 대상중에 file을제외 ( 특정파일을제외할때사용 ) <-gzip 옵션-> -d decompress 압축해제 -c (stdout) 표죾출력 (stdout) 으로결과물을보냄 -1~-9 (fast, better) 압축레벨지정 <-bzip 옵션 -> gzip 과동일 (tar 로묶고 gzip 으로압축따로하기 ) 16
(bzip2 로압축, 해제하기 ) (tar 묶고 ( 풀고 ) gzip,bzip2 로압축 ( 압축해제 ) 한번에하기 ) process status ps - 프로세스상태확인 17
job control - fore-ground process - 현재세션에서제어터미널 (control terminal) 을가진프로세스 - back-ground process - 현재세션에서제어터미널 (control terminal) 을잃어버릮프로세스 - CTRL-Z - SIGTSTP(Signal Temporary Stop) 시그널을 fore-ground 프로세스에젂달작동 : 잠시정지시킴 = 결과적으로 back-ground에 Stopped 상태로 - jobs - stopped, back-ground process 의리스트출력 - fg %# - # 에는 jobs의작업번호지정한프로세스를 fore-ground로.. - bg %# - 정지된백그라운드프로세스를 back-ground에서계속작동시킴 <-실습-> 18
kill - 프로세스에시그널을보냄 시그널리스트확인 (kill 명령어로 process 죽임 ) top 19
filter: head, tail head tail 20
5. vi 와 vim 에디터 버퍼관리 : 일반모드 삭제 vi 에서의삭제 = 임시버퍼에잘라내기 x, dl 커서위치의글자삭제 X, dh 커서바로앞의글자삭제 dw 한단어를삭제 d0 커서위치부터죿의처음까지삭제 D, d$ 커서위치부터죿의끝까지삭제 dd 커서가있는죿을삭제 dj 커서가있는죿과그다음죿을삭제 dk 커서가있는죿과그앞죿을삭제 < 원문 > 21
명령어입력 j0wd0wxxxxwwxxxjwwd 다음죿의처음으로이동해 ( j0) 한단어오른쪽으로이동한후 (w) 커서위치에서부터죿의처음까지지우고 (d0) 다시한단어이동한뒤 (w) 커서위치의네글자를지우고 (xxxx) 다시두단어이동한뒤 (ww) 커서바로앞의세글자를지우고 (XXX) 다음죿로내려가두단어오른쪽으로이동한후거기에서부터죿의끝까지지운다.( jwwd) < 바뀐내용 > 붙여넣기 (paste) - P : 아래로붙여넣기 - p: 위로붙여넣기복사하기 (yank) yw 커서위치부터단어의끝까지복사 y0 커서위치부터죿의처음까지복사 y$ 커서위치부터죿의끝까지복사 yy 커서가있는죿을복사 yj 커서가있는죿과그다음죿을복사 yk 커서가있는죿과그앞죿을복사 < 원문 > 명령어입력 kkjyyjpjdw$pdw$p0dw$p 두죿위로올라가 (kk) 다음죿을복사 (jyy) 한죿아래로이동한후커서뒤쪽에끼워넣은후 (jp) 한죿아래로내려가한단어삭제후그단어를그죿의맨끝에붙여넣고 ( jdw$p) 다시맨앞의한단어를삭제한후맨뒤에붙여넣으라는뜻 (0dw$p) 22
< 바뀐내용 > 일반모드 : 반복지정 - 일반모드에서는명령어앞에숫자를붙이면반복지정 < 원문 > 명령어입력 2j3dd3p 2 죿아래로이동 (2j) 3 죿삭제 (3dd) 삭제되어버퍼의내용을 3 번붙이기 < 바뀐내용 > 일반모드 : 검색 -패턴검색 /[pattern]?[pattern] n N 현재위치에서부터아래방향으로패턴검색현재위치에서부터위쪽방향으로패턴검색검색하던방향으로계속패턴검색검색하던반대방향으로계속패턴검색 23
< 원문 > member 라는단어를검색하고자할때다음과같이입력한다. /member( 명령모드 ) 위쪽방향으로찾을때?member < 바뀐내용 > 일반모드 : 실행취소 u 작업취소 (undo) U 그죿에행해진작업모두취소 Ctrl+r 작업재실행 (redo). 조금젂에했던명령을반복 J 현재죿과아래죿을연결 ~ 대문자를소문자로, 소문자를대문자로바꿈 % 괄호의반대쪽짝으로이동 Ctrl+l 현재화면을지우고다시그림 Ctrl+g 파일에관한정보를표시 24
< 원문 > 명령어입력 kkk0bbbxxxuuujdw.ukkj 세죿위로이동해그죿의맨앞으로이동후세단어오른쪽으로이동하고 (kkk0bbb) 글자세개를지웠다가이를취소한후 (xxxuuu) 한죿아래로내려가한단어를삭제하고 ( jdw) 다시한번한단어를삭제하고 (.) 그죿에서행해진작업을모두취소한뒤 (U) 두죿올라가그죿과그다음죿을연결하라 (kkj) 는명령이다. < 바뀐내용 > 명령행모드 :w [filename] filename이지정되면해당파일에쓰기를지정 filename이생략되면현재파일에쓰기를지정 :w >> file 현재편집중인문서를 file의뒷부분에붙임 :[range]w >> file 위와같지만 range( 범위 ) 만붙임 :up 변경된점이있을때만 :w 명령어를실행 25
w [filename] w >> file 밑에추가된걸확인할수있다. 26
명령행모드 : 옵션설정 :set 현재옵션설정을보여줌 :set all 모든옵션설정을보여줌 (default 옵션까지출력 ) :set [no]name name에해당하는옵션을 on/off 함 ( 앞에 prefix를 no를지정하는경우가 off) :set name=value name 옵션에 value의값을할당함 set set all 27
set nu( 행번호를표시해주는옵션 ).vimrc 예시 nu ai cindent ts=value sw=value fencs=value fenc=value (number) 화면에행번호표시 (autoindent) 자동들여쓰기 C언어스타일의들여쓰기 (tabstop) 화면에표시될탭크기를 value로지정 (shiftwidth) 자동블록이동시열의너비 (fileencodings) 지원할파일인코딩방식리스트 * 복수개지정시콤마로구분 ( 공백없음 ) (fileencoding) 현재파일인코딩방식을지정 visual mode v 키 ( 소문자 ) 의비주얼모드 28
CTRL-V 키의비주얼블록모드 윈도우분할 ( 수평 ) 상하분할윈도우 - vi -o 파일 1 파일 2 - :sp [ 파일 ] 29
좌우분할윈도우 - vi -O 파일 1 파일 2 - :vs [ 파일 ] 30
윈도우갂이동 - CTRL-WW : 이젂윈도우로이동 - CTRL-W [h j k l]: h, j, k, l이지닌이동방향으로 ( 좌하상우 ) <END> <vi 부분참고자료 : http://kldp.org/koreandoc/html/vim_guide-kldp> 31