본문 바로가기

Learning/ └Essential & Admin

리눅스 사용자가 알아두면 좋은 명령어_Unit10

cmp/diff CMD

 

diff OPTIONS

-i 대소문자를 구분하지 않음

-c 파일의 이름,날짜 등 파일의 차이점 상세히 출력

--recursive 두 디렉터리 비교할때

 

 

cmp

file1 과 file2 가 같은지 확인

 

 

diff

file1 과 file2가 다르다면 무엇이 다른지 확인

 

 

 

 

diff -c comfile1 cmpfile3

파일1과 파일2의 내용을 전체 출력하여 다른점을 비교

-c : 시간과 날짜 같이출력

 

 

diff --recursive dir1 dir2

비교 대상 디렉터리의 하위 디렉터리 파일까지 비교

 

 

 

실습

 

 

 

 

 

실습2

디렉터리 마이그레이션 작업

 

 

sort CMD

 

# sort /etc/passwd

 

 

# sort -r /etc/passwd

# sort -k 3 -n filename (3번째 필드 중심으로 숫자열로 나열)

# sort -t : -k 3 -n -r /etc/passwd (3번째 필드를 중심으로 숫자열로 거꾸로 나열)

 

 

실습

# CMD | sort

# CMD | sort -r

# CMD | sort -nr

 

 

ps -ef | head | sort

 

 

df -k

 

 

df -h

 

 

 

 

 

 

 

 

 

 

 

 

du -sk * | sort

 

 

du -sk * | sort -n

 

 

du -sk * | sort -nr | more

 

 

 

 

 

 

file CMD

어떤 파일인지 확인하는 명령어

리눅스 나 유닉스는 파일의 확장자가 의미가 없다(.txt , .exe ...)

 

 

file /etc/passwd

 

file /bin/ls

(32비트로 컴파일러된 파일)

 

file /var/run/dtmp

 

file /etc/rc.d/init.d/sendmail

 

 

file /etc *

 

 

 

 

실습

확장자가 변경되는 예에 대해서

 

cp -p /etc/passwd file1

cp -p file1 file2

cp -p file1 file3

ls -lh

 

 

 

# zip file.zip file1 file2 file3

# ls -lh

 

 

 

# unzip -l file.zip

# rm -f file?

(알집 목록 확인 후 알집이 아닌 file[123] 삭제)

(인터넷) file.zip ---- 다운로드 ----> file (?)

 

# mv file.zip file

(묶여있는파일인지 암호가 되어 있는지 알집인지 뭔지 확장자를 알수 없다)

 

 

# file file

 

# mv file file.zip

# unzip file.zip

# ls -lh

# file 명령어로 어떤 종류의 파일인지 확인후 그에 맞는 대응

 

 

 

-------------------------------------------------------------------------------------------------------------------------------------

cmp/diff CMD

# diff httpd.conf httpd.conf.old

# diff --recursive /was1 /was2

sort CMD

# CMD | sort -k 3

# CMD | sort -k 3 -r

 

# df -k

# du -sk /var /* -s : sum, -k : kbytes */   (var디렉터리 용량 확인)

# cd /var; du -sk * | sort -nr | more        (용량별로 정리)

file CMD

# cd /etc; file *

 

 

 

 

 

 

 

-------------------------------------------------------------------------------------------------------------------------------------

 

사용자가 알아두면 좋은 명령어
 cmp/diff 명령어
 sort 명령어
 file 명령어

 

cmp/diff 명령어
 두 개의 파일이 동일한지 확인할 때 사용

 cmp file1 file2
  서로 다른 점이 있으면 다른 내용을 출력


 diff
  diff file1 file2  // 백업본 확인 용도
  diff --recursive dir1 dir2 // 정상적으로 이전 됐는지 확인하는 용도
      // 시간이 오래걸림


sort 명령어
 명령어 | sort -k 3 // 3번째 필드 문자열 기준 정렬(기본 오름차 순)
 명령어 | sort -k 3 -r // 3번째 필드 문자열 기준 정렬(내림차 순)
 
 df -k   // 용량 표시
 du -sk /var  // -s : sum, -k : kbytes
 cd /var ; du -sk * | sort -nr | more


file 명령어
 운영체제가 다르면 확장자가 다르게 다운로드 되는 경우 발생
 이 문제 해결에 사용

 

예시

# cd /test
# rm -rf /test/*

# cp -p /etc/passwd file1
# cp -p file1 file2
# cp -p file1 file3
# ls -lh

# zip file.zip file1 file2 file3
# ls -lh

# unzip -l file.zip
# rm -f file?  // file로 시작하는 파일들 삭제

인터넷에서 file.zip 다운로드 -> file (?) // 확장자가 다르게 받아지는 경우 발생

# mv file.zip file // 다르게 받아진 경우 가정하기 위해서 변경

# file file  // zip으로 구성되어 있는 파일인 것을 알 수 있음

# mv file file.zip // 다시 원래대로 변경
# unzip file.zip  // 파일압축 해제
# ls -lh   // 정보확인


----------------------------------------------------------------------------------


검색 관련 명령어
 grep 명령어
 find 명령어

 


grep 명령어
 기본 사용법
  grep OPTIONS PATTERN file1


 # grep root /etc/passwd    (# cat /etc/passwd | grep root)

 # CMD | grep WORD  // 가장 광범위하게 사용
  cat /etc/passwd | grep root
  rpm -qa | grep talk
  ps -ef | grep xinetd
  chkconfig --list | grep ssh


옵션

grep -l root /etc/hosts /etc/passwd /etc/group
-l: list files, 여러 파일 중 파일목록 출력

grep -n root /etc/group
-n: number line, 파일에서 root 문자열을 검색하고 라인 번호도 같이 출력

grep -v root /etc/passwd
-v: inverse, 검색 문자열을 제외하고 나머지 출력

grep -i root /etc/passwd
-i: ignore case, 대소문자를 구분하지 않음

grep -w root file1
-w: word, 단어로 검색

grep --color root /etc/passwd

 

 패턴 사용법
 grep OPTIONS PATTERN file1
 

*       # grep 'ro*t' /etc/passwd
.       # grep 'no...y' /etc/passwd  // no로 시작하고 y로 끝나는 것을 출력
^root   # grep '^root' /etc/passwd   // 해당 문자열 제외하고 출력
root$   # grep 'root$' /etc/group  // 라인이 root로 끝나는 것을 출력
[abc]   # grep 'user0[123]' /etc/passwd  // user1 또는 2 또는 3이면 출력

 


파일내의 특정 패턴 여러개 검색하기

 egrep(Extended grep) 명령어
    # cat /var/log/messages | egrep -i '(warn|err|crit|alert|emerg)'

 fgrep(Fixed grep) 명령어
    # fgrep '^root' file1 // ^root 의 패턴 사용을 무시하고 ^root 검색


 응용 사용예시
  alias chklog='cat $1 | egrep -i "(warn|err|crit|alert|emerg)"'
  chklog /var/log/message

 

 # egrep "fedora|user01" /etc/passwd 
 출력결과
 fedora:x:500:500:fedora:/home/fedora:/bin/bash
 user01:x:501:501::/home/user01:/bin/bash


(실무 예) 로그 파일에서 에러 메세지 검색
 # cat /var/log/messages | egrep ?i '(warn|err|crit|alert|emerg)'

 # egrep -v "fedora|user01" /etc/passwd
 (# egrep -v "(fedora|user01)" /etc/passwd)
 출력결과

 root:x:0:0:root:/root:/bin/bash
 bin:x:1:1:bin:/bin:/sbin/nologin
 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 (중략)

 

(실무) 특정한 단어를 제외하고 검색
 # ps -ef | grep xinetd | grep -v grep