목록개발 & CS/Linux (8)
Chistory
다량의 파일의 확장자를 유지한 체, 번호로 된 이름으로 변경하고 싶을 때가 있다. 흔히 검색해보면 mv를 이용한 파일명 변경과, rename에서 정규식을 약간 활용하는 정도를 설명해준다. 하지만 쉘스크립트를 짤 줄 안다면, 쉽게 여러 스타일로 이름을 지을 수 있다. 모든 파일의 이름을 일괄 변경하기는 쉽다. 다음과 같이 할 수 있을 것이다. #!/bin/bash cur=`pwd` cd $1 file_list=(`ls`) count=0 for filename in ${file_list[@]} do change_filename=`printf "%3d" $count` mv $filename $change_filename count=$($count+1) done cd $cur 위 스크립트는, 첫번째 인자로 들어..
두번째로 정리해 볼 명령어는 바로 test다. test 명령어는 쉽게 생각하면 bash에서의 조건문 역할을 해준다. 사실 test를 사용해 보지 않은 리눅스 유저도 있을 수 있다. 하지만 흔히 쉘 스크립트를 쓰다 보면, 다음과 같은 구문을 많이 볼 것이다. #!/bin/bash ls_count=`ls /home | wc -l` if [ $ls_count -eq 0 ]; then echo "home directory is empty" else echo "home direcotry is not empty" fi 단순히 /home 디렉토리가 비어있는지를 확인할 수 있는 코드이다. 바로 여기에도 test 명령어가 숨어있다. 대괄호 '[', ']' 로 감싸져있는 저 부분은, test 뒤에 괄호 안의 인자들을 넣어..
그동안 실무 하면서 배운 각종 리눅스 유틸리티(명령어)에 대한 간략한 사용법, 응용방안에 대해 정리하고자 한다. 가장 먼저 설명할 유틸리티는 dd이다. 리눅스 환경에서 디스크, 파일시스템 등을 다룰 일이 생길 때, 한 번쯤은 접하게 되는 명령어가 바로 dd이다. 리눅스 에서는 각종 디바이스들을 파일로써 다룬다. 이는 /dev 디렉토리에서 확인할 수 있다. 텍스트 터미널을 의미하는 /dev/tty, sata 디바이스를 의미하는 /dev/sdx, 파일로 존재하는 파일시스템을 연결하기 위한 루프백 디바이스 /dev/loop 등 다양한 파일들을 확인할 수 있다. 그리고 재밌게도, 다들 하나의 파일 로써 작동하기 때문에, cat 등의 파일을 출력할 수 있는 바이너리로 해당 파일들을 출력해보면, 무언가 의미있는 데..
쉘 스크립트란? 흔히 리눅스 등 CLI 환경에서 자동화나 단순 작업을 위해 쉘 스크립트를 사용한다. 사실 윈도우에도 .bat 파일처럼 자동으로 cmd나 파워쉘의 명령어, 프로그램을 실행시켜주는 스크립트 언어가 있긴 하다. 하지만 일반적으로 백엔드 개발을 하다 보면, 윈도우의 batch 보다는, 쉘 스크립트를 자주 만나게 된다. 개인적으로 회사 입사후, 꽤 많은 스크립트 작업을 하다 보니, 이걸 이제 단순한 용도로만 바라볼수는 없게 됐다. 작게는 간단한 명령어 실행 자동화부터, sed, awk 등을 이용한 파싱, curl을 이용한 크롤링, 각종 DB 클라이언트 바이너리를 이용한 DB작업 등 크게 성능을 요구하지 않는 단순 작업은 모두 스크립트로 가능하다. 예를들어 특정 ini나 properties 파일의 ..