[beginning] Linux & vi editor Nov. 2010 http://suite.tistory.com/entry/beginning-Linux-vi-editor
목차 Linux history Shell Linux Directory Linux Command Redirect & Pipe Vi(Visual) Editor
1. 리눅스 히스토리 Unix vs linux 유닉스와 리눅스는 다르다? 유닉스는 1970년대 초 C 언어 기반으로 만들어짐 이후 기업 ,단체,대학들에 개발하며 발전 대표적인 벤더의 UINX 이름 HP : Hp Unix IBM : AIX Oracle(sun) : solaris 그리고….들어본 단어 System V ,BSD POSIX ….. http://blog.naver.com/jyh8572?Redirect=Log&logNo=120098211541
1. 리눅스 히스토리 리눅스 배포판 사용자가 쉽게 사용하도록 커널을 가지고 패키지화 linux 1991년 리누스 토발즈(linus Torvalds)가 unix 기반으로 오픈소스 Kernel 공개 v0.01 부터 현재 v2.6.* (2003년) - UNIX와 반대의 자유소프트웨어 GNU프로젝트(Gnu is Not Unix) : 1984년~ linux = 리누스 토발즈의 커널 + GNU (그누) 소프트웨어(c컴파일러,vi...) -> 이후 오픈 소스를 세계의 개발자가 참가하여 개발 리눅스 배포판 사용자가 쉽게 사용하도록 커널을 가지고 패키지화 Redhat(fedora,centos , Enterprise), 한컴리눅스 , Debian , Suse , 우분투….
2. Shell 쉘이란? 커널 쉘 사용자와 커널 사이 중간 역할 담당 사용자가 입력한 명령어(ls,cp…)를 실행해줌(fork() ,exec()이용) 대표적인 쉘로 bourne shell , c shell , korn shell , bash shell /etc/passwd 에 최초 로그인시 사용할 쉘 명시되어있음 -> shell script 실행 변경가능 ex) 맨 첫줄에 #!/bin/csh windows 의 쉘은? 하드웨어 쉘 커널
2. Shell 알아야 할 환경 변수 알아야 할 쉘 시작(기동실행) 파일 $>env 입력하면 현재 내가 사용하고 있는 shell의 환경변수가 출력됨 $SHELL : 내가 현재 사용하고 있는 쉘 $PATH : 명령어의 path 정보 앞에서부터 차례로 입력 $LANG , $LC_ALL: 내 쉘의 char-set 정보 ( $LANG < $LC_ALL이 우선순위 높음 ) ex) alias utf8='export LC_ALL=ko_KR.utf8' 알아야 할 쉘 시작(기동실행) 파일 쉘 마다 다름 bash : .bash_profile , .bashrc csh : .cshrc korn : .profile
3. Linux 주요 Directory /etc 리눅스 운영 / 응용프로그램등의 환경 정보 파일이 모여있음 /etc/passwd , /etc/hosts , /etc/xinetd.d /bin , /usr/bin , /sbin , /usr/sbin 리눅스 명령어 모음 /var 리눅스 데이터 모음(로그, 메일등…) /var/log/secure , /var/log/ messages /home 일반 사용자 홈 디렉터리 /lib C 라이브러리 모음 /tmp 임시디렉터리 (일반사용자로 Write가능)
Linux 주요 Command – 알아야 할 명령어들 4. Linux 주요 Command – 알아야 할 명령어들 ls (list) 파일 리스트 출력 수많은 옵션이 존재 $>ls –ltr Ex) drwxrwxr-x 5 ir ir 4096 10월 19 11:24 abc -rw-rw-r-- 1 root ir 203 12월 23 2009 test.sql cd (change directory) 디렉터리 이동 상위 ../ 상대 path ../dir 절대 path /dir cd ~ : 사용자의 홈디렉터리 이동
Linux 주요 Command – 알아야 할 명령어들 4. Linux 주요 Command – 알아야 할 명령어들 cp (copy) 파일 복사 옵션 -r , -R 디렉토리 전체 복사 mv(move) $>mv <source> <target> 파일 이동 , 디렉토리 모두 가능 man (manual) 명령 매뉴얼 보기 $> man rm rm (remove) 파일 삭제 옵션 : -r 하위 디렉토리 포함 삭제 , -f 강제 삭제 rmdir : 디렉토리만 삭제 <-> mkdir cat (concatenate) 파일 내용출력 echo 스트링또는 변수 값을 출력 $>echo $SHELL sleep 초단위 sleep uname –a 서버 네임 (cpu bit , os name)
Linux 주요 Command – 알아야 할 명령어들 4. Linux 주요 Command – 알아야 할 명령어들 touch : 빈파일생성 chmod : 파일의 권한 설정: 숫자 설정방식이 유용함 , -R 옵션은 하위 포함 U(user) , G(group) , O(other) rwx : read(4) , write(2) , excute(1) 예제) 파일 소유자는 읽기와 실행권한 , 그룹에는 쓰기권한 , Other 에는 권한 없음 $> chmod 520 <testfile> chown : 파일의 소유권 설정 모든 파일에는 소유자와 그룹값이있음 , -R 옵션은 하위 포함 예제 실행 쉘이 root권한일때 test.sql 파일의 소유자를 root로 변경 $> chown root:irteam test.sql pwd (print working directroy) : 현재 디렉터리 출력 whereis , which 명령어의 위치를 찾아줌 w, who : 현재 서버에 접속된 사용자 정보 접속시간 , soruce ip , idle 타임… uptime 서버의 부팅후 수행시간 cpu Load 정보
Linux 주요 Command – 알아야 할 명령어들 4. Linux 주요 Command – 알아야 할 명령어들 top (windows의 작업관리자) 현재 서버의 사용하는 프로세스 정보 cpu 정보 출력 h입력하면 추가 옵션 정보 설정가능 -> s : change delay 타입 : 1 sar : 시스템의 사용량 30초 단위로 출력 (/var/log/sa/로그파일기록으로 1~2주 누적되었있음) sar –r : 메모리 정보 출력
Linux 주요 Command – 알아야 할 명령어들 4. Linux 주요 Command – 알아야 할 명령어들 ps : 현재 서버의 프로세스 정보 보여주기 수많은 옵션중에 주로 ps –ef 사용 많이 나오기 때문에 주로 grep 과 함께 사용 (5장 Pipe에서 추가) grep 스트링 포함된 파일 찾기 grep “find_string” <file> -r 하위 디렉토리 포함 (기본 unxi 계엘에는 없는 옵션임) -v 포한되지 않은 파일 찾기(가끔 유용할때가 있음) 예제 ) test.file 에서 “연습하기” 가 들어갔는지 확인 $>grep “연습하기” test.file find : 파일 찾기 find <path> <option> 옵션에 따라 파일명 속성 사용자를 찾을수있음 에제 ) /home1/irteam/var 디렉토리에서 파일명이 test로 시작하는 파일 출력 $> find /home1/irteam/var -name “test.*” locale : 서버내 사용할수있는 char-set 보기 환경변수 $LANG , $LC_ALL 설정시 주로 사용(리눅스 배포판 또는 unix마다 다르기 때문에 확인필요)
Linux 주요 Command – 알아야 할 명령어들 4. Linux 주요 Command – 알아야 할 명령어들 df (disk free) 디스크 사용량 출력 -k kilo 단위로 free : 메모리량 (unix 계열에서는 없는 명령어 또는 다른형태로 값을출력) tail 파일의 끝내용을 출력 <-> head (앞부분) -f 계속적으로 파일에 write 되는 내용을 모니터링 -n default 출력 라인수를 늘리고 싶을때 exit , logout , ctrl + d : 로그아웃 date : 날짜 출력 alias : 현재 서버 alias 설정 정보 출력
Linux 주요 Command – 알아야 할 명령어들 4. Linux 주요 Command – 알아야 할 명령어들 du (disk usage) 디스크 사용량 보기 옵션 -k 주면 kilo 단위로 출력 , --max-depth : 파일제외하고 디렉터리 레벨단위 출력?? 옵션 –h 주면 M , G 단위로 표시 (unix 계열에서는 없는 옵션) whoami , id : 현재 쉘 상태의 계정보기
Linux 주요 Command – 알아야 할 명령어들 4. Linux 주요 Command – 알아야 할 명령어들 wc (word count) 파일안의 라인수 또는 단어수를 출력 가능 옵션 -l line 수 , -c 문자의 수 예제 ) 현재 서버 원격 접속자수 $>who | wc –l gzip (gnu zip) 파일 압축 (확장자 gz) -d 압축 풀기 /sbin/ifconfig –a : ethernet 정보
Linux 주요 Command – 알아야 할 명령어들 4. Linux 주요 Command – 알아야 할 명령어들 tar : 파일, 디렉토리 묶기 tar <option> <create_tar_file> <file|directory> 주요 옵션 : cvf 파일명을 지정하여 묶기 xvf 묶은 파일 풀기 gzip 압축 포함 : z 옵션 ( unix 계열에서는 안됨) kill : 프로세스에 unix signal 주입 일반적으로 9번 강제 종료시 사용 ps 명령어로 process id를 찾은후 kill -9 <process id>
Linux 주요 Command – 알아야 할 명령어들 4. Linux 주요 Command – 알아야 할 명령어들 netstat 서버의 네트웍 정보 출력 주로 데몬의 포트 Listen 확인 가능 예제 서버내 Listen 하고있는 포트 $>netstat -an |grep LISTEN rsync : 서버간 파일 동기화 rsync <option> <sorurce> <targer> 서버간 파일전송 용도 가능(/etc/rsync.conf 설정에따라 암호 설정없이 가능) 예제) 현재 서버의 aaa파일 new1001 서버의 /home/new/111 디렉토리에 복사 $>rsync aaa new1001:/home/new/111 ln (link) 하드 링크 배우고 사용해본적 없음~~~ 소프트 링크 –s 옵션 주로 사용 (windows의 바로가기정도) 예제) /home/fs/lnDir 디렉토리를 cd /InDir 접속해도 ) /home/fs/lnDir 를 바라보도록 링크 파일 생성 root 권한 필요 $> ln –s /home/fs/lnDir /InDir
5. Redirect & Pipe Redirect : 연산자 ‘>’ ‘>>’ ‘<‘ 이용 출력 방향 바꾸기 쉘상에서 실행파일을 실행하면 file descriptor 1번 (stdout 모니터)로 출력이된다. 예약된 file descriptor : 0번 표준입력 : 키보드 (stdin) 1번 표준 출력 : 모니터 (stdout) 2번 표준 에러 출력 : 모니터(stderr) 예제1) 현재 서버에 원격 접속된 사용자를 file로 저장 (출력 file descriptor를 모니터에서 current_user.file 로 변경) $> w > current_user.file 예제2) 파일을 file1 의 내용을 file2의 끝에부터 이어 붙이기 $> cat file1 >> file2 예제3) 명령어 수행중에 발생하는 stderr(2) 내용을 stdout(1)에 쓰기 $> ls ss.txt 2>&1 (c shell 은 다름)
5. Redirect & Pipe Pipe : 연산자 ‘|’ 이용 앞서 실행된 프로세스의 stdout이 후에 수행되는 프로세스의 stdin으로 입력 예제1) 현재 서버의 수행중인 아파치의 process 찾기 $> ps –ef |grep httpd 예제2) access.log에서 문자열이 “2010-10-29” 들어간 라인수 $> grep “2010-10-29” access.log | wc –l
6. Vi(Visual) Editor Vi 에디터 마우스 없이도 유연하게 파일 편집가능 키보드 전체가 명령어(실제로 몇 개만 알아도 사용가능) 대소문자에 따라 명령어 수행이 다름 익숙해지면 일반 윈도우의 에디터보다 편하다고 함? vi history 유닉스가 나오고 에디터로 1976년 BY 빌조이 기타 에디터로는 ed , pico , emacs vim ?(Vi Improved) 리눅스에서는 전부 vi -> vim 으로 alias 되어있음 일반적으로 유닉스에는 vim이 설치 안되어 있어 전통방식 vi 사용
6. Vi : Visual Editor Vi Mode Vi는 3가지 모드를 가지고 명령모드를 중간으로 이동 Command i,u,o ...등 : , ? , / Esc Esc Insert Mode Line Mode
6. Vi(Visual) Editor 명령어 설명 yy(yank) 복사 dd 삭제 p 붙이기 dw 워드 단위 삭제 Command 입력모드 주요 명령어 명령어 설명 yy(yank) 복사 dd 삭제 p 붙이기 dw 워드 단위 삭제 라인의 맨 앞 $ 라인의 끝 w 워드 단위 앞으로 이동 b 워드 단위 뒤로 이동 x shift + g 마지막 라인 ctrl + f 한화면 앞으로 ctrl + b 한화면 뒤로 h,j,k,l 좌,하,상,우 방향키 u undo
6. Vi(Visual) Editor :4 4라인으로 이동 : set number 에디터에 라인번호 출력 :q 편집 종료 Line 라인 모드 주요 명령어 명령어 설명 :4 4라인으로 이동 : set number 에디터에 라인번호 출력 :q 편집 종료 :wq vs :wq! 저장 후 종료 (같은 명령어 :x) 1,2 co 5 1,2라인을 5라인에 복사 5d 현재 라인에서 아래로 5줄 삭제 :s ex):1,$s/abc/cba/g 문자열 치환 / vs ? -> n , N (다음 번 찾기) 문자열 찾기