blueecho's collection

누군가에게 "당신은 무엇을 잘하십니까?"라는 질문을 들었을때 바로 대답할것을 만들어보자~!!
        
분류 전체보기 (267)
NeWs (21)
배움생활 (107)
리눅스 (51)
SoC (29)
외부스터디 (2)
학교수업관련 (3)
일본어공부 (1)
ETC (21)
취미생활 (118)
끄적끄적 (5)
인생설계 (12)
Wish list (4)
리눅스 자전거 연구실 생활 사진 지름신 Fedora 솔카당 영화감상 일본소설 연구실생활
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
블로그 이동하였습니다.

 

배움생활/리눅스에 해당하는 글 51개
2009.03.25   vi를 이용한 개발 관련 팁 과 색인을 이용한 방법 1
2009.03.24   VirtualBox USB인식 문제 해결방법 
2009.03.23   diff 와 patch 사용법 

  vi를 이용한 개발 관련 팁 과 색인을 이용한 방법 | 2009. 3. 25. 21:53 | 배움생활/리눅스   
요즘들어서 vi를 이용한 편집을 사용하긴 하지만 무식한 방법을 이용한 검색을 하거나, kdevelop같은 IDE툴을 사용할 때가 많다.
오늘 책에서 본 내용은 ctags와 cscope를 이용한 검색 방법에 대해서 읽었다.

1. 특정 문자열을 가진 파일을 검색하는 방법

command> find . -name (filename) -exec grep -Hn (strings) {} \;


현재 폴더 내에서 특정 filename의 파일들 중에서 strings를 포함하고 있는 파일(심볼릭링크 제외 : -H)과 행번호(-n)를 출력한다.

command> grep -RIwHn (strings) *


-R : recursive, -I : skip binary file, -w : whole word
요런 방식으로도 출력은 가능하다.

2. ctags를 이용한 검색 방법

command> ctags -R


색인을 만들어준다. -R 옵션은 역시 하부 디렉토리 모두 검색한다는 뜻(재귀적)

command> vi -t (strings)


vi의 tag옵션으로 해당 문자열을 가진 열을 찾아서 열어준다.  또는 vi의 명령행 모드에서 다음과 같이 입력한다.

:tag (strings)


또 다른 방법으로는 찾는 문자가 있는 행에서 ctrl+]키를 눌러서 이동이 가능 돌아올때는 ctrl+T이다. 이 명령은 중첩(nested)되어서 사용가능하다.

tj명령을 이용하여서 리스트로 나열된 부분에서 찾을 수 있다. 또한, sta명령을 사용하면 수평창분할을 하여서 보여주기도 한다. ptn의 경우는 다음 태그로 ptp의 경우는 이전 태그로 점프한다.

:tj (strings)
:sts (strings)
:ptn
:ptp

3. scope를 이용한 검색

command> cscope -R


키 용법이 일반적인 것과는 다르니 확인할 것 ?명령으로 확인해야 한다.

command> find . \(-name '*.c' -o -name '*.cpp' ....... -o -name '*.S' \) -print > cscope.files
command> cscope -i cscope.files


원하는 파일들에서 색인을 만들수 있도록 만들어준다. 요 명령의 경우는 쉘스크립트로 만들어서 사용하는 것이 편하다.

vi에서 cscope를 사용하려면 다음과 같은 내용을 vi의 환경설정파일에 첨가해 주어야 한다.

[ ~/.vimrc ]
set  csprg = /usr/bin/cscope
set csto = 0
set cst
set nocsverb

if filereadable("./cscope.out")
    cs add cscope.out
else
    cs add (cscope.out의 주소)
endif
set csverb


이후로는 vi의 cs명령을 사용하여서 검색이 가능하다.

:cs find (질의종류) (심볼)

4. vi팁

1) 파일 탐색기능 활용하여 현재 디렉토리 내에 파일 검색을 하도록 해줌. 단, exploer 플러그인이 설치되어야 함

:20vs ./


위의 예의 경우는 20라인짜리 수직선을 나누고 현재 디렉토리를 검색

2) 괄호탐색의 경우는 { 또는 }에 커서를 놓고 %키를 누르면 쌍이 되는 부분으로 이동

3) 함수를 접기 위해서는 { 문자에 커서를 놓고 v]}zf 명령을 눌러주면 함수가 폴딩된다. v]}는 블록을 형성하고 zf를 누르면 폴딩이 된다. 폴딩을 해제 할 경우는 -> 키를 누르거나 zo명령으로 폴딩을 해제해 준다.
쉽게 하기 위해서 환경파일에 다음과 같이 정의해 주면 편하다.

map <F1> v]}zf


4) 여러행에 탭을 넣을 때는 v 를 이용하거나 V를 이용해서 정리하거나 (수정할 행수)>> 명령 또는 <<를  통해서 조정이 가능하다.

7>>


위의 경우는 아래 7행을 탭하나 만큼 옮겨준다.

5) 복사로인해서 흐트러진 소스의 경우 v를 이용하여 블록을 잡아주고 =키를 눌러주면 정렬된다.

6) 파일을 바로 읽어오기 위해서는 파일명이 있는 위치에 커서를 놓고 ctrl+wf를 누르면 수평분할창에 파일이 열린다. 헤더파일 같은 경우 편하다.

7) 자동완성기능 ctrl+p (앞쪽에서 찾음) ctrl+n (뒤쪽에서 찾음)

  열씨미와 게을러의 리눅스 개발 노하우 탐험기 - Blog2Book 시리즈 02  박재호 지음
'열씨미'와 '게을러'라는 가상인물의 대화를 통해 리눅스로 개발하면서 겪는 개발현장 사례를 14개의 짧은 이야기를 통해 실감나게 그려낸다. 각 이야기는 리눅스 신참인 '열씨미'와 리눅스 해커인 '게을러'의 해결방안을 동시에 수록하고 있어 다 나은 해결방안을 모색할 수 있는 계기를 마련해준다.
  유닉스.리눅스 프로그래밍 필수 유틸리티 - vi, make, gcc, gdb, cvs, rpm  백창우 지음
vi, make, gcc, gdb, cvs, rpm 등 유닉스, 리눅스 개발 환경에서 자주 사용하게 되는 필수 유틸리티의 활용법을 알려준다. 많은 그림과 도식, 구체적인 예제들을 통해 기능과 원리를 설명하고 있어 초중급 개발자도 쉽게 익힐 수 있다.



  VirtualBox USB인식 문제 해결방법 | 2009. 3. 24. 21:52 | 배움생활/리눅스   
간만에 시간이 남는 지라 이번에 사용하게 된 Virtualbox의 USB인식문제를 해결하기 위해서 웹검색을 시도해보았다.
스크립트를 만드는 방법도 있고 /etc/fstab을 수정하는 방법등 대체적으로 몇가지 방법이 있지만 현재 사용하고 있는 FC8에서 사용할 수 있는 방법이 없어서 몇번 시도하는 중 하나의 방법을 시도해 보고 성공하여서 올려보도록 한다.

/etc/rc.sysinit 파일에 다음과 같이 첨가해 준다.

if [ ! -d /proc/bus/usb ]; then
        modprobe usbcore >/dev/null 2>&1 && mount -n -t usbfs /proc/bus/usb /proc/bus/usb -o devgid=501,devmode=664
else
        mount -n -t usbfs /proc/bus/usb /proc/bus/usb -o devgid=501,devmode=664
fi

대략 usb장치를 인식했을때 처음부터 인식 또는 새로 마운트 된경우 각각의 gid를 vboxuser로 연결해주고 권한을 664로 지정해 주는 것 같다. gid=501의 경우는 제 시스템의 경우 vboxuser가 501이기 때문에 써준 내용이다.

꽤나 찾고 시험해 보느라 고생했지만 방법을 찾아서 다행이다. ^^

ps. 찾는 문서중에 FC9 또는 FC10의 경우는 script를 작성해서 하는 방법인것 같은데, FC8에서는 적용이 되지 않았을 뿐더러 위의 방식이 좀 더 쉽게 고칠 수 있었다.


  diff 와 patch 사용법 | 2009. 3. 23. 20:31 | 배움생활/리눅스   
그동안 많이 사용하고 있던 diff에 대해서 여러가지 이야기가 있길래 옮겨본다. ^^

  1. diff명령을 사용할때 문맥형식보다는 통합형식(-u 옵션)으로 사용하자. alias diff="diff-u" 로 정해놓는 것도 좋다.
  2. 파일 패치 배포를 위해서는 diff명령에 -urN 옵션을 준다. -u는 통합형식 -r 재귀적인 탐색, -N은 없는 파일의 경우는 비어있다고 판단하게 하는 것이다.
  3. patch 명령의 경우 -p? 의 옵션의 경우는 ?에 나온 숫자대로 내부의 디렉토리 부분을 생략하도록 한다. /usr/bin/blueecho/test/module의 경우 -p2라고 하면 /usr/bin이 생략되어 최종적으로는 blueecho/test/module의 형태가 된다. -R 옵션인 경우는 거꾸로 diff명령을 통해서 나온 파일을 가지고 원 파일로 복원시키는 작용을 한다.

또한 find라는 명령에 대해서 활용 방법도 있다.

  1. -newer옵션을 사용하여서 -newer 뒤에 나오는 파일보다 새로 만들어진 것만 찾는다.
  2. 파일이 변경된 것을 찾으려면 checksum을 이용한다.
    1. find ~~~~~~ -newer (filename) -exec md5sum {} >> changed.md5 \;
    2. md5sum -c changed.md5 2 > &1 | grep ":FAILED" | awk -F: '{ print $1 }'

awk명령은 패턴 스캐닝 과 언어처리를 하는 것이라고 하는데 아직은 잘 모르겠다. 좀 더 알아봐야 할 듯.... diff와 patch의 경우는 사용하기에 따라 엄청 강력할 것 같다. ^^
요런 방법으로 찾아준다.

아 diff의 KDE용 버젼으로 Kdiff3가 있다. 여러파일을 볼 수 있는게 장점 이랄까?
점점 acroedit와 ultraedit보다 vi가 편해져 가는 것 같은 느낌이.. ^^



  열씨미와 게을러의 리눅스 개발 노하우 탐험기 - Blog2Book 시리즈 02  박재호 지음
'열씨미'와 '게을러'라는 가상인물의 대화를 통해 리눅스로 개발하면서 겪는 개발현장 사례를 14개의 짧은 이야기를 통해 실감나게 그려낸다. 각 이야기는 리눅스 신참인 '열씨미'와 리눅스 해커인 '게을러'의 해결방안을 동시에 수록하고 있어 다 나은 해결방안을 모색할 수 있는 계기를 마련해준다.




#1 #··· #4 #5 #6 #7 #8 #9 #10 #··· #17
 
     
- Home
- Guestbook
- Manage - Location
- Tag - Post