반응형

테스트 환경: Ubuntu 14.04, bash shell 사용



Bash 스크립트 파일에서 점점 awk를 써야 될 일이 많아지고, 그 awk 스크립트가 점점 더 복잡해지면서 한 줄에 주욱 이어서 썼더니 점점 가독성이 떨어지고 디버그하기 어렵게 되었다.


결론부터 말하자면, 그냥 가장 바깥에 있는 두 개의 single quote 문자 사이에는 마음대로 띄워써도 된다. ㅡㅡ;

개행 문자(newline), 탭 문자 마음대로 써도 상관이 없다.



그런데 내가 뭘 잘못했는지 command not found 에러가 났다.

뭐가 문제였을까?


확인해 보니,

awk [각종_옵션들] 

'                <---- awk 명령과 single quote 문자를 개행문자로 분리(...)

{

...

}

'


이런 식으로 썼던 거였다. 그러니까,


awk [각종_옵션들] '

{

...

}

'


코드의 시작을 나타내는 single quote 문자를 awk 명령줄과 같은 위치에 써야 하는데 그걸 엔터 쳐서 분리했더니, bash shell이 두 개의 서로 다른 명령으로 이해했던 것이었다. ㅜㅜ


아니면,

awk [각종_옵션들] \

'

{

...

}

'


이렇게 역슬래시로 다음 줄까지 명령 하나로 인식하도록 처리했어야 했다.


POSIX 명령의 기본 규칙을 잊지 말자. ㅠㅠ



반응형
블로그 이미지

Bryan_

,
반응형

이 글에서는 리눅스 커맨드 라인에서 특정 디렉토리의 용량을 확인하고, 이를 활용하여 특정 용량 이상의 디렉토리를 검색하는 방법을 설명한다.



특정 디렉토리의 용량 확인하기


리눅스에서 특정 디렉토리의 용량을 확인하려면 du 명령어를 쓰면 된다.


$ du -s [디렉토리_이름]


참고로 -s 옵션은 디렉토리의 하위 디렉토리에 있는 파일들의 용량을 합산하여(summarize) 보여주는 옵션이다. "-s" 옵션을 빼면 디렉토리 내부의 모든 하위 디렉토리의 용량을 보여준 후, 마지막으로 검사하는 디렉토리의 용량을 보여준다.


아래 그림은 du -s를 이용하여 "mc_sc" 디렉토리의 용량을 얻어온 결과이다.


다음 그림은 du만 가지고 "mc_sc" 디렉토리를 검사하였다. 그 결과, 하위 디렉토리를 모두 검사하여 용량을 표시한 후에 마지막으로 mc_sc의 용량을 계산하였다.





특정 용량 이상의 디렉토리 찾기


앞서 살펴본 du -s를 응용하여 wildcard 문자(*)를 쓰면, 현재 위치에 있는 모든 디렉토리의 용량을 찾을 수 있다. 앞서 예제로 확인한 위치에서 du -s * 명령을 친 결과는 아래 그림과 같다. ILQR_exp_data 디렉토리 바로 하위에 있는 디렉토리들에 대해서 각각 합산된 용량을 보여주는 것을 알 수 있다.



그러면 이 중에서 100MB 이상의 용량을 가지는 디렉토리만 보려면 어떻게 할까?

파이프라인(|)으로 awk 명령을 추가해서 출력 결과를 필터링함으로써 이 목적을 달성할 수 있다. 출력 결과의 첫번째 열이 용량을 보여주는 숫자로 되어 있으므로, 첫번째 열의 변수 값($1)이 특정 숫자보다 크도록 조건을 걸면 된다.


아래 명령은 현재 위치에서 100MB 이상의 용량을 갖는 디렉토리를 보여준다. 참고로 뒤의 숫자는 킬로바이트(KB, kilobyte) 단위이다.


$ du -s * | awk '$1 > 100000'


위 명령을 실행한 결과는 다음 그림과 같다.



반응형
블로그 이미지

Bryan_

,