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 |