UNIX 프로그래밍
[regex]자주 사용하는 정규표현식 정리
■ 날짜Tuesday, February 25, 2022 → Tuesday, February 25, 2022(Sun(day)?|Mon(day)?|Tue(sday)?|Wed(nesday)?|Thu(rsday)?|Fri(day)?|Sat(urday)?),\s(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\s+\d{1,2},\s+\d{4} ■ 시간12:55 PM → 12:55 PM^(0[1-9]:[0-5][0-9]((\ ){0,1})((AM)|(PM)|(am)|(pm)))|([1-9]:[0-5][0-9]((\ ){0,1})((AM)|(PM)|(am)|(pm)))|(1[0-2]:[0-5][0-9]((\ ){0,1})((AM)|(PM)|(am)|(pm))) ■ IPv4 (CIDR 포함)192.168.0.1/24 → 192.168.0.1/24(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\/([0-9]|[1-2][0-9]|3[0-2]))?$ ■ IPv62001:db8:3:4:: →(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])) ■ HTML<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″> → <meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″><(\S*?)[^>]>.?<\/\1>|<.*?> ■ e-mailtest@test.com → test@test.com^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$ ■ Host namegoogle.com → google.com^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$ ■ Intergers-5 → -5^[-+]?\d+$ ■ /를 포함한 마지막
shell script if문
■ 문자열 비교 [ string ] – string이 빈 문자열이 아니라면 참 [ string1 = string2 ] – 두 문자열이 같다면 참 [ string1 != string2 ] – 두 문자열이 다르면 참 [ -n string ] – 문자열이 null(빈 문자열) 이 아니라면 참 [ -z string ] – 문자열이 null(빈 문자열) 이라면 참 ■ 산술
[C/C++] OS 구분 전처리기 매크로
출처 : http://fogeaters.cafe24.com/xe/board11/13578 * 리눅스 #if defined(__linux__)/* Linux. ————————————————— */ #endif * OSX, iOS #if defined(__APPLE__) && defined(__MACH__)/* Apple OSX and iOS (Darwin). —————————— */#include <TargetConditionals.h>#if TARGET_IPHONE_SIMULATOR == 1/* iOS in Xcode simulator */ #elif TARGET_OS_IPHONE == 1/* iOS on iPhone, iPad, etc. */ #elif TARGET_OS_MAC == 1/* OSX */ #endif#endif * 윈도우즈 #if defined(_WIN64)/* Microsoft Windows (64-bit). —————————— */ #elif defined(_WIN32)/*
UNIX Shell Programming
############################## 오류 발생 시 스크립트 실행# 중지 또는 무시하고 진행#############################set -eset +e ############################## 변수 사용 방법 (Variable)#############################▣ 위치 매개 변수(Positional Parameters)$0 : 실행된 스크립트 이름$1 : $1 $2 $3…${10}인자 순서대로 번호가 부여된다. 10번째부터는 “{}”감싸줘야 함$* : 전체 인자 값$@ : 전체 인자 값($* 동일하지만 쌍따옴표로 변수를 감싸면 다른 결과 나옴)$# : 매개 변수의 총 개수
데몬 프로세스 생성하기
리눅스 네트워크 프로그래밍2부:데몬 프로세스 생성하기 글/ Ivan Griffin과 John Nelson 역/ 이기동(자유기고가) 데몬 프로세스는 여러 클라이언트에 서비스하기 위해서 백그라운드로 실행되는 서버이다. 여러분은 데몬 프로세스를 생성할 때 다음과 같은 몇 가지 사항에 주의하여야 한다. 개발하는 동안 디버깅할 때 printf나 write를 사용할 수 있도록 서버를 포그라운드로 실행하는 것이 좋다. 또한, 서버가 오동작 한다면 중단 문자(보통 CRTL-C)를 보내어
ShellCode 작성 방법
[목차]1.어셈블리 기본 명령어2.기본적인 어셈블리 코드의 이해3.C프로그램을 쉘코드로 만들기.4.setreuid(0,0)함수 쉘코드로 만들기 부록 : unistd.h 1.어셈블리 기본 명령어라벨 | 오피코드 |제1오피랜드 |제2오피랜드 | 설명문(주석)——+———–+————+————+————–main: movl %esi, %ebp ; comment +——+——————–+—————————+——————–+ |명령어| 이용 방법 | 명령어의 의미 | C에서의 유사 표현 |+——+——————–+—————————+——————–+ | mov | movb $0x1,%eax | 1을 eax에 넣음.(1 바이트) | eax = 0x01 | |
getopt(),getopt_long()
이번에는 getopt 함수를 어떻게 호출하는지에 대해서 자세히 설명한다. 이 기능을 사용하기 위해서,당신의 프로그램에 헤더파일 `unistd.h’을 포함시켜야만 한다.변수 : int opterr만일 이 변수의 값이 0이 아니면, getopt는 만일 알지못하는 옵션 문자가 들어오거나 인수를 필요로하는 옵션이 옵션을 갖고있지 않다면 표준 에러 스트림에 에러메세지를 프린트한다. 이것은 디폴트동작이다. 만일 당신이 이 변수를 0으로 설정하면, getopt는 아무런 메시지도 프린트하지는
동적 적재(DL) 라이브러리
동적 적재(DL) 라이브러리 동적 적재 라이브러리는 프로그램이 시작할때가 아닌 다른 시기에 적재되는 라이브러리이다. 이것들은 플러그인이나 모듈을 구현할때 적합하다. 왜냐하면 그것들이 필요해질때까지 적재를 기다릴 수 있기 때문이다. 예를들어, PAM(Pluggable Authentication Modules)시스템은 관리자가 인증을 관리하는 것을 허용하기 위해 DL라이브러리를 사용한다. 이것들은 또한 때때로 코드를 머신 코드로 바꾸고 효율을 위해 멈추지 않고 컴파일된 코드로 만드는 인터프리터를 구현하는데
프로그램 라이브러리 하우투
프로그램 라이브러리 하우투 David A. Wheeler지음버전 0.60, 2000년 4월 27일 번역 : 황 진 희( jeenee@soback.kornet.net)2000년 5월 이 하우투 문서는 프로그래머가 어떻게 리눅스환경에서 프로그램 라이브러리 를 생성하고 사용할수 있는지를 다루고 있으며 라이브러리에는 정적 라이브러리, 공유 라이브러리 및 동적(DL) 라이브러리가 있다. 1. 개요 이 하우투 문서는 프로그래머가 어떻게 GNU의 툴셋을 이용하여 리눅스에 서 프로그램 라이브러리를 생성하고
리눅스 시그널(signal) 목록
/* from /usr/include/bits/signum.h */ /* Fake signal functions. */#define SIG_ERR ((__sighandler_t) -1) /* Error return. */#define SIG_DFL ((__sighandler_t) 0) /* Default action. */#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */ /* Signals. */#define SIGHUP
리눅스 시스템 콜 레퍼런스
리눅스 시스템 콜 퀵 레퍼런스 윤 상배 차례 1. 소개 2. 시스템 콜 예제 3. 시스템 콜 레퍼런스 1. 소개 시스템 콜이란 리눅스 커널에 의해 제공되는 서비스이다. 예를 들어 파일에 쓰는 서비스를 이용하길 원한다면 프로그래머는 리눅스에서 제공하는 해당 시스템콜을 이용해서 프로그램을 작성한다. C를 이용해서 프로그래밍을 할경우 대부분의 시스템콜은 libc를 통한 포장(wrapper)함수형태로 제공받을 수 있다. 시스템
리눅스 커널 컴파일 오류
리눅스 커널 컴파일시 발생하는 SELinux Enforce mode 오류에 대한 해결 방법 오류내용 : 부팅시 Enforcing mode로 진입시 정책이 없다는 메세지와 함께 커널 패닉 상태가 된다. ** 해결방법-1: /boot/grub/grub.conf 파일에서 아래와 같이 enforcing 모드를 꺼준다. title CentOS (2.6.18) root (hd0,0) kernel /vmlinuz-2.6.18 ro root=/dev/hda3 enforcing=0
ctags 활용
ctags 를 이용하면, 사용자 정의 함수가 나왔을때, 함수가 정의되어 있는 쏘스파일로 바로 점프할수 있으며, 또한 바로 원래의 쏘스파일로 되돌아올수 있다. 이렇게 함으로써 쏘스분석에 드는 시간을 상당히 줄일수 있다. 이번 문서에는 사용자가 vi 를 사용하고 있다는 가정하에 ctags 의 사용법을 설명하도록 하겠다. ctags 는 공개 소프트웨어 임으로 쉽게 얻을수 있을것이다. 리눅스의 경우 웬만한 배포판은 기본으로 포함되어