영원한사랑

unix 디렉토리 명령, 일반적인 UNIX사용법

<<< /proc 디렉토리에서 알아내기 >>>
 
/proc/asound : 이 디렉토리는 시스템내에 설치되어진 사운드카드에 대한 정보를 볼수 있습니다.
 
/proc/cpuinfo : 프로세서의 정보가 들어있습니다. cpu의 타입, 모델, 제조회사, 성능 등에 관한 정보를 알려줍니다.
 
/proc/devices : 현재 커널에 설정되어 있는 장치의 목록을 볼 수 있습니다.
 
/proc/dma : 현재 어느 DMA 채널이 사용 중인지를 알려줍니다.
 
/proc/filesystems : 어떤 파일시스템이 커널에 설정되어 있는지를 알 수 있습니다.
 
/proc/ide : 이 디렉토리는 IDE-인테페이스와 이것과 연결된 IDE-device들에 대한 정보를 표시합니다.
 
/proc/interrupts : 현재 어느 인터럽트가 사용 중인지, 그리고 얼마나 많이 사용되었는지를 알 수 있습니다.
 
/proc/ioports : 현재 어느 I/O 포트가 사용 중인지를 알려줍니다.
 
/proc/loadavg : 시스템의 평균부하량(load average)을 보여줍니다.
 
/proc/meminfo : 메모리 사용량에 관한 정보를 보여줍니다. 실제 메모리와 가상 메모리를 모두 다룹니다.
 
/proc/modules : 현재 어떤 커널 모듈이 사용되고 있는지를 알려줍니다.
 
/proc/partitions : 이 페이지는 분할영역에 대한 정보를 표시합니다.
 
/proc/pci : 이 페이지는 PCI-버스와 설치되어진 PCI-카드들, 그리고 주변장치연결 (PCI) 버스를 사용하는 다른 device들에 대한 정보를 표시합니다.
 
/proc/scsi/scsi : 이 페이지는 SCSI-인테페이스와 이것과 연결된 SCSI-device들에 대한 정보를 표시합니다.
 
/proc/stat : 이 곳에는 시스템의 상태에 관한 다양한 정보가 있습니다. 즉, 부팅된 후 page fault가 몇번 일어났는가 하는 것들을 알아 볼 수가 있습니다.
 
/proc/uptime : 시스템이 얼마나 오랫동안 살아 있었는지 보여줍니다.
 
/proc/version : 커널의 버전을 알려줍니다.
 
<<< 운영체제 정보 >>>
 
uname -a : 운영체제의 호스트이름, 커널 버전과 릴리즈된 날찌와 프로세서(CPU)의 타입을 표시합니다.
uptime : 부팅한 이후로 시스템의 사용된 시간과 로그인한 유저의 수, 시스템의 Load Average(시스템 부하량의 평균치) 등의 정보를 표시합니다.
w : 현재 시스템에 로그인 한 유저들의 리스트와 작업, 접속시간 등을 표시합니다.
tail /var/log/messages : 시스템의 로그 기록을 10라인 단위로 보여줍니다. '-n'옵션을 사용하여 출력할 라인 단위를 지정할 수 있습니다. 'tail -n100 <파일이름>' 과 같이하면 100라인 단위로 출력합니다.
lsmod : 현재 로드된 모든 모듈들을 표시합니다.
cat /proc/filesystems : 현재 시스템에서 사용중인 파일시스템을 표시합니다.
date : 시스템의 날짜와 시간을 표시합니다. 또한 날짜와 시간을 설정할 수 있습니다. ('date --help' 을 하면 이용할 수 있는 옵션을 알 수 있습니다.)
runlevel : 시스템의 현재 런레벨을 표시합니다.
rpm -q <패키지> : 설치된 패키지의 버전을 보여줍니다.
 
<<< 실행중인 프로세스와 메모리 정보 >>>
 
ps aux | less : 유저로부터 시작된 것을 포함한 현재 실행되고 있는 모든 프로세스를 표시합니다. 'q' 를 누르면 종료합니다.
free : 메모리의 상태를 표시합니다.
top : 5초마다 한번씩 실시간으로 갱신하여 시스템의 프로세스 상황을 표시합니다. CPU 사용량, 메모리와 스왑의 사용량, 현재 실행중인 각각의 프로세스의 수와 상황등의 시스템 상황을 실시간으로 표시합니다. 'q'를 누르면 종료합니다.  
cat /proc/meminfo : 메모리 상태를 표시합니다. 'free' 와 같습니다.
 
<<< 디스크 장치 정보 >>>
 
mount : 마운트된 모든 장치와 마운트된 장치들의 마운트 포인트, 파일시스템, 그리고 장치가 읽기 전용인지 아닌지 보여줍니다.
df : 마운트된 장치와 사용된 공간과 사용할 수 있는 공간과 마운트 포인트를 표시합니다. '-h' 옵션을 사용하면 200Kb,102Mb,1Gb 와 같이 알아보기 쉽게 표시합니다.
du -sh * : 디스크 사용량을 표시합니다. 현재 작업중인 디렉토리에 있는 파일과 디렉토리들의 크기를 알아 보기 쉬운 형식으로 표시합니다. 'du --help' 를 하면 더 많은 옵션을 알 수 있습니다.  
cat /proc/filesystems : 현재 시스템에서 사용중인 파일시스템을 표시합니다.
cat /proc/ide/ide0/hda/model : 하드디스크의 모델명을 표시해 줍니다.  
cat /proc/swaps : 스왑 파티션의 크기와 사용량을 보여줍니다.
 
<<< 하드웨어 정보 >>>
 
cat /proc/interrupts : 장치가 사용중인 IRQ를 표시합니다.
cat /proc/ioports : 장치가 사용중인 Input/Output 포트를 표시합니다.
cat /proc/dma : 장치가 사용중인 DMA 채널을 표시합니다.
cat /proc/cpuinfo : 프로세서(CPU)에 대한 정보를 표시합니다.
cat /proc/modules : 로드된 모든 모듈들을 표시합니다. 'lsmod' 와 같습니다.
dmesg : 시스템의 부팅시 나오는 메시지를 부팅후 확인 할때 쓰는 명령어입니다. 쉽게 알아 볼수 없는 말들이 대부분이긴 하지만 이 메시지들을 통해 시스템에 문제가 생길 경우, 문제를 해결할 수 있는 정보를 얻을 수 있습니다. 레드헷 기반의 리눅스 배포판에서는 /var/log/dmesg 파일로 부팅시 마다 저장됩니다.
 
<<< 유저와 유저의 환경에 대한 정보 >>>
 
w : 현재 시스템에 로그인 한 유저들의 리스트와 접속시간, 작업 등을 표시합니다.
who -uH : 현재 로그인된 유저를 표시합니다. 유저가 접속한 터미널, 접속한 시간과 쉬고 있는 시간을 표시합니다.  
whoami : 유저의 아이디를 표시합니다.  
groups : 그룹에 속한 모든 멤버를 표시합니다. 또한 'groups 유저이름' 으로 다른 유저가 속한 그룹의 멤버들을 볼 수 있습니다.
set | less : 환경 설정값을 표시합니다.
id : 유저의 이름, 그룹과 그룹에 속한 유저의 수와 ID를 표시합니다.
pwd : 현재 작업중인 디렉토리를 표시합니다.
last : 누가 언제 로그인했고 어디에서 IP주소를 통한 원격 로그인을 했는지, 얼마나 오랬동안 사용했는지 표시합니다.  
users : Displays a list of currently logged in users. User's logged in to multiple terminals will be listed once for each session.
history : 유저가 이전에 실행한 명령의 리스트를 순서대로 표시합니다. '.bash_history'에 저장되어 있습니다.  
 
<<< 네트워크 정보 >>>
 
ifconfig : 네트워크 인터페이스를 설정내용을 표시하는 명령어입니다. 이것으로 직접 네트워크을 설정을 설정할 수 있습니다. IP 주소, 서브넷 마스크 및 브로드캐스트 주소를 확인 할 수 있습니다.
hostname : 시스템의 호스트이름을 표시합니다.  
route : 해당 호스트까지 연결하는 중간 경로의 표시인 라우팅 테이블을 표시하고 라우팅 정보를 추가.삭제 할 수 있습니다.  
ping : 원결의 호스트와 서로 네트워크의 연결이 정상적으로 이루어졌는지를 확인하는 명령어입니다. 연결 속도등을 테스트 할 수 있습니다.
nslookup : 네임서버에 질의하는 네임 서버 질의 도구입니다. 이를 통해 특정호스트의 IP주소나 자신의 호스트 정보를 알아볼수 있습니다.
netstat : 네트워크 연결 상태를 확인하는 명령어 입니다. 네트워크에 대한 다양한 정보를 제공합니다. 이를 이용하여 네트워크 인터페이스, 네트워크 소켓, 라이팅 테이블과 관련된 자세한 설명을 볼 수 있습니다.

 

일반적인 UNIX사용법

 
[기본 명령어 들]

○passwd(change login password)
  말 그대로 패스워드를 바꾸는 명령이다.
  패스워드는 연상하기 쉽되 자신만의 방법을 만드는 것이 좋다.
  예를 들 면 자판을 영문으로 하고서 '독수리오형제' 라고 치는 것처럼 말이다.
  어떤 시스템은 패스워드에 영문자와 숫자가 꼭 함께 존재해야 한다고 한다.


○exit
  모든 것을 마치고 끝낼 때, 다시 말해 logout 할 때 쓴다.
 
○whoami
  현재의 user name을 나타내 준다.
 
○who
 user name과 접속 방법 그리고 login한 시간을 알려준다.
 
○id
 user ID 와 사용자가 속한 group ID를 알려준다.
 
○users
  login한 user들을 알려준다.
 
○w (who is logged in, and what are they doing)
 현재 누가 login했고 무엇을 하고 있는가를 알려준다.
 
○cal(display a calendar)
 달력을 보여준다.
ex)cal [month] [year]
 % cal 12 1999 => 1999년 12월의 달력을 보여준다.
 
○env(obtain or alter environment variables for command execution)
 자신의 설정되있는 환경변수들을 보여준다.
 
○pwd(return working directory name)
  현재 자신이 있는 디렉토리를 보여준다.
 
○cd(change working directory)
  디렉토리를 바꾸는 명령이다.
ex)
% cd => user의 HOME 디렉토리로 간다.
% cd .. => 현재 디렉토리의 상위 디렉토리로 간다.
% cd [디렉토리 경로] => 정해진 디렉토리로 간다.
pwd 로 바뀐 경로(path)를 확인해 보세요.


○ls(list contents of directory)
  현재의 디렉토리의 내용을 보여준다.(DOS의 dir 명령과 같다.)

(-option)
  -a : 숨겨진 file('.'으로 시작하는 file)까지 보여준다.
  -l : file에 대한 자세한 내용을 보여준다.
  -R : 하위 디렉토리의 내용까지 보여준다.(root 디렉토리에서는 쓰지 마세요.)
  -s : file의 대략적인 크기를 보여준다.
  -t : 최근의 사용순서대로 정렬하여 보여준다. (최근에 사용한 file을 찾을 때)
  * option은 중복하여 사용할 수 있다.
 
ex)ls [-option][filename]
% ls -alr => 숨겨진 file까지 하위 디렉토리의 내용까지 자세하게 보여준다.
  -rw-r--r-- 1 comsin student 3059 8월 12일 12:24 pr
--허가상태--링크수-소유자---group----크기--생성된 날짜,시간-


○touch(change file access and modification times)
  file의 최종 수정시간을 변경시켜준다. 
ex)touch [filename] ->만약 filename에 해당되는 file이 없으면 그 file을 생성한다.


○du(disk usage)
  현 디렉토리의 하위디렉토리들이 사용하고 있는 디스크 용량을 보여준다.
  (option)
   -s : 사용 총량만을 알려준다.
   -a : 모든 file의 사용량을 알려준다.

○df(disk free)
  디스크의 총량과 사용량 남은량등을 알려준다.
  유용한 option으로는 '-k'가 있다.(killo byte 단위로 보여준다.)
 
○chown(change file ownership)
  file의 소유권을 다른 사람에게 넘겨주는 명령이다.
ex)chown [소유자] [file name]


○chgrp(change file group ownership)
  file의 소유권을 다른 그룹으로 넘기는 명령이다.
ex) chgrp [group] [filename or directory]


○cp (copy files)
  file을 카피하는 명령입니다.
 
ex)cp [복사할 file name] [복사될 경로]
   % cp test.file /usr/...../temp
     ==> 이렇게 하면 정해준 경로로 file이 복사 됩니다.
   % cp test.file test.old
     ==> 이 명령은 test.old라는 복사본을 만들어주는 명령입니다.
# cp 명령은 Meta Character( '*', '?'등의)라는 문자로 여러 file을 한꺼번에 복사 할 수 도 있습니다.
   % cp test* ../
     ==> 이 명령은 test로 시작하는 모든 file을 상위 디렉토리로 복사하는 명령입니다.

○mv(move files)
  file을 복사하는 것이 아니고 file을 옮기는 명령입니다.
  사용법은 cp 와 같습니다. 차이점은 복사하는 것과 옮기는 것이겠지요.
  이 명령도 역시 Meta character를 쓸 수 있습니다.
  mv 명령으로 file명을 바꾸자면
  % mv test.file test.test ==> 자 ls 명령으로 확인해 보세요.
 
○rm(remove)
  file을 지우는 명령입니다.
ex)% rm test* ==> test로 시작하는 모든 명령이 지워지겠지요.
    rm -r option은 하위디렉토리까지 지우는 매우 강력하고도 위험한 명령입니다.
   
○mkdir ( make directory)
  새로운 디렉토리를 만드는 명령입니다.


○rmdir (remove directory)
  directory를 삭제하는 명령입니다.
  rmdir은 빈 디렉토리만을 지울수 있습니다.
 
○chsh(change shell)
  자신의 shell을 바꾸는 명령입니다. 이 명령이 없는 경우도 있습니다.(저자의 시스 템)
  이럴때는 그냥 'sh'라고 치면 bourn shell로 'ksh'라고 치면 korn shell로 바꾸어 줍니다.
  다시 C shell로 바꾸고 싶으면 'csh'이라고 치세요.
 
○file(determine file type)
  file의 종류가 무엇인지를 알려줍니다.
ex)file [file name]


○head( display first few lines of files)
  file의 처음 몇 개의 행을 보여주는 명령입니다.
ex)head [-n] [file name] ==> 'n'개의 line을 보여줍니다.


○tail(deliver the last part of a file)
  file의 끝부터 몇 개의 행을 보여주는 명령입니다.
ex)tail [-n] [file name]


○cat(concatenate and display files)
  file의 내용을 보여줍니다. 물론 file이 text file이어야 합니다.
  그리 크지 않은 text file을 볼 때 쓰여집니다.
  왜냐면 스크롤되어서 넘어가면 못보 게 되니까요.
ex) % cat test.file
   -option에는 -s와 -n이 많이 쓰입니다.
   % cat -s test.file ==> 공백라인을 삭제하고 보여줍니다.
   % cat -n test.file ==> 화면에 line number을 붙여주지요.


○more(browse or page through a text file)
  보통 file의 내용을 볼 때 가장 많이 쓰는 명령입니다.
  특징이 file의 내용을 한 화면씩 단계적으로 보여주기 때문 이지요.
  'space bar'를 누르면 다음 화면이 스크 롤 됩니다.
ex) more [option] [file name]
(option)
  -s : 공백 line을 제거하고 보여줍니다.
  +n : 'n'line부터 보여줍니다.
  +/문자열 : 그 문자열이 있는 곳부터 보여줍니다.
 
 more 명령으로 file의 내용을 보다가 'q'를 누르시면 명령이 종료됩니다.
 또 'v'를 누르시면 현재 line에서 VI 편 집기를 시작하게 됩니다.
 '='를 누르면 현재의 라인번호를 알려줍니다.
 또 실행중 ctrl-B를 누르시면 한 화면 전으로 돌아갈 수 있습니다.


○pg(files perusal filter for CRTs)
  more와 같이 많이 쓰이는 명령으로 특징은 파일을 보다가 이전 화면을 볼 수가 있다는 것입니다.
  pg 명령은 Enter 키를 누르면 다음 화면을 보여 줍니다.
ex)pg [option] [file name]

 (option)
  -s : 공백 line을 제거하고 보여줍니다.
  +n : 'n'line부터 보여줍니다.
  +/문자열 : 그 문자열이 있는 곳부터 보여줍니다.
  역시 pg명령으로 file의 내용을 보다가 'q'를 누르면 실행을 종료합니다.
 
****'3l(소문자 L)'을 입력하면 'n'번 라인의 내용을 볼 수 있습니다.****
     그리고 '+nl'은 현재부터 n행이후의 내용을 보여주고 '-nl'은 n행 이전의 내용을 보여줍니다.
     또 pg 명령은 화면을 보면서 '/문자열'을 입력하면 현라인 이후의 내용에서 문자열을 검색할 수 있 고 '?문자열'을 입력하면 이전 부분 에서 그 문자열(패턴)을 검색합니다. 그냥 '/'를 입력하시면 다음 에 매치되는 패턴을 찾아 줍니다.
     '.'는 현재화면을 재 출력해 주고 'v'는 VI 편집기를 실행시켜 줍니다.


○화일 방향 변경(redirection) & Pipes
  Unix는 수 많은 명령들을 가지고 있다. 또한 이 명령들을 함께 사용하여 다양한 일을 할 수 있도록 redirection과 pipe라는 개념을 가지고 있다. 이들은 필터 프로그램과 결 합하여 매우 강력한 힘을 발휘하게 된다.
ex)
  1)출력 방향 변경 ( ' > ' )
    % touch test ==> 빈 file test를 생성.
    % cat test ==> 물론 아무것도 나타나지 않는다.
    % ls -al > test ==> 화면에는 변화가 없다.
    % cat test p ==> 무엇이 나타나나요?
   
  2)출력 방향 변경 추가 ( ' >> " )
    % ls -a >> test ==> 역시 화면에는 아무일 없지요.
    % cat test ==> test file에 내용이 추가 되었지요?
    % rm test* ==> test로 시작하는 모든 file을 지우고
   
    자 cat 명령으로 file을 edit 하는 법을 가르쳐 드리지요.
    % cat > test ==> 그러면 프롬프트가 없어지고 커서가 깜박이지요?
   
    다음 문자열을 입력하세요.
    This is test. ==> Enter 치시고
    ctrl-D ==> 다시 프롬프트가 나오지요. '%' 이렇게요.
    % cat test ==> 어떤가요? 입력한대로 file이 만들어졌지요.
    자 이번에는 test file에 내용을 추가해 보지요.
    % cat >> test ==> 다시 프롬프트가 없어지고 커서가 깜박이지요.
    This is insert. ==> 다시 Enter 치시고요.
    ctrl-D ==> 다시 프롬프트가 나오지요.
    % cat test ==> 내용이 추가 됬네요..
   
  3)입력 방향 변경 ( ' < ' )
 
○wc (display a count of lines, words and characters in a file)
  file 안의 line 수와 단어 수 그리고 문자의 수를 세는 명령입니다.
(option)
  -l : line의 수
  -w : 단어의 수
  -c : 문자의 수

다음의 세가지는 동일한 명령입니다.
  % wc test
  % wc < test
  % cat test | wc
    ==> 모두 라인, 단어, 문자의 수가 출력됩니다.

4) Pipe : 파이프
   Pipe는 명령의 출력을 다른 명령으로 연결하는데에 쓰입니다.
  % who > wc -l ==> 어떤 결과가 나왔을까요?
  % ls -al ==> wc 라는 file이 생성되었지요.
  % who | wc -l ==> 화면에 글자가 찍히네요.


○uniq(report or filter out repeated lines in a file)
  중복된 line들을 제거하고 출력해 줍니다. 중복된 공백 라인도 제거하겠지요.
(option)
  -d :반복되는 라인만 출력
  -c : 중복된 횟수를 나타낸다.
  -u : 반복되지 않는 라인만 출력
 
  % cat >> test ==> 뭔지 아시죠..?
    Enter
    Enter ==> Enter를 세 번 치라는 말입니다.
    Enter
    ctrl-D
  % cat test ==> 공백 라인이 생겼네요.
  % cat test test test > newtest ==> 실행 되겠지요.?
  % cat newtest ==> 됬습니다.
  % uniq newtest ==> 중복된 두 개의 라인이 제거되고 나타나네요.


○Meta Characters and Wild Card
  Meta Character란 다른 문자와는 다르게 독립적으로 다른 의미를 가지고 사용되 는 문자를 뜻한다.
 
  (대표적 메타 케렉터)
  * ? [] : Wild card character
  > >> < | : Redirection Character
  & : Background job character
  $ : Shell 변수의 값을 이용할 때
 
  % ls t* ==> 't'로 시작되는 모든 문자와 대체된다.
  % ls t? ==> 't'로 시작하는 두문자와 대체된다.( ? 가 하나의 문자)
    [a-r] ==> a에서 r까지의 문자와 대체된다.
  % game & ==> game을 백그라운드에서 실행한다.
  % echo $path ==> 환경변수 path의 값을 보여준다


[추가 명령어들]


○man(find and display reference manual pages)
  각 명령어에 대한 online 도움말을 제공한다.
ex) man [명령어]
   이 명령은 자동으로 'more'를 수행한다.


○sort(sort, merge, or sequence check text files)
  정보를 지정한 형식으로 정렬해 주는 명령이다.
ex) sort [file name]
 (option)
  -d : 사전식 정렬
  -f : 대문자를 소문자로 간주
  -n : 수자로 정렬
  -r : 역순 정렬
  +m : m번째 필드로 정렬한다.
 
  % sort test
  % cat test ==> 두 명령의 출력이 다르지요.
 
  또 방향변경(redirection)을 이용할 수 있다.
  % ls -al | sort -f ==> 알파벳 순으로 정렬이 되지요.
  % ls -s | sort -n ==> 크기 순으로 정렬이 되지요.. 이런걸 이용해서 다음을
  % ls -s | sort -n > list ==> list 란 file이 생기지요.
 
○spell(find spelling errors)
  철자 검사를 해주는 명령이다.
ex) spell [file name]
   이 명령은 시스템이 철자 검사를 하기위한 데이터 파일을 필요로 하기 때문에 작은 시스템에서는 이 프로그램을 설치하지 않는다.
   여러분중 그러신 분이 있다면 이 명령은 알고만 계세요.


○nl(line numbering filter)
  라인 번호를 붙여주는 명령이다. cat -n 명령과 같지요. nl의 분신이 cat -n입니 다.
ex) nl [file name]
    % nl test
    % cat -n test ==> 두 명령이 같지요..?
    % ls -al | nl ==> 확인해 보세요..
    이렇게 필터와 Redirection을 쓰면서 어떻게 활용할지 생각해 보세요.
   
(option)
  -ba : 공백라인에도 번호를 붙여준다.
  -bp문자 : 문자가 있는 라인만 번호를 붙인다.
  -s문자 : 번호와 라인을 지정한 문자로 분리해 준다.
 
  % ls -al > test
  % echo "" >> test
  % echo "" >> test ==> 어떻게 됬는지 test를 확인해보세요.
  % ls -al >> test ==> 다시 확인.
  % nl test
  % nl -ba test ==> 두 명령을 비교하세요. 다음은
  % nl -bptest test ==> 확인.
  % nl -bptest -s번째 ==> 확인.


○banner(make posters)
  입력한 문자를 banner style로 찍어준다. 한번 해보세요.
ex) banner [text]
% banner Good-morning!


○bc(arbitrary precision arithmetic language)
  간단한 계산기입니다.
ex)%bc
    1+2+3+4+5+6+7+8+9 ==> 하고 Enter
    45 ==> 답이 나옵니다. 종료는 ctrl-D입니다.
   
[Compress(압축)명령]
○tar(create tape archives, and add or extract files)
  파일들을 묶어주는 명령들이다.(압축하지는 않습니다.)
ex) tar cvf [만들 filename.tar] * ==> 묶을 때 보통 tar이라는 확장자를 씁니 다.
    그러면 filename.tar이라는 파일이 생성 됩니다.
    tar xvf [풀 filename] ==> 묶였던 파일들이 다시 풀립니다.


○compress, uncompress
  파일을 압축하는 명령입니다. compress는 압축 uncompress는 풀어주는 명령입 니다.
ex) compress [filename] ==> filename.Z 가 생성됩니다.
    % compress temp.tar ==> temp.tar.Z 가 생성됩니다.
-v 는 압축률을 보여줍니다.
   % compress -v temp.tar
  
# compress는 tar처럼 새로운 파일을 만드는 것이 아니고 원본파일을 압축하기만 합니다.
% uncompress [압축한 filename] ==> 원래의 파일이 됩니다.


○gzip, gunzip
  역시 파일을 압축하고 푸는 명령입니다. 보통 compress보다 성능이 좋습니다.
  역시 -v option이 있습니다.
ex) gzip [fileanme] ==> filename.gz 가 생성
   % gzip -v temp.tar ==> temp.tar.gz 가 생성됨
  
○gunzip [filename]
% gunzip temp.tar.gz ==> 원본인 temp.tar가 됨



[정보 검색 명령]
○grep(search a file for a pattern)
  file 내에서 정보를 검색하는 명령이다.
 
  (option)
  grep의 옵션을 모두 적으려면 한권의 책이 되므로 여기서는 자주쓰는 것만 적겠습니다.
  -c : 일치되는 라인의 수만을 출력
  -i : 패턴에서 대소문자 구별 무시
  -l : 패턴에 일치하는 파일의 파일명만 출력
  -n : 라인 번호 포함
 
ex) grep [플래그] [패턴] [file name]
  % cat test ==> test의 내용이 다음과 같을 때
  총 6
  drwxr-xr-x 2 comsin student 512 8월 15일 18:23 ./
  drwxr-xr-x 11 comsin other 512 8월 12일 15:46 ../
  -rw-r--r-- 1 comsin student 32 8월 15일 18:23 list
  -rw-r--r-- 1 comsin student 0 8월 15일 19:22 test
  총 8
  drwxr-xr-x 2 comsin student 512 8월 15일 18:23 ./
  drwxr-xr-x 11 comsin other 512 8월 12일 15:46 ../
  -rw-r--r-- 1 comsin student 32 8월 15일 18:23 list
  -rw-r--r-- 1 comsin student 256 8월 15일 19:22 test

% grep test test ==> 의 출력은 다음과 같다.
-rw-r--r-- 1 comsin student 0 8월 15일 19:22 test
-rw-r--r-- 1 comsin student 256 8월 15일 19:22 test

--- 이번에는 /etc/passwd file의 저자의 내용을 살펴보겠다.
% grep comsin /etc/passwd
comsin:x:514:500:이승우:/usr1/comsin:/bin/csh

--- 이번에는 저자의 시스템에서 C shell을 쓰는 인원 수를 알아보겠다.
% grep csh /etc/passwd | wc -l
19 ==> 19명이다.


○echo(echo arguments)
  입력된 명령을 반향(반복)한다.
  % echo * ==> ls 와 같다. ' * ' 는 임의의 문자열이란 뜻
  % echo ? ==> ls ? 와 같다 ' ? ' 는 임의의 한 문자란 뜻
  % echo t* ==> t 로 시작하는 모든 문자열
  % echo 'OK?' ==> 문자열을 화면에 반향시킨다. ' ?'를 문자로 인식



○<< ( hear current )
  '<<'는 '>>'와 같은 흐름 재지정 명령(Redirection)이다.
  '<<'는 입력을 모사 (simulate)하는데 쓰인다.
ex)
% cat -n << endtext > myenv ==> text의 마지막에 endtest를 입력
  my Home Directory is $home.
  my Path is $path.
  current directory is $cwd.
  endtext
% cat myenv ==> 어떻게 되었나요?
이렇게 하면 어떻게 될까요? 확인해보세요.
% cat -n << 'endtext' > myenv ==> $로 시작하는 환경변수가 치환되지 않지요.


○sed(stream editor)
  sed는 파이프라인의 정보의 흐름을 편집하는 명령이다.
ex) sed ' s /피대체어/대체어/플레그 '
    대표적인 플레그는 g(global)이다.
    이는 라인의 모든 패턴을 대체한다는 뜻.
    ' g'를 쓰지 않으면 한 라인에서 하나 만을 대체한다.
    또 ' ; '로 여러 sed 명령을 함께 실행할 수 있다.
   
% who ==> 이 화면 출력과 다음의 화면 출력을 비교해 보세요.
% who | sed 's/pts/Device /'
% more /etc/passwd
% more /etc/passwd | sed 's/:/ - /g'



○awk(pattern scanning and processing language)
  단어 중심으로 text를 분석하는 명령입니다.
  Unix에서 가장 강력한 필터중 하나 입니다.
  그리고 awk는 입력되는 정보를 필드로 나누어 받아들입니다.
  필드는 ' $n '으로 구분합니다.
ex) awk '{command}' 가장 일반적 명령은 print입니다.
    awk '{command}' [file name]
    % who | awk '{print $1}' ==> 확인
   
--- print를 이용해서 정보를 편집할 수 있습니다. ---
% who | awk '{print "user " $1 " is on terminal " $2}'

--- awk는 두 개의 플래그가 있습니다.
첫 번째 : -f -- 명령의 세부 사항을 file 로부터 읽는다는 뜻입니다.
두 번째 : -F문자 -- 입력되는 정보의 필드구분자로서 '문자'를 쓴다는 것입니다.
% awk -F: '{print $7}' /etc/passwd | sort | uniq -c
  => -c 옵션은 중복된 보이게 함

--- $0는 라인 전체를 뜻합니다.
--- 여기서 특수 문자열 두가지를 가르쳐 드리지요. "\t"는 tab이고요 "\n"은 개행입니다.
% ls -lF | awk '{print $5 "\t" $9}'

--- awk 프로그램은 language처럼 변수를 사용할 수 있습니다.
% ls -l | awk '{total =total + $5 ; print total "\t" $9}' ==> total
이렇게 쓸 수도 있지요.
% ls -l | awk '{total += $5 ; print total "\t" $9}'

--- awk에는 NF 와 NR이라는 고마운 변수가 있습미다.
NF : Number of Field의 뜻으로 마지막 필드의 수를 알 수 있습니다.
NR : ordinal number of the current record의 뜻으로 행의 수와 같습니다.
% awk -F: '{print $NF}' /etc/passwd | sort | uniq -c

==> 각 Shell의 수를 알수 있다.
% ls -l | awk '{print NR ":" $0}' ==> 확인

--- awk는 세가지의 과정으로 명령을 처리한다. 각 과정은
첫 번째 : line의 정보를 읽어들이기 전 ( BEGIN )
두 번째 : 각 라인을 읽는다. 정보 추출
세 번째 : 모든 정보를 읽은 후 ( END )

--- 다음 예제는 이것을 응용한 것입니다.
% ls -l | awk 'BEGIN {print "---- this program is testing----"} {total += $5 ; print " totalsize of files = " total "\n"} END { print " total file number = " NR-1 }'
==> 확인하세요.



○tee(replicate the standard output)
  정보의 흐름을 복사하는 명령이다.
  곧 정보의 흐름을 둘로 쪼개는 것이다.
  유일한 option -a 는 file에 덮어쓰지 않 고 첨가하라는 명령이다.
% who | tee who.out
  ==> 화면에 who의 출력도 나오며 who.out란 file에 출력의 내용이 저장된다.
    tee는 출력을 저장할 때 유용하다.
   
# 또다른 와일드 카드 "[ ]" : 문자의 영역을 지정한다.

--- 이 미 알고 있는 ' * '와 ' ? '에 추가해 보자.
% ls -l a* b* c* d* ==> a 나 b c d로 시작되는 모든 file을 검색
% ls -l [abcd]* ==> 같다.
% ls -l [a-d]* ==> 같다.
% ls -al [d-f m .]* ==> d에서 f까지와 ' _ ' ' . ' 로 시작하는 모든 file 을 검색



○whereis(locate the binary, source, and manual page file for a command)
  명령어가 시스템 경로상의 어디에 위치하는가를 알려준다.
ex) % whereis mkdir
      mkdir: /usr/bin/mkdir /usr/man/man1/mkdir.1 /usr/man/man2/mkdir.2
==> 저자의 경우



○find(find files)
  찾고자 하는 file의 위치를 찾아준다.
ex) find [path] [-option] [pattern]
(option )
  -atime [n] : file이 n일 전에 touch(접근)되었으면 'true'
  -ctime [n] : file이 n일 전에 생성되었으면 'true'
  -exec [command] : 명령을 실행
  -mtime [n] : file이 n일 전에 수정되었으면 'true'
  -name [pattern] : 패턴에 맞는 file명이면 'true'
  -type [화일종류] : file의 종류가 맞으면 'true'
   type : 'd' 디랙토리 'f' file 'l' link
  -user [name] : file의 사용자가 name이면 'true'
 
% find . -name " *.c " ==> 현디랙토리 밑에 .c 로 끝나는 모든 파일을 찾는다.
% find /usr1 -user "comsin" ==> file의 소유자가 comsin인 모든 파일


[작업 제어 명령 ]
# Process
  Unix에서 실행중인 프로그램을 process라고 한다.
  Unix는 multiprocessing을 지 원하는 OS로 여러개의 process 가 동시에 수행될 수 있고 OS에서는 process scheduling을 지원한다.
  각 process는 process ID(PID)를 가지고 있 고, 각각의 프 로세서는 상태를 가지고 있다.
  Unix의 process는 계층적인 구조를 가지고 있다.
  현재 사용하는 process(프로그램)의 모드는 foreground라고 하고 잠시 중단시키 거나 뒷편으로 넘겨논 상태의 모드 를 background라고 한다.
   windows에서 이창 저창 띄워놓고 옮겨다니는걸 상상하면 됩니다.
  
ex)
   % man fg ==> 라고 입력하고 ctrl-Z를 눌러보세요. 그럼 중단되었다는 메시지가 나옵니다.
    여기서 다음을 입력하세요.
    % jobs ==> 다음과 같은 출력이 나옵니다.
    [1] + 중단됨 (사용자) man fg
    ===> 다음을 입력하세요.
    % fg
    ===> 아까의 man fg의 화면의 나머지가 다시 나옵니다.
여기서 알수 있는 것은 foreground의 process를 ctrl-Z를 누름으로서 언제든 background로 넘길수 있다는 것과,
jobs명령을 이용해서 background의 내용을 알 수 있다는 것,
그리고 fg 명령으로 다시 foreground로 불러올 수 있 다는 것이다.
사용자의 입력을 요하거나 화면에 출력을 해야 하는 process들은 background에 서는 실행이 중지된다.
그러므로 보통 사용자의 입출력이 필요 없는 경우나 잠시 실행을 중지 시킬 때 background로 process를 실행한다.
background에서 중지되어 있는 명령 background에서 실행시키려면 bg 명령을 준 다.
또 프로그램을 background 로 바로 보낼 때는 명령의 끝에 ' &'를 붙여주면 된다.
% find / -name "*text*" > test.bg & ==> text 라는 문자열이 들어간 모든 file 을 찾아 test.bg에 넣는다.


○fg
  background의 process를 foreground로 실행한다.
ex) fg %[작업 ID] : 작업 ID는 jobs를 실행했을 때 제일 앞에 나오는 수


○bg
  background의 중지된 process를 실행시킨다.
ex) bg %[작업 ID]


○jobs
  background의 작업들의 상태를 보여준다.


○ps(report process status)
  process의 상태를 보여주는 명령입니다.
 
  (option)
  -a : 현재의 터미널과 연관된 모든 process를 보여줌
  -A ; 현재 시스템의 모든 process를 보여준다.
  -e : 현재 실행중인 모든 process를 보여준다.
  -l : 자세한 process의 정보를 보여줍니다.
 
○kill( terminate or signal processes)
  process를 강제로 종료시키는 명령입니다.
ex)kill [-signal] [PID] [%JOBID]

  signal로는 -l 과 -9 이 있다. ' -l '은 시그널의 목록을 제공하고 ' -9 '은 무조건 종료시키는 강력한 명령이 다.
  % man ps & ==> man ps를 background에서 실행
  % ps ==> process의 상태 -- 확인. --
  % jobs ==> job 상태 -- 확인. --
  % kill [PID] or [%JOBID] ==> process man을 종료해 보세요.
  % ps
  % jobs ==> 확인해 보세요.

http://blog.naver.com/klo510/110004310229