본문 바로가기

리눅스83

[bash] 인트럽트 시그널을 처리하는 명령어 trap 쉘스크립트 프로그래밍에서 인터럽트 시그널이 입력될 때 어떤 처리를 해야 하는 경우 사용하는 명령어가 trap 입니다. 리눅스 운영체제마다 다양한 시그널을 가지고 있고, 현 운영체제의 시그널은 kill명령어로 확인할 수 있습니다. 운영체제의 인터럽트 시그널 종류 및 번호 확인 $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SI.. 2019. 7. 3.
[bash] 터미널 화면을 제어하는 tput 명령어 tput 명령어는 터미널에서 화면을 제어할 수 있습니다. 커서의 위치, 화면의 배경색, 문자의 색상 등을 변경할 수 있습니다. 여기서는 간단한 사용법에 대해서 알아보겠습니다. * tput을 이용하여 화면을 clear 하고 내용을 출력하는 것을 반복하면 화면이 깜빡이는 것 처럼 보일 수 있습니다. 이는 화면 전체를 지우고 다시 처리하는 과정에서 발생하는 현상이기 때문에 화면 전체를 지우지 않고 필요한 부분으로 커서를 옮겨서 새로 출력하는 것이 좋습니다. (참고) 다음의 사이트에서 상세한 내용과 좋은 예제들을 확인할 수 있습니다. http://korea.gnu.org/manual/release/termutils/ 스크립트로 만든 휴대용 터미널 제어기 스크립트로 만든 휴대용 터미널 제어기 tput과 tabs .. 2019. 7. 3.
[bash] 배쉬쉘의 실수 연산 배쉬쉘은 기본적으로 정수(integer) 연산만 사용할 수 있습니다. 실수 연산을 사용하기 위해서는 bc 명령어를 이용해야 합니다. 실수 표현을 위해서는 -l 옵션을 이용해야 합니다. x=9 y=12 # 기본 설정은 정수 계산 $ echo "$x / $y" | bc 0 # -l 옵션으로 실수 표현 $ echo "$x / $y" | bc -l .75000000000000000000 # scale 설정으로 소수점 이하 출력 설정 $ echo "scale=3;$x / $y" | bc -l .750 # 소수점 이하 처리는 버림 $ echo "scale=1;$x / $y" | bc -l .7 2019. 7. 1.
[bash] 배쉬쉘 프롬프트 스트링 변경하기 배쉬쉘의 프롬프트 스트링(PS)은 4가지가 존재합니다. PS1: 기본 프롬프트 스트링. 기본값은 `\s-\v\$ ' PS2: 긴 문자 입력을 위해 나타나는 문자열. 기본 값은 `>` PS3: select 옵션을 처리할 때 나타나는 문자열 PS4: 실행을 디버깅할 때 출력되는 문자열 기본값은 `+` PS1을 설정하는 방법은 다음과 같습니다. 실행할 때 기본 설정으로 입력하고 싶으면 .bashrc 파일을 수정하면 됩니다. # 유저명@호스트명 경로> export PS1="\u@\h \w> " # 유저명@호스트명 [시간]>export PS1="\u@\h [\$(date +%k:%M:%S)]> " PS1, PS2, PS3, PS4: 설명: 바로가기PS1 설정: 바로가기 2019. 3. 18.
[ls] ls 명령어 조회시 컬러 옵션 이용 터미널에서 ls 명령을 이용할 때 파일 별로 구분을 위해서 color 옵션을 제공합니다. never 일때는 색상으로 구분하지 않습니다. $ ls --color=auto$ ls --color=alyways$ ls --color=never 보통 alias 로 ls 명령을 등록하고 사용하는데 LS_COLORS 환경변수를 이용해서 색상을 구분합니다. LS_COLORS="파일종류1=속성1;색1:파일종류2=속성2;색2" 의 형태로 입력하면 됩니다. LS_COLORS=rs=0:di=01;34:ln=01;36 LS_COLOR 설정 참고 -> http://linux-sxs.org/housekeeping/lscolors.html 2019. 2. 18.
[bash] 쉘스크립트에서 정규식을 이용하여 숫자포함여부 확인하기 배쉬에서 정규식 연산자는 =~ 를 이용합니다. 정규식을 이용할 때는 변수에 넣어서 처리하는 방법과 바로 이용하는 방법이 있습니다. #!/bin/bash // 변수를 이용하는 방법 re="^[0-9]+$" if [[ $1 =~ $re ]]; then echo "number" else echo "not number" fi // 연산자에 바로 이용하는 방법. 문자를 감싸주지 않음 if [[ $1 =~ ^[0-9]+$ ]]; then echo "number" else echo "not number" fi 2019. 2. 1.
[vi] vi에서 문자열 찾고 치환하는 방법 vi에서 문자를 검색하는 명령어는 두개 입니다. /: 전진검색?: 후진검색 vi의 명령모드(ESC 입력 상태)에서 두개중 하나를 입력하고 찾으려는 문자열을 입력합니다. ALTER TABLE temp; /ALTER 62,1 22% 이렇게 되면 찾는 문자가 하일라이트 됩니다. 이후 찾은 문자를 이동하는 방법은 다음과 같습니다. n: 앞으로 이동 N: 뒤로 이동 이렇게 문자를 검색하면 찾은 문자가 계속 하일라이팅 됩니다. 이를 초기화 하는 명령어는 다음과 같습니다. 다음의 두 명령어중 하나를 명령모드에서 입력하면 기존에 입력한 검색어가 초기화 됩니다. :noh:nohlsearch 2019. 1. 31.
[bash] 소켓 프로그램 테스트를 위한 넷캣(netcat, nc) 명령어 TCP/UDP 네트워크 프로그래밍을 하다보면 클라이언트나 서버를 임시로 작성해야 할 때가 있습니다. 그럴때 nc 명령어를 이용하면 따로 구현할 필요 없이 편리하게 사용할 수 있습니다 nc는 간단한 명령어로 클라이언트나 서버를 테스트해 볼수 있어서 편리한 명령입니다. 대기 명령어(서버, listen)# 9999 포트를 열어서 수신 대기 $ nc -l 9999 # 9999 포트를 열어서 다중 사용자의 수신 대기(연결이 끊어져도 계속 유지) $ nc -lk 9999 # 접속자의 IP 정보 출력 $ nc -lv 9999 접속 명령어(클라이언트, connect) nc 127.0.0.1 9999 2019. 1. 30.
[bash] 쉘프로그램 실행시 파라미터 개수 확인하기 쉘프로그램에서 전달받은 파라미터는 $ 기호를 이용하여 확인합니다. 이를 이용해서 프로그램 실행에 필요한 파라미터 개수를 확인하여 오류 여부를 전달 할 수 있습니다. $#: 전체 파라미터의 개수$0: 프로그램의 이름 $1: 첫번째 파라미터 ./sample.sh a b c d 라고 실행하면 $# = 4$0 = sample.sh$1 = a$2 = b $3 = c $4 = d가 됩니다. #!/bin/bash if [ $# -ne 원하는_매개변수_갯수 ] then echo "usage: $0 yyyymmdd hh" exit 1 fi 2019. 1. 21.
[bash] 순차적인 숫자 for 문 처리 배쉬의 for 문에서 순차적인 숫자를 출력하는 방법은 다음과 같습니다. #!/bin/bash for vTime in {00..23} do echo ${vTime} done [결과] $ ./for.sh 00 01 02 ...23 #!/bin/bash for vTime in {1..100} do echo ${vTime} done [결과] $ ./for.sh 1 2 ...100 #!/bin/bash for vTime in 00 01 02 03 04 do echo $vTime done [결과]0001..04 2018. 11. 13.
[bash] 이전에 실행한 명령을 확인하는 bash의 history 설정 하기 배쉬에 이전에 실행한 명령어를 확인하는 history 명령어가 있다. 기본적으로 history 명령을 실행하면 다음과 같은 형태로 나온다. 1001 crontab -e 1002 history | grep cp 1003 history 이를 표현하는 형식을 명령어를 실행한 시간을 출력하기 위해서 다음과 같이 변경하면 아래의 결과를 볼 수 있다. .bashrc, .bashrc_profile 파일에 아래의 내용을 추가하고 파일을 다시 읽어 들이면 된다. export HISTTIMEFORMAT="%Y-%m-%d %T" # 히스토리 포맷 변경 export HISTSIZE=5000 # 메모리에 읽어 들이는 명령어의 개수 export HISTFILESIZE=10000 # 파일에 저장하는 명령어의 개수 1016 2018.. 2018. 7. 27.
[bash] 문자열 분할(split) 하여 루프문 처리 Bash 스크립트에서는 공백(' '), 개행문자열('\n')을 이용하여 문자열을 분할하여 루프문을 처리할 수 있다. IFS 는 입력필드 구분자를 말한다. 이 값을 이용하여 루프문을 처리할 수 있다. #!/bin/bash vString="A-111-DK" IFS='-' read -ra vStr 2018. 6. 19.
[bash] 서브프로세스의 실행 종료를 대기하는 wait 커맨드 활용 wait 커맨드는 프로세스의 실행 종료를 대기하게 한다. 특정 프로세스를 대기하게 할 수도 있고, 전체 프로세스의 종료를 대기할 수도 있다. wait %Background ID # jobs 로 확인할 수 있는 백그라운드 번호로 대기wait PID # PID 번호의 프로세스 대기wait # 전체 서브 프로세스 종료 대기 #!/bin/bash a &b & c & waitecho "end" 위와 같이 스크립트를 작성해서 실행하면 a, b, c의 작업이 종료되고,"end"를 출력한다. 2018. 5. 31.
[bash] 함수의 결과로 문자열 반환 bash의 함수는 문자열을 반환할 수 없다.상태 코드만 반환이 가능하므로 echo 를 이용하여 결과문자를 출력하고 이를 결과로 저장해야 한다. 다음과 같이 이용하면 된다. [118k]$ function fncString {> if [[ $1 == "A" ]]; then> echo "a"> else > echo "b"> fi> }[118k]$ [118k]$ VARIABLE=$(fncString "A")[118k]$ echo $VARIABLEa[118k]$ VARIABLE=$(fncString "B")[118k]$ echo $VARIABLEb 2017. 12. 27.
[bash] echo 출력시에 글자 색상 지정하는 방법 echo 출력시에 특정 문자만 색상을 변경하는 방법은 다음과 같다. RED='\033[0;31m'GREEN='\033[0;32m'NC='\033[0m' echo -e ${RED}RED${NC}echo -e ${GREEN}GREEN${NC} https://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux 2017. 12. 27.
[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.
[리눅스][vi] vi 편집기에서 모든 라인을 지우는 법 vi 편집기에서 모든 라인을 지우는 법은 다음과 같다. gg 명령어로 제일 첫번째 라인으로 이동dG 명령어로 현재 라인 이하의 모든 라인을 삭제 이상과 같이 두개의 명령어를 이용하여 모든 파인을 지울 수 있다. 2017. 5. 8.
[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.