리눅스/Bash61 [bash] 터미널 화면에서 GUI를 개발하기 위한 라이브러리 Ncurses 터미널용 GUI 를 개발하기 위해서 라이브러리를 찾아보던 중에 ncurses 를 이용하면 처리할 수가 있다고 해서 기록한다. 다행히 한글로 번역된 문서가 있어서 개발하는데 도움이 될 것 같다. https://ko.wikipedia.org/wiki/Ncurses프로그래밍 방법(한글) - https://wiki.kldp.org/wiki.php/NCURSES-Programming-HOWTO#s-1.1.1한글 출력 - https://bakyeono.net/post/2015-05-12-ncurses-korean-utf-8.htmlhttps://www.gnu.org/software/ncurses/ 2017. 11. 2. [xmlllint] 리눅스 커맨드로 xml 문서 확인하기 리눅스 커맨드 상에서 xml 문서의 포맷을 검사하거나, xpath를 이용하여 문서를 탐색하기 위해서 xmllint 명령어를 이용한다. xmllint --format [파일경로]경로의 문서가 xml포맷에 맞는지 검사하고, 들여쓰기를 한 문서를 반환한다. xmllint --validate [파일경로]문서에 저징된 DTD에 맞는 문서인지 확인한다. xmllint --xpath [xpath 표현식] [파일경로]지정한 xpath에 따라 문서를 탐색하여 결과를 반환한다 http://xmlsoft.org/xmllint.html 2017. 9. 14. [bash][split] 파일을 라인단위로 나누기 위한 split 명령어 파일을 라인단위로 나누기 위한 split 명령어는 다음과 같이 사용한다. -l 100 : 100 줄단 위로 나눔-d : 숫자로 된 이름의 파일로 분할-a : 나누어진 파일 이름의 사이즈 origintxt 파일을 100줄 단위로 나눈다. $ split -l 100 origin.txtxaaxabxac... origintxt 파일을 100줄 단위로 나누는데, 파일이름을 숫자형식으로 한다. $ split -l 100 -d origin.txtx01x02x03... origintxt 파일을 100줄 단위로 나누는데, 파일이름을 숫자형식으로 하고, 파일이름의 사이즈는 4이다. $ split -l 100 -d -a 4 origin.txtx0001x0002x0003... https://ss64.com/bash/split.. 2017. 8. 1. [command] tree 커맨드 디렉토리의 파일 상태를 알아보는 명령어로 tree 커맨드가 있다. tree 커맨드의 주요 옵션은 다음과 같다. -f: 파일의 전체 경로를 출력한다. -p: 파일의 퍼미션을 출력한다. 서버에 tree 명령이 설치되어 있지 않다면 다음의 명령어로 설치가 가능하다. apt-get install tree https://www.computerhope.com/unix/tree.htm 2017. 7. 25. [tar] tar 를 이용하여 압축시 특정 파일 제외하기 tar 명령을 이용하여 파일을 압축할 때 exclude 옵션을 이용하여 특정 파일을 제외할 수 있다. tar -zcvf file.tar.gz source_dir_name --exclude="*.log" --exclude="*.attach*" --exclude="./folder_name" https://www.gnu.org/software/tar/manual/html_section/tar_49.html 2017. 7. 21. [ls] ls 명령어의 --time-style 옵션 이용하기 ls 명령어를 이용하여 파일 목록을 볼때 --time-style 옵션을 이용하면 파일 생성 시간을 사용자가 원하는 형태로 출력할 수 있다. 아래와 같은 형태로 출력이 가능하다. - 기본타입: full-iso, long-iso, iso- 타임포맷: date 포맷 형식 ls -alh --time-style=full-isodrwxrwxr-x 6 hadoop hadoop 4.0K 2017-06-27 01:43:40.754322656 +0000 . ls -alh --time-style=long-isodrwxrwxr-x 6 hadoop hadoop 4.0K 2017-06-27 01:43 . ls -alh --time-style=isodrwxrwxr-x 6 hadoop hadoop 4.0K 06-27 01:43 . .. 2017. 6. 27. [bash][grep] grep 명령어 사용방법 grep 명령어는 파일에 일치하는 문자열이 있으면 출력하는 역활을 한다. -n : 라인번호 출력-f : 파일명 출력-v : 일치 하지 않는 것 출력 grep 으로 문자열이 일치하는지 확인할 때 다음과 같이 확인할 수도 있다. . : 문자열 하나[] : 괄호로 묶인 만자 중 하나가 존재하는지 확인cat raw.txt | grep "temp.ex" | grep "text.[a|b]"ex) tempaex 처럼 temp와 ex 사이에 하나의 문자만 존재하고, textka, textkb 처럼 text와 a, b 사이에 하난의 문자가 존재할 때 확인 grep 의 주요 옵션 - http://geundi.tistory.com/113 2017. 5. 24. [bash] 쉘 스크립트에서 문자열에 특정 문자가 존재하는지 확인하여 처리 DB의 like 명령어 처럼 bash 에서도문자열에 원하는 문자가 존재하는지 확인하여 처리하는 것이 가능하다. 사용방법은 =~ 명령을 이용하여 문자열간에 비교를 하면 된다. =~ 명령어를 사용할 때는 꼭 [[ 를 사용해야 한다. [ 를 사용하면 오류가 발생한다. 2017. 5. 23. [ssh] ssh 명령으로 접속시 인증서 확인 건너뛰기 다른 서버로 ssh 명령어를 이용하여 접속할 때 처음 접속하는 서버이면 Are you sure you want to continue connecting ? yes/no 와 같이 접속여부를 확인하는 부분이 나타난다. 보안을 위한 사항이긴 하지만 스크립트를 이용하여 연속적인 명령을 하려고 할때는 이 부분으로 인하여 다음 작업 처리가 안되게 된다. 이럴 때는 다음의 옵션을 이용하여 처리하면 된다. ssh -o StrictHostKeyChecking=no user@127.0.0.1 2017. 5. 19. [bash][grep] 문자열과 일치하는 내용을 가지는 파일 확인 하기(grep 사용) 특정 문자열과 일치하는 내용을 가지고 있는 파일을 확인하고 싶을 때 grep 을 이용하여 내용을 확인할 수 있다. -L, --files-without-match Suppress normal output; instead print the name of each input file from which no output would normally have been printed. The scanning will stop on the first match. -l, --files-with-matches Suppress normal output; instead print the name of each input file from which output would normally have been printed. T.. 2017. 4. 10. [linux][file] 압축파일의 어떤 형식인지 확인하는 file 명령어 리눅스의 파일은 파일명으로 실제 파일을 구분할 수 없기 때문에 압축파일의 형식을 파일명으로 단정할 수 가 없다. 파일명과 압축형식이 다를경우 압축형식을 확인하기 위해서는 file 명령어를 이용하면 된다. 아래와 같이 파일명과 정보를 확인할 수 있다. > file gzip-file.gzgzip-file.gz: gzip compressed data, was "gzip-file", last modified: Tue Feb 21 05:41:25 2017, from Unix > file tar-file.tartar-file.tar: POSIX tar archive (GNU) > file tar-gz-file.tar.gztar-gz-file.tar.gz: gzip compressed data, last modifi.. 2017. 2. 24. [bash][sed] 파일의 문자열 치환하기 파일에 지정한 문자열을 치환하기 위해서는 "sed" 커맨드를 이용한다. sed의 -i 옵션을 이용하여 파일의 문자열을 치환하여 저장한다. 사용방법은 다음과 같다. text1.txt 파일의 abcd 문자를 1234로 변경한다. * 마지막의 g 가 없으면 처음 발견한 문자만 치환하고, g가 있으면 파일내 모든 문자열을 치환한다. > sed 's/abcd/1234/g' text1.txt 2017. 1. 16. [bash] rdate 명령을 이용한 리눅스 서버 시간 동기화 리눅스 서버의 시간을 동기화 할 때는 rdate 커맨드를 이용한다. * 영구한 시간 동기화는 ntp 를 이용한다. ** ntpd 를 이용하여 시간 동기화*** ntpq -p 명령을 이용하여 현재 서버의 동기화 상황을 확인 가능 rdate -p time.bora.net: 원격서버(ntp 서버)의 시간을 출력 rdate -s time.bora.net: 원격서버의 시간을 이용하여, 현재 서버의 시간을 설정 rdate 커맨드 설명 - http://www.tutorialspoint.com/unix_commands/rdate.htmntpq 출력내용의 의미 - http://krids.tistory.com/83 2016. 12. 27. [sz / rz][커맨드] 파일전송을 위한 sz, rz 커맨드 로컬PC와 서버의 파일전송을 위해서 ftp를 설치하여 이용하였는데, sz, rz 커맨드를 이용하면 ftp를 이용하지 않고 파일을 전송하는 것이 가능하다. sz, rz 커맨드를 이용하기 위해서는 lrzsz 커맨드를 설치해야 한다. yum이나 apt-get 을 이용하여 커맨드를 인스톨한다. yum -y install lrzsz rz sz [파일명] 이렇게 입력하면 파일을 업로드, 다운로드가 가능하다. * 주의할 점은 ZMODEM 프로토콜을 구현한 접속 프로그램에서만 사용가능하다. ex) XShell, SecureCRT, PuTTy 2016. 11. 17. [bash] 쉘 스크립트 작성시 로그 출력을 위한 간단한 함수 쉘 스크립트 수행시 로그 출력을 위해서 다음의 함수를 이용하면 좋다. 일자 시간을 출력하기 때문에 나중에 확인하기에도 좋다. # 로그 출력 함수 function fncPrintLog(){ vLogTime=`date '+%Y-%m-%d %H:%M:%S'`; vLogTime=${vLogTime:0:19} echo "[${vLogTime}] "${1}} fncPringLog "start."처럼 사용하면 되고 출력은 아래와 같다. [2016-11-08 05:07:01] start. 2016. 11. 8. [bash][find] 로그파일 정리하기 크론탭이나 다른 방법으로 정기적으로 프로그램을 실행하고 로그를 출력하고 나면 나중에는 로그파일이 많아지게 된다. 이럴때 로그파일을 한번 정리해야 할 필요가 있을때 다음과 같이 find 명령어를 이용하여 처리하면 된다. 어제자 이름으로 생성된 파일을 압축하고, 7일전 파일은 삭제한다. * find로 검색한 파일을 압축할 때도 사용가능 #!/bin/bash cd /mnt/crontab/hive_metadb_check/ vYesterDayYYYYMMDD="*`date -d "yesterday" -u +\%Y\%m\%d`*"v7DayPrevYYYYMMDD="*`date -d "-7 day" -u +\%Y\%m\%d`*" # 어제자 로그 파일 정리 find ./logs/ -name "*${vYesterDayYYY.. 2016. 11. 7. [bash] [script] 파일이 생성될 때까지 대기하는 스크립트 명령을 실행하기 위해서 hdfs나 로컬상의 경로에 파일이 생성되기를 기다려야 할 때 아래와 같이 사용한다. wc 명령으로 파일의 존재여부를 확인하여 5분에 한번씩 체크하면서 계속 대기한다. 2016. 10. 7. [bash][find] find 로 파일 검색중 Permission denied 보지 않기 find 명령어로 파일 검색중 권한이 없는 폴더를 검색하게 되면 ' Permission denied'라는 에러메시지를 보게 된다. 이럴때는 sudo 명령을 이용하여 관리자 권한으로 폴더를 검색하던지에레메시지를 null로 보내서 에러메시지가 보이지 않게 하면 된다. find / -name 파일명 2>/dev/null 2016. 8. 26. [bash][du] 폴더별 용량 확인하기 배쉬에서 du 명령어를 이용하여 파일의 용량 확인이 가능하다. du -sh ./683M./ du -sh */40M./a236M./b212M./c.gz60K./d.txt du -sh ./*40Ma/236Mb/ 2016. 8. 25. [bash] 배쉬 스크립트의 종료 코드 배쉬 스크립트의 종료코드란 프그그램 수행중exit 명령으로 프로그램을 종료시키면서 사용자에게 프로그램 종료의 이유를 알리기 위하여 반환하는 값이다. exit 함수는 정수형 값을 반환할 수 있다. 이를 $? 명령어를 이용하여 확인이 가능하다. 사용자가 임의의 정수(255 이하)를 반환하는 것도 가능하며, 예약되어 있는 반환 값은 다음과 같다 0 : 정상적인 종료1 : 일반적인 에러127 : command not found130 : Ctrl + C 에 의 한 종료 https://wiki.kldp.org/HOWTO//html/Adv-Bash-Scr-HOWTO/exitcodes.html#EXITCODESREFhttps://wiki.kldp.org/HOWTO//html/Adv-Bash-Scr-HOWTO/exit-.. 2016. 8. 22. [bash] 스크립트에서 입력받은 파라미터의 개수를 확인하여 처리 쉘스크립트에서 전달받은 파라미터의 개수를 확인하는 방법은 다음과 같다. 원하는 파라미터의 개수가 아닌경우 오류를 출력한다. $# : 파라미터의 개수$1 : 첫번째 파라미터$2 : 두번째 파라미터 종료 명령에 전달하는 코드 값의 의미는 다음과 같다 0 : 성공1 : 일반적인 에러 2016. 8. 22. [bash] 시작일자와 종료일자를 이용하여 루프문 돌리기 시작일자와 종료일자를 이용하여 지정한 일자간의 루프문을 반복하는 방법은 다음과 같다. 위의 것은 참고한 예제이고, 일반적으로 지정하는 일자형식에 맞게 변형하면 다음과 같다. 2016. 7. 13. [date] date 명령으로 지정한 일자의 요일 확인하기 리죽스 쉘에서 date 커맨드를 이용하여 지정한 일자의 요일은 다음과 같이 확인할 수 있다. date -d "20160704" '+%A' 2016. 7. 4. [ssh] ssh 접속시 접속 여부 물어보는 부분 없이 접속하기 ssh 명령어를 이용하여 다른 서버에 접속할 때 아래와 같이 접속 가능 여부를 물어볼때가 있다. 다수의 서버에 접속하기 위해서 스크립트로 접근할때는 상당히 귀찮아 진다. 이럴때는 다음의 옵션으로 접속 여부 물어보는 부분을 없애고 접속 가능하다. Are you sure you want to continue connecting (yes/no)? ssh -o "StrictHostKeyChecking no" 주소 2016. 2. 12. [curl] curl 명령어 처리시 부가 정보 없이 조회하기 curl 명령 사용시 아래와 같은 부가 정보가 나타나는 경우가 있다. Total % Received % Xferd Average Speed Time Time Time Current 이럴때는 -s, --silent 옵션을 이용하면 부가 정보 없이 조회가 가능하다. curl -s www.naver.comcurl --silent www.naver.com 2016. 2. 12. bash 스크립트의 set -e 옵션 이용시 주의 사항 배쉬 스크립트를 사용할 때 set -e 옵션을 이용하여 스크립트 실행 중 오류가 발생하면 종료하게 설정이 가능하다. #!/bin/bash set -e 위와 같이 설정하여 사용한다. 에러가 나면 종료된다고 해서 잘쓰고 있었는데 사용에 주의해야 할 점이 하나있다. * 그리고 외국사이트를 검색해보니 사용을 추천하지 않더라. set -e의 경우 명령어를 실행한 리턴코드가 0이 아니면 프로그램을 종료하게 된다. 따라서 grep 같은 경우에 반환하는 값이 없으면 오류가 발생한 것이 되서 프로그램이 종료된다. 프로그램이 어떻게 실행되었는지 확인하기 위해서 grep 을 사용하여 단순 로그를 출력하는 프로그램을 작성했는데grep의 반환결과가 없어서 프로그램이 종료되어 버렸다. set -e 옵션을 이용하여 프로그램의 에러.. 2016. 1. 25. [bash][date] date 명령어 사용하기 [date 함수 사용] Date 함수는 쉘에서 날짜를 입력하는데 유용하게 사용할 수 있다. -d 옵션을 이용하여 시간 지정도 가능하므로, 지정한 일자를 유용하게 사용할 수 있다. #!/bin/bash # UTC 시간 date -u # 시간 수정 date -d -1days # 1일전 date -d +1days # 1일후 # 시간 출력 포맷 date +\%Y-\%m-\%d # 포맷에 맞는 시간 출력 # 날짜 시간 지정 및 1 시간 전date "+%Y%m%d %H" -d "20161115 01:00:00 1 hour ago" # 날짜 시간 지정 및 1 시간 후date "+%Y%m%d %H" -d "20161115 01:00:00 1 hour" 2015. 12. 28. [Tip] Bash 쉘 history에서 시간 나오게 하기 [참고] - http://askubuntu.com/questions/391082/how-to-see-time-stamps-in-bash-history 환경설정에 HISTTIMEFORMAT 을 설정해주면 된다. 아래와 같이 설정하면 된다. HISTTIMEFORMAT=%F %T 2015. 12. 9. [linux] gzip, gunzip 명령어 gzip gzip 은 파일의 압축을 위한 명령이다. gzip 은 하나의 파일만 압축을 할 수 있다. 여러 개의 파일이나 디렉토리를 압축하기 위해서는 tar 로 먼저 묶어주어야 한다. tar –zcf test.tar.gz file1 file2 … 옵션 설명 v 압축 관련 정보를 출력 d 압축을 해제, gunzip 과 동일, decompress 명령어 # 파일 압축 gzip target gzip -v target # 압축 해제 gzip -d target.gz gzip -dv target.gz gunzip target.gz 2015. 7. 1. [linux] tar 명령어 tar tar 명령어는 여러 개의 파일을 하나의 파일로 묶기 위한 명령어 이다. 자주 사용하는 옵션은 다음과 같다. 옵션 설명 c tar 파일 압축 생성 x tar 파일 압축 해제 t tar 로 압축된 파일의 리스트 확인 v 처리과정을 출력(t 옵션과 사용하면 파일의 상세정보 확인) f 압축 파일명, 압축 해제 파일명을 지정 z gzip 압축을 tar 압축과 동시에 처리 명령어 # tar -cvf [생성할 tar 파일명] [압축대상 파일1] [압축대상 파일2] tar -cvf file.tar 1.txt 2.txt # tar -tvf [목록을 확인할 tar 파일명] tar -tvf file.tar # tar -xvf [해제할 tar 파일명] tar -xvf file.tar # tar 과 동시에 gzip 압.. 2015. 6. 30. 이전 1 2 3 다음