Unix, Linux commamd 모음 및 예시(last update 23.08.20)
- find -
-----------------------------
find ./ -name '*.jar'
-> .jar로 끝나는 파일 검색, 현재폴더에서 하위폴더 까지 검색
-----------------------------
(설명)
find : 명령어
./ : 현재 폴더 위치부터
-name : 검색 옵션(이름)
'*jar' : jar 로 끝나는 파일
<실제 사용예제>
-----------------------------
find ./ -name '*.jar' ! -name '*old*'
-> 파일명에 "old" 문구가 들어가는 파일은 제외
-----------------------------
<실제 사용예제>
-----------------------------
find ./ -name '*.jar' ! -name '*old*' -exec rm -rf {} \;
-> 찾은 파일들을 삭제 처리.
-----------------------------
<실제 사용예제>
- tar -
-----------------------------
tar -cvf test.tar dir_test
-> dir_test 폴더를 test.tar 파일명으로 압축
-----------------------------
-----------------------------
tar -xvf test.tar
-> test.tar 파일을 압축 해제
-----------------------------
<실제 사용예제>
-----------------------------
tar cvf - 폴더명 | split -b 2048m - aaa.tar
-> 분할압축
-----------------------------
-----------------------------
tar cvfz - 폴더명 | split -b 2048m - aaa.tar.gz
-> 분할압축, 용량도 압축
-----------------------------
-----------------------------
cat 파일명.tar* | tar xvf -
-> 분할압축 해제
-----------------------------
-----------------------------
cat 파일명.tar.gz* | tar xvfz -
-> 분할압축(용량압축) 해제
-----------------------------
- uniq -
-----------------------------
cat aa.txt | sort | uniq -c
-> 정렬후, 중복되는 대상 카운트
-----------------------------
<실제 사용예제>
- sort -
-----------------------------
cat aa.txt | sort -u
-> 정렬후, 중복제거
-----------------------------
<실제 사용예제>
- cpu -
-----------------------------
lscpu
-> linux cpu 확인
-----------------------------
<실제 사용예제>
-----------------------------
du -sh *
-> : 한단계 서브디렉토리 기준 사용량 보여준다.
-----------------------------
<실제 사용예제>
-----------------------------
df
-> 디스크 용량 확인
-----------------------------
df -k : 킬로바이트 단위로 현재 남은 용량을 확인
df -m : 메가바이트 단위로 남은 용량을 왁인
df -h : 보기 좋게 보여줌
df . : 현재 디렉토리가 포함된 파티션의 남은 용량을 확인
<실제 사용예제>
cpu 사용량
-----------------------------
top -d 0.1 n 10 | grep cpu
-> CPU 사용량
-----------------------------
<실제 사용예제>
awk
-----------------------------
cat awk_sample.txt | awk -F "\\[TEST1\\]|\\[3\\]" '{print $2}'
-> [TEST1] [3] 기준으로 2번째 항복을 구한다 (예 : $1 = null , $2 = [TEST2], $3 = [4])
대괄호 특수문자를 일반 문자로 인식 시키기위해 \\[ 으로 처리
-----------------------------
<실제 사용예제>
nawk : SUN OS에서 awk 사용하기 위한 명령어
-----------------------------
cat awk_sample.txt | nawk -F "\\[TEST1\\]|\\[3\\]" '{print $2}'
-> 위와 동일
-----------------------------
<실제 사용예제>
-----------------------------
less
-> SUNOS 에서 more 이랑 동일하게 사용하기 위한 명령어)
-----------------------------
- perl 치환기능-
-----------------------------
find ./ -type f -name "*.sh" -exec perl -pi -e "s/test111/test222/g" {} \;
-> 현재 폴더부터 하위폴더 까지 *.sh 대상에 대한 내용중 test111 을 test222로 치환
(옵션)
-i 현재 수정중인파일 덮어쓰기
-p 완료후 출력(print)
-e 즉석계산기 가능(1줄짜리) 예: perl -e 'print 1+1 , "\n"'
^M 없애는법 : perl -pi -e "s/\r//g" * (변경은 잘 되나, 실행시 에러 가능성있음, 개별 추가확인필요)
-----------------------------
<실제 사용예제>
- xargs -
-----------------------------
find ./ -type f -name "*.*" | xargs grep -E "AAA|BBB"
-> 모든 하위폴더내 *.* 대상 파일들 내용중 AAA or BBB 문구가 들어간 줄 찾기
-----------------------------
<실제 사용예제>
- find, exec, shell script -
-----------------------------
find ./ -name '*.*' -exec sh -c 'echo $0 `grep "AAA" $0 | wc -l`' {} \;
-> AAA 가 문구가 들어간 각 파일의 이름과 각 파일별 cnt 계산
-----------------------------
<실제 사용예제>
- find, exec, shell script, awk -
-----------------------------
find ./ -name "*.txt" -exec sh -c 'echo $0 `cat $0 | awk '\'' $1 > 3 {print $0}'\'' | wc -l`' {} \;
-> 각 파일별 3보다큰 숫자 cnt
-----------------------------
<실제 사용예제>
- find, exec, awk, sum -
-----------------------------
cat math.txt | awk '{sum += $1; num++} { print "sum=", sum; print "num = ", num; print "avg=", sum/num}'
-> sum, cnt, avg 계산 매번 계산후 출력
cat math.txt | awk '{sum += $1; num++} END { print "sum=", sum; print "num = ", num; print "avg=", sum/num}'
-> sum, cnt avg 계산 계산 다한후 1번만 출력
-----------------------------
<실제 사용 예제>
- awk, substr, length, index, match -
-----------------------------
cat math.txt | awk '{ print substr($0,1,3}, length($0), index($0, "DD"), match($0, "DD") }'
-> 1~3 substring 출력, size 출력, "DD" 의 시작 위치 출력, "DD" 의 시작 위치 출력
-----------------------------
<실제 사용 예제>
- xargs, exec 차이점 -
거의동일하나, exec는 find 명령어 내에 있는기능, exec는 뒤에 명령어가 길면 에러가 발생.