BASH

포스트: 81
Tags

Posts

81 posts

[bash: sync] 계속 파일 구성이 변하는 디렉토리에 대한 작업에 대한 문제

반달가면|2017년 9월 19일

확실치는 않은데, 어쨌든 일단 정리해 두기로. 일단 상황은 아래와 같다. ~/ftp_data 디렉토리에 파일을 받고 있다. 다른 장비에서 자동으로 보내준다. 그리고 1시간 간격으로 이 디렉토리에 있는 파일의 목록을 확인해서 조건에 맞는 파일은 다른 디렉토리로 옮겨야 한다. 별로 복잡하지 않은 문제라고 생각해서 아래와 같이 스크립트를 만들었다. mktemp 명령으로 /dev/shm 디렉토리에 임시 디렉토리를 만들고, find 명령으로 ~/ftp_data 디렉토리에 있는 파일 목록을 출력하여 임시 디렉토리에 파일로 저장. 이후 while 반복문으로 이 파일을 읽어서 하나씩 작업. (mktemp 관련 내용은 여기로, 파일의 내용을 한줄씩 while 반복문에 적용하는 방식에 대한 내용은 여기로) #

[bash: function] 함수의 반환값을 변수에 할당할 때 유의할 점

반달가면|2017년 9월 7일

셸 스크립트에서 함수(function)를 사용하다가 간혹 실수할 때가 있어서 정리해 두기로. 우선 함수에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로 함수에서 뭔가 작업을 한 결과를 변수에 저장하는 경우를 생각해 보자. 함수 test_func에서 도출된 결과값을 변수 test_val에 저장한다면 아래와 같은 모양일 것이다. # 함수 정의 function test_func() { ... } # 결과값을 변수에 할당 test_val=`test_func` 위와 같이 역따옴표(`)를 이용해서 함수를 호출하고 그 결과를 변수에 할당할 경우, 함수 안에서 해당 결과값은 echo 명령으로 출력하도록 해야 한다. 개인적으로 아무 생각 없이 echo 대신 return을 쓰는 바람에 오동작

[bash: wc] 파일 내용이 몇개의 행으로 이루어졌는지 확인하기

반달가면|2017년 8월 23일

예전부터 계속 활용해 오던 것인데, 생각난 김에 정리해 두기로. wc 명령으로 텍스트 파일이 총 몇줄인지(파일에 줄바꿈이 몇번 출현하는지) 확인해 볼 수 있다. -l 옵션을 사용하면 된다. 아래의 예시를 보자. # my_file.txt가 몇 줄인지 출력 wc -l my_file.txt 10 my_file.txt 만약 파일명을 출력하지 않고 싶다면 cat 명령과 조합하면 되겠다. # my_file.txt가 몇 줄인지 출력 cat my_file.txt | wc -l 10 개인적으로 가장 요긴하게 자주 쓰는 경우는 grep과 조합해서 특정 파일에서 특정 문자열을 포함한 행이 있는지 확인할 때다. # my_file.txt 내용중에 문자열 "abc"가 존재하는지 확인 grep

[bash: iconv] iconv를 이용한 텍스트 인코딩 확인

반달가면|2017년 8월 4일

인코딩이 불분명한 텍스트 파일이 있을 경우 iconv를 이용하는 간단한 셸 스크립트를 작성해서 인코딩을 확인해 볼 수 있다. 캐럭터 인코딩을 변환해주는 도구인 iconv에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로 방법은 단순하다. iconv에서 지원하는 인코딩 목록 전체를 가지고 현재 내 리눅스 시스템에서 사용중인 인코딩(통상 UTF-8)으로 한번씩 다 변환해 보는 것이다. 이걸 수작업으로 하기가 귀찮으므로 스크립트를 만들어서 하면 된다. 먼저, iconv에서 지원하는 인코딩 목록을 출력해 보자. # 지원하는 캐럭터 인코딩 목록 확인 iconv -l | more 437// 500// 500V1// ... iconv 버전에 따라 출력이 다를 수도 있겠는데, 어쨌든 데