sed 's/\t/ /g' 파일명 > 새파일명
쉘스크립트로 맨드러서 대상 파일명만 입력 하면 바로 변경 되게
sed 's/\t/ /g' $1 > $1.tmp
mv $1.tmp $1
2010년 1월 13일 수요일
2009년 6월 26일 금요일
.svn 디렉토리들을 제거 하기...
svn으로 관리되는 소스에는 .svn 디렉토리 들이 매 디렉토리 마다 있다.
일단 svn에서 관리 하지 않고 단지 소스를 복사 해서 본다고 하면.
보이지 않는 이 디렉토리들을 제거 하고 싶을 때가 있다.
find . -name .svn -print0 | xargs -0 rm -rf
간단하게 모두 제거 하자....
일단 svn에서 관리 하지 않고 단지 소스를 복사 해서 본다고 하면.
보이지 않는 이 디렉토리들을 제거 하고 싶을 때가 있다.
find . -name .svn -print0 | xargs -0 rm -rf
간단하게 모두 제거 하자....
2009년 2월 18일 수요일
UNIX OS별 공유 라이브러리 지정
공유 라이브러리 경로 지정
dlopen() 호출시 라이브러리 파일을 못찾는 에러 때문에 고생 할때....
http://kldp.org/node/58955
1) 공유라이브러리 경로지정을 위한 운영체제별 차이.
* 리눅스 : LD_LIBRARY_PATH
* 솔라리스 : LD_LIBRARY_PATH , LD_LIBRARY_PATH_64
* HPUX : SHLIB_PATH, LD_LIBRARY_PATH
* Tru64 : LD_LIBRARY_PATH
* AiX : LIBPATH
* SGI : LD_LIBRARY_PATH, LD_LIBRARYN32_PATH, LD_LIBRARY64_PATH
* Win32 : PATH
* MacOS X : DYLD_LIBRARY_PATH, DYLD_FALLBACK_LIBRARY_PATH
* VMS :SYS$SHARE
* OS390 : LIBPATH
dlopen() 호출시 라이브러리 파일을 못찾는 에러 때문에 고생 할때....
http://kldp.org/node/58955
1) 공유라이브러리 경로지정을 위한 운영체제별 차이.
* 리눅스 : LD_LIBRARY_PATH
* 솔라리스 : LD_LIBRARY_PATH , LD_LIBRARY_PATH_64
* HPUX : SHLIB_PATH, LD_LIBRARY_PATH
* Tru64 : LD_LIBRARY_PATH
* AiX : LIBPATH
* SGI : LD_LIBRARY_PATH, LD_LIBRARYN32_PATH, LD_LIBRARY64_PATH
* Win32 : PATH
* MacOS X : DYLD_LIBRARY_PATH, DYLD_FALLBACK_LIBRARY_PATH
* VMS :SYS$SHARE
* OS390 : LIBPATH
2009년 1월 7일 수요일
gdb 에서 어셈블리 코드로 보기
(gdb) disassemble function name
이렇게 하면 어셈블리 코드 로 나온다.
mutex_lock() 함수 속에 MEMORY BARRIER이 있는가를 HP 장비에서 찾아 보려고..
libpthread.so 파일에서 찾아 보기위해서는
objdump -D libpthread.so > o
이렇게 어셈블로 떠서 볼수도 있다.
이렇게 하면 어셈블리 코드 로 나온다.
mutex_lock() 함수 속에 MEMORY BARRIER이 있는가를 HP 장비에서 찾아 보려고..
libpthread.so 파일에서 찾아 보기위해서는
objdump -D libpthread.so > o
이렇게 어셈블로 떠서 볼수도 있다.
2008년 12월 18일 목요일
ld: Unsatisfied symbol "sem_unlink" 에러를 만났을때..
sem_unlink라는 심볼이 거시기 하다는 링크 에러 메세지..
nm -A /usr/lib/* 2>/dev/null | grep sem_open
이렇게 하면 sem_unlink가 있는 라이브러리를 쭉.... 보여 준다...
/usr/lib/libc.0:__ksem_open| 1229272|extern|entry |
/usr/lib/libc.0:__ksem_open| 1229312|extern|code |$CODE$
/usr/lib/libc.0:_sem_open| 1258936|extern|entry |
/usr/lib/libc.0:_sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc.0:sem_open| 1258960|extern|entry |
/usr/lib/libc.0:sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc.1:__ksem_open| 1229272|extern|entry |
/usr/lib/libc.1:__ksem_open| 1229312|extern|code |$CODE$
/usr/lib/libc.1:_sem_open| 1258936|extern|entry |
/usr/lib/libc.1:_sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc.1:sem_open| 1258960|extern|entry |
/usr/lib/libc.1:sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc_r.sl:__ksem_open| 1229272|extern|entry |
/usr/lib/libc_r.sl:__ksem_open| 1229312|extern|code |$CODE$
/usr/lib/libc_r.sl:_sem_open| 1258936|extern|entry |
/usr/lib/libc_r.sl:_sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc_r.sl:sem_open| 1258960|extern|entry |
/usr/lib/libc_r.sl:sem_open| 1258984|extern|code |$CODE$
/usr/lib/librt.2:__ksem_open| 14288|extern|code |$CODE$
/usr/lib/librt.2:sem_open| 10432|extern|entry |
/usr/lib/librt.2:sem_open| 10504|extern|code |$CODE$
/usr/lib/librt.sl:__ksem_open| 14288|extern|code |$CODE$
/usr/lib/librt.sl:sem_open| 10432|extern|entry |
/usr/lib/librt.sl:sem_open| 10504|extern|code |$CODE$
그럼 링크에서 -lrt를 추가 해줘야 링크가 되겠다...
nm -A /usr/lib/* 2>/dev/null | grep sem_open
이렇게 하면 sem_unlink가 있는 라이브러리를 쭉.... 보여 준다...
/usr/lib/libc.0:__ksem_open| 1229272|extern|entry |
/usr/lib/libc.0:__ksem_open| 1229312|extern|code |$CODE$
/usr/lib/libc.0:_sem_open| 1258936|extern|entry |
/usr/lib/libc.0:_sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc.0:sem_open| 1258960|extern|entry |
/usr/lib/libc.0:sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc.1:__ksem_open| 1229272|extern|entry |
/usr/lib/libc.1:__ksem_open| 1229312|extern|code |$CODE$
/usr/lib/libc.1:_sem_open| 1258936|extern|entry |
/usr/lib/libc.1:_sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc.1:sem_open| 1258960|extern|entry |
/usr/lib/libc.1:sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc_r.sl:__ksem_open| 1229272|extern|entry |
/usr/lib/libc_r.sl:__ksem_open| 1229312|extern|code |$CODE$
/usr/lib/libc_r.sl:_sem_open| 1258936|extern|entry |
/usr/lib/libc_r.sl:_sem_open| 1258984|extern|code |$CODE$
/usr/lib/libc_r.sl:sem_open| 1258960|extern|entry |
/usr/lib/libc_r.sl:sem_open| 1258984|extern|code |$CODE$
/usr/lib/librt.2:__ksem_open| 14288|extern|code |$CODE$
/usr/lib/librt.2:sem_open| 10432|extern|entry |
/usr/lib/librt.2:sem_open| 10504|extern|code |$CODE$
/usr/lib/librt.sl:__ksem_open| 14288|extern|code |$CODE$
/usr/lib/librt.sl:sem_open| 10432|extern|entry |
/usr/lib/librt.sl:sem_open| 10504|extern|code |$CODE$
그럼 링크에서 -lrt를 추가 해줘야 링크가 되겠다...
2008년 11월 13일 목요일
gdb 에서 Couldn't fetch registers from core file: File in wrong format 메세지
HP 장비에서 core 파일로 디버깅 할려고 하는데...
Couldn't fetch registers from core file: File in wrong format
Unable to find 'load_info' symbol
이런 메세지가 나왓다.
구글링 결과..
http://archives.devshed.com/forums/unix-106/hpux-devtools-can-t-work-with-a-core-file-2268762.html
요약 하자면..
ulimit -c
에서 코아 파일 사이즈가 제한
또는 파일시스템에 제한으로
코아 파일이 생기다 만것이다.
어쩐지 딱 2GB 짜리...
메모리 사용이 엄청 큰 어플리케이션이 죽엇을 경우...
이럴수도 있구나...!!
Couldn't fetch registers from core file: File in wrong format
Unable to find 'load_info' symbol
이런 메세지가 나왓다.
구글링 결과..
http://archives.devshed.com/forums/unix-106/hpux-devtools-can-t-work-with-a-core-file-2268762.html
요약 하자면..
ulimit -c
에서 코아 파일 사이즈가 제한
또는 파일시스템에 제한으로
코아 파일이 생기다 만것이다.
어쩐지 딱 2GB 짜리...
메모리 사용이 엄청 큰 어플리케이션이 죽엇을 경우...
이럴수도 있구나...!!
2008년 7월 28일 월요일
grep 에서 사용되는 정규표현식 메타캐릭터
^ 행의 시작 지시자
$ 행의 끝 지시자
. 하나의 문자
* 선행 문자의 임의 개수
.* 하나이상의 문자와 대응되는 메타캐릭터
[-] 범위에 속하는 하나의 문자
[^ab] 목록에 있는 문자를 제외한 하나의 문자
$ 행의 끝 지시자
. 하나의 문자
* 선행 문자의 임의 개수
.* 하나이상의 문자와 대응되는 메타캐릭터
[-] 범위에 속하는 하나의 문자
[^ab] 목록에 있는 문자를 제외한 하나의 문자
메타캐릭터
와일드카드 메타캐릭터
- 일치하는 파일 이름으로 전개되는 패턴에 사용할 수 있는 메타캐릭터
* - 0개 이상의 문자와 대응
? - 하나의 문자와 대응
[abc] - 대괄호 사이에 있는 문자 중 하나의 문자와 대응
[!az] - 나열된 문자를 제외한 하나의 문자와 대응
[a-z] - 목록의 범위 내에 있는 문자 중 하나와 대응
문자 대응 클래스
[[:upper:]] - 모든 대문자와 대응: A, B, C,...Z
[[:lower:]] - 모든 소문자와 대응: a, b, c, ...z
[[:digit:]] - 숫자와 대응: 0, 1, 2, ...9
[[:space:]] - 공백, 탭 등과 대응
- 일치하는 파일 이름으로 전개되는 패턴에 사용할 수 있는 메타캐릭터
* - 0개 이상의 문자와 대응
? - 하나의 문자와 대응
[abc] - 대괄호 사이에 있는 문자 중 하나의 문자와 대응
[!az] - 나열된 문자를 제외한 하나의 문자와 대응
[a-z] - 목록의 범위 내에 있는 문자 중 하나와 대응
문자 대응 클래스
[[:upper:]] - 모든 대문자와 대응: A, B, C,...Z
[[:lower:]] - 모든 소문자와 대응: a, b, c, ...z
[[:digit:]] - 숫자와 대응: 0, 1, 2, ...9
[[:space:]] - 공백, 탭 등과 대응
2008년 6월 4일 수요일
디렉토리 토글 cd -
pushd
popd
이런 명령으로 디렉토리를 왓다 갔다 한다고 한다.
난 몰랐다.
cd ../../../
이렇게 나왔닥 다시 cd xxx/yyy/zzz/
이렇게 들어갔다 나왔다..
근데...
cd -
이런 방금 전 디렉토리로..
다시 cd -
그럼 다시 원래 위치로..
이렇게 알면 편한게 있다니...
popd
이런 명령으로 디렉토리를 왓다 갔다 한다고 한다.
난 몰랐다.
cd ../../../
이렇게 나왔닥 다시 cd xxx/yyy/zzz/
이렇게 들어갔다 나왔다..
근데...
cd -
이런 방금 전 디렉토리로..
다시 cd -
그럼 다시 원래 위치로..
이렇게 알면 편한게 있다니...
2008년 6월 1일 일요일
makereview
개발 프로젝트 소스중에 현재 수정된것은 tkdiff로 추가로 만드러진 파일은 emacs로
하기 위한 스크립트
function makereview()
{
svn st -q >o
awk '{ if ($1 == "M") {print "tkdiff "$2;} else {print "emacs "$2} }' o > review
. review
}
먼전 svn st -q > o 에 의해 변경된 파일은 M 파일명 추가된 건 A 파일명 이렇게 두개의 열로
결과 파일이 o로 저장된다.
이걸 awk로 M을 tkdiff로 나머지를 emacs로 변경 한다음
그파일을 review로 저장 하고 실행하게 하는 스크립트다.
하기 위한 스크립트
function makereview()
{
svn st -q >o
awk '{ if ($1 == "M") {print "tkdiff "$2;} else {print "emacs "$2} }' o > review
. review
}
먼전 svn st -q > o 에 의해 변경된 파일은 M 파일명 추가된 건 A 파일명 이렇게 두개의 열로
결과 파일이 o로 저장된다.
이걸 awk로 M을 tkdiff로 나머지를 emacs로 변경 한다음
그파일을 review로 저장 하고 실행하게 하는 스크립트다.
2008년 5월 23일 금요일
ia64-hpux 에서 gcc 컴파일시 64bit 옵션
컴파일 옵션 -mlp64
링크 옵션 -mlp64
이걸 하지 않으면 기본적으로 32bit컴파일이 진행 된다.
make에서 CCFLAG, CFLAG , LDFLAG 같은것에 추가해야 한다.
컴파일에만 옵션을 주면 링크에서 에러가 발생 한다.
링크 옵션 -mlp64
이걸 하지 않으면 기본적으로 32bit컴파일이 진행 된다.
make에서 CCFLAG, CFLAG , LDFLAG 같은것에 추가해야 한다.
컴파일에만 옵션을 주면 링크에서 에러가 발생 한다.
32bit 오브젝트 인지 64bit Object인지 확인
#file -h *.o
file 명령으로 확인이 가능하다.
64비트 컴파일 하고 링크 과정에서 링크 할수 없다는 메세지 때문에. 고생했다.
file 명령으로 확인이 가능하다.
64비트 컴파일 하고 링크 과정에서 링크 할수 없다는 메세지 때문에. 고생했다.
피드 구독하기:
글 (Atom)