본문으로 바로가기

Day-20 소프트 웨어 관리하기

category Linux 2017. 1. 14. 11:31

xargs (eXtended arguments)
- 표준 출력 값을 이용하여 명령을 실행
- 인자를 필터링하여 넘겨주고 명령어를 다시 조합하여 처리
- find와 사용 시 결과물을 다음 명령어에 인자로 전달하는 역할
- 여러 명령어와 함께 사용할 수 있다.

 

-i 인자로 문자열을 전달
-n 표준 입력 수를 지정 (인자)
-t 상세 정보 출력
-p 명령 실행전 사용자에게 확인을 요청

 

1. find를 쓰지 않고 크기가 10K인 파일의 이름만 출력하고 정렬
#ll -h | grep 10k | cut -d " " -f 8 | sort -n

 

2. find를 사용하여 크기가 10K 파일의 이름만 출력하고 정렬
#find . -size 10k | cut -d "/" -f 2 | sort -n

 

3. find 사용하여 크기가 10k 파일만 삭제
#find . -size 10k -exec rm {} \;
#find . -size 10k -delete

 

4. find 사용하지 않고 크기가 20K 파일 삭제
#ll -h | grep 20K | cut -d " " -f 8 | xargs rm

 

5. 현재 경로에서 *.txt로 끝나며 내용안에 linux를 포함한 파일을 출력
#find `pwd` -name "*.txt" | xargs grep -l "linux"

 

6. 현재 경로에서 크기가 가장큰 파일 찾기
#find . -type f | xargs du -s | sort -n | tail -1

 

7. 현재 디렉토리에 있는 파일들의 이름뒤에 .perm 붙이기 (perm_test)
mv 1111 1111.perm
#ls | xargs -t -i mv {} {}.perm
     mv 0000 0000.perm


8. 현재 디렉토리에 있는 파일들의 이름뒤에 .perm 떼기 (perm_test)
#ls | cut -d "." -f 1 | xargs -t -i mv {}.perm {}

 


sed (Stream EDitor)
- 프롬프트에서 편집 명령과 파일명을 입력하면 편집 명령 수행결과가 화면에 출력됨.
- 원본은 수정되지 않음
- 한번에 한 줄씩 처리해서 결과를 화면에 내보냄
- sed 명령을 파일에 담아 스크립트로 만들어 수행 가능
- 정규표현식 이용하여 패턴을 검색하거나 치환할 수 있음 (grep과 유사)
- 주소를 지정해서 편집하고자 하는 영역 지정 가능

 

형식
sed [option] '[command]' [file]
sed [option] -f sed [file1] [file2]
sed [file1] [option] [file2]

 

옵션
-n : 모든 라인을 출력하지 않음 (no print)
-e : 다중 편집 기능 (하나 이상의 편집 명령이 있을 경우 사용)
-f : 파일 지정

 

명령
d : 현재 줄 삭제
p : 출력 명령
s : 문자열 치환
g : 현재 라인을 바퍼 내용으로 대체

 

a : 추가
i : 삽입
c : 변경

 

q : 종료
r : 파일에서 라인을 읽음

 

삭제 (delete)
#sed 'd' test_file                     //파일을 열어 모든줄에 d 명령 실행
                                                  //원본은 수정되지 않음
#sed '1d' test_file                   //1번 라인만 삭제
#sed '1,3d' test_file                //1번~3번 라인 삭제

 

출력 (print)
sed 'p' test_file                       //파일 전체 출력
sed '5p' test_file                     //5번째출력 -> 파일 전체 출력
sed '5,10p' test_file                //5,10번째 출력 -> 파일전체출력

sed -n '5,10p' test_file            //출력되지 않도록 -n 적용 후 필요한 부분만 선택하여 출력

 

 

 

정규식 (Regular Expression)         

 

/정규식/

 

-// : 옵션과 문장을 구별하고, 정규식으로 간주하여 해석

 

sed '/Dark/d' test_file        //Dark를 포함한 라인을 삭제
sed -n '/Dark/p' test_file     //Dark를 포함한 라인을 출력

 

자주 쓰이는 정규식
^ 줄의 처음에 일치
$ 줄의 마지막에 일치
. 모든 단일 문자와 일치
* 하나 혹은 그 이상의 앞에 나오는 문자와 일치

 

sed '/^#/d' test_file     // # 시작(^)하는 라인 삭제
sed '/t$/d' test_file         // t로 끝나는($) 라인 삭제

 

http://regexr.com             // 정규식 학습 사이트

 

치환

 

sed 's/t/T/' test_file        // 라인에 처음 발견된 t만 대문자로 변경

sed 's/t/T/g' test_file       // 현재라인을 버퍼 내용으로 대체
                                           // 라인에 있는 모든 t를 T로 변경
                                           // 즉, 문서 전체의 내용 변경

 

sed '/Computer/,/Flute/s/e/E/g' test_file
sed '16s/t/T/g' test_file

 

다중편집

 

#sed -e '1,3d' -e 's/t/T/g' test_file //1~3라인을 지우고 라인에 있는 모든 t를 T로 변경
#sed -e '/Computer/,/Flute/d' -e 's/e/E/g' test_file

 

- '/' (Slash)는 구분문자이며 기본적 '/' 사용되지만 다른문자로 바꿀 수 있다.

 

#sed 's#t#T#g' test_file
#sed 's@t@T@g' test_file

 

sed s/\/home/\/user_home/g' [파일명]
sed s:/home:/user_home/g' [파일명]

 

sed 's/[a-f]$/&_test/g' test_file
sed 's/[a-f]$/_test/g' test_file
// 모든 라인의 끝이 a부터 f로 끝나는 문자 뒤에 _test로 변경


The Broken Sword_test
The Broken Swor_test

 

& - 앞에서 찾아진 결과를 뜻함

 

추가

 

sed '/20/a #[21] The Perfect Linux' test_file      위아래 같음
sed '/Magic/a #[21] The Perfect Linux' test_file
- 현재 라인 다음에 추가

 

삽입

 

sed '/20/i #[21] The Perfect Linux' test_file
sed '/Magic/i #[21] The Perfect Linux' test_file
- 지정한 라인 위에 추가

 

변경

 

sed '/20/c #[21] The Perfect Linux' test_file
sed '/Magic/c #[21] The Perfect Linux' test_file
- 지정한 라인을 변경

 

sed -i '/20/c #[21] The Perfect Linux' test_file    //원본 교체

 

대부분 리다이렉션으로 파일 저장


AWK 오크 (개발자 이름Aho, Weinberger, Kerighan)
- 패턴 검색과 처리언어
- 쉘 스크립트와 데이터베이스 관리에 필수적인 툴

 

형식
awk '/petten/'
awk '{action}'
awk 'pettern {action}'
- 파일 처리 시 파일명 작성 가능

 

옵션
-F [구분자] - 필드 구분자 지정 // 기본값 공백
액션
-print $변수 : 변수 출력

 

AWK 변수
$0 - 모든 필드 (레코드 값 그대로)
$1 - 첫번째 필드
$2 - 두번째 필드
$NF - 마지막 필드

 

awk '/Black/' test_file    //Black과 일치하는 라인출력 (grep Black)
awk '/Black/{print $1}' test_file //Black과 일치하는 라인의 첫번째 필드만 출력
awk '/Black/{print $1,$2}' test_file
awk '/Black/{print $1,$2,$3}' test_file
awk '/Black/{print $1,$2,$3,$4}' test_file
awk '/Black/{print $NF}' test_file

 

소프트 웨어 관리


1. RPM 패키지 설치
 RPM 패키지의 특징과 구조
 - Redhat Package Manger의 약잘 레드햇에서 만든 패키지 관리 도구
 - 바이너리 파일로 구성되어 컴파일이 필요없다
 - 한번에 설치된 패키지를 일괄적으로 삭제 할 수 있다.
 - 패키지를 삭제하지 않고 바로 업그레이드도 가능하며,  설치 상태 및 정보를 제공한다.

 

단점 - 패키지 의존성에 따라 관련 패키지가 먼저 설치되어 있지 않으면 설치 할 수 없다.

 

audit-2.4.5-3.el6.x86_64.rpm
패키지이름-버전-릴리즈.아키텍쳐.rpm

 

audit : 패키지 이름
2.4.5 : 패키지 버전
3.el6 : 릴리즈 버전(3번째 만들어진 패키지,Enterprise Linux 6의 커널)
x86_64: 아키텍쳐 (x86 인텔 CPU, 64 64bit 운영체제)
rpm   : 확장자

noarch: 모든 CPU에서 설치 가능
src   : 소스파일 패키지, 설치 후에 컴파일 필요함

'Linux' 카테고리의 다른 글

Day-22 Network 관리 1  (0) 2017.01.16
Day-21 VMware Network & 실습 환경 구축  (0) 2017.01.16
Day-19 부팅 프로세스  (0) 2017.01.13
Day-18 파일 시스템 관리 5  (0) 2017.01.12
Day-17 파일 시스템 관리 4  (0) 2017.01.10