반응형


OS: Ubuntu 12.04 LTS (64-bit)

VIM에서 taglist 플러그인을 이용하고자 하면 우선 ctags를 설치해야 한다.
$ sudo apt-get install exuberant-ctags

ctags와 vim만 연동해서 쓸 수도 있는데, 이것은 이전 포스트를 참고해서 활용할 수 있다.

Taglist는 플러그인 파일을 다운로드 받아서 vim이 설치된 디렉토리에 복사하는 방식으로 설치된다.

다운로드 받고 압축을 풀면 plugin과 doc 디렉토리가 있다.
plugin 안에 있는 taglist.vim 파일은 /usr/share/vim/vim73/plugin/ 에 복사하고,
doc 안에 있는 taglist.txt 파일은 /usr/share/vim/vim73/doc/ 에 복사한다.


우분투를 설치하고 나면 기본적으로 vim-tiny가 설치되어 있다. 그런데 이 tiny 버전에서는 Taglist plugin을 설정해도 실행이 되지 않는다. 정상적으로 Taglist 플러그인을 사용하려면 기존에 깔려 있던 vim-tiny를 삭제하고 풀 버전의 vim을 새로 설치해야 한다.

$ sudo apt-get remove vim-tiny
$ sudo apt-get remove vim-common
$ sudo apt-get install vim



이제 vi 또는 vim 명령으로 VIM을 실행하고 나서, :Tlist를 입력하면 왼편에 분할된 화면으로 taglist가 나타날 것이다.


반응형
블로그 이미지

Bryan_

,
반응형

ctags는 프로그래밍 소스코드를 검색하거나 정의된 위치로 이동할 수 있는 태그 정보를 만들고 검색 기능을 제공한다. 이름에 C가 있다고 C언어만 되는 것은 아니고, 의외로 다양한 언어를 지원한다. (ctags --list-languages 명령으로 확인 가능)


데비안 계열 Ubuntu를 비롯한 여러 배포판에서 패키지로 exuberant-ctags를 제공하며, apt-get install로 설치할 수 있다.

$ sudo apt-get install exuberant-ctags


소스코드가 있는 위치에서 ctags -R 을 입력하면 하위 디렉토리까지 검색해서 태그 파일(tags)을 생성한다. 참고로 우분투에서 /usr/src/linux-headers-3.2.0.54/ 에서 생성된 태그 파일의 크기는 41MB 정도 되었다.

$ ctags -R    (커널 소스 등 위치에 따라서 루트 권한 필요)



vi에서는 -t 옵션을 통해서 ctags에서 만든 태그를 탐색할 수 있다.

아래 명령을 내리면 탐색할 태그 검색어가 있는 위치(첫번째 검색 결과)에서 vi를 시작한다.

$ vi -t 탐색할_태그


vi를 실행하고 나서도 원하는 태그가 있는 소스코드로 이동할 수 있다.

:ta 탐색할_태그     (입력한 태그와 정확히 일치하는 태그를 모두 검색)

:ta /탐색할_태그     (입력한 태그를 포함하는 문자열 태그를 모두 검색)


만약 검색된 태그가 현재 열려 있는 파일이 아닌 다른 파일에 있을 경우 이동할지 물어볼 것이다. 엔터를 쳐서 이동한다. 그리고 검색된 태그가 여러 개가 있을 때 두번째 이후로 검색된 위치로 이동하려면 아래와 같이 그 다음 태그로 이동하는 명령을 이용한다.

:tn



또한 vi에 열려 있는 소스코드에서 커서가 있는 곳의 키워드(구조체 이름, 매크로, 함수 이름 등)의 코드가 정의된 위치로 이동하고 싶으면 Ctrl + ] 단축키를 입력하면 해당 위치로 점프한다. Microsoft Visual Studio에서 F12 단축키, Eclipse에서 F3 단축키를 쓰는 것과 같다.


Ctrl + ] 단축키 또는 :tn 명령으로 이동하고 나서 이전 위치로 다시 돌아가려면 Ctrl + T 단축키를 입력하면 된다.




반응형
블로그 이미지

Bryan_

,
반응형


* 여러 파일을 포함하는 디렉토리 전체를 원격 컴퓨터에 전송하기

"-r" 옵션을 주면 디렉토리를 전송할 수 있다.

$ scp -r [디렉토리_이름] [원격지_아이디]@[원격지_주소]:[경로]


예제:

$ scp -r /home/usera/test/ cdsn@192.168.2.8:/home/remoteuser/exp/

이렇게 하면 원격지 컴퓨터의 exp 디렉토리 안에 test 디렉토리가 복사된다.




* 원격 컴퓨터로부터 여러 파일을 포함하는 디렉토리 전체를 받기

$ scp -r [원격지_아이디]@[원격지_주소]:[보내는_디렉토리_경로] [경로]


예제:

$ scp -r remoteuser@192.168.2.8:/home/remoteuser/exp/ /home/usera/

이렇게 하면 로컬 컴퓨터의 usera 디렉토리 안에 exp 디렉토리가 복사된다.




* 여러 개의 파일을 원격 컴퓨터로 보내기

여러 개의 파일을 보낼 때는 그냥 띄어쓰기로 구분해서 파일 이름을 나열하면 모두 전송된다. 만약 공백이 있는 파일 여러개를 보내고 싶다면 파일 하나씩 쌍따옴표(")로 둘러싸면 된다.

$ scp [파일명1] [파일명2] [원격지_아이디]@[원격지_주소]:[받는_위치]


예제:

$ scp /home/usera/111.txt /home/usera/222.txt  remoteuser@192.168.2.8:/home/remoteuser/exp/

이렇게 하면 원격지 컴퓨터의 exp 디렉토리 안에 111.txt와 222.txt가 복사된다.


$ scp "tcp 1111.txt" "tcp 9999.txt" remoteuser@192.168.2.8:/home/remoteuser/exp/

이렇게 하면 띄어쓰기가 포함된 두 개의 파일(tcp 1111.txt, tcp 9999.txt)이 원격지 컴퓨터의 exp 디렉토리 안에 복사된다.




* 원격 컴퓨터에 있는 여러 개의 파일을 로컬 컴퓨터에 받기

하나의 원격지 컴퓨터에 있는 여러 개의 파일을 받을 때는 원격지 주소까지 쓰고 나서 콜론(:) 뒤에 쌍따옴표(")로 둘러싼 영역 안에 여러 개의 파일명을 써주면 된다. 만약 보내는 파일명이 공백을 포함하는 경우에는 그냥 따옴표(')로 해당 파일명을 둘러싸도록 한다.

$ scp [원격지_아이디]@[원격지_주소]:"[파일명1] [파일명2] [파일명3]" [받는 위치]


예제:

$ scp remoteuser@192.168.2.8:"/home/remoteuser/111.txt /home/remoteuser/222.txt" /home/usera/

이렇게 하면 원격지에 있는 111.txt, 222.txt 파일들이 usera 디렉토리 안에 복사된다.


$ scp remoteuser@192.168.2.8:"'/home/remoteuser/tcp 1111.txt' '/home/remoteuser/tcp 9999.txt'" /home/usera/

이렇게 일반 따옴표를 써서 공백이 있는 파일 두 개를 받을 수 있다.




* 아직 되는지 알 수 없는 부분

한 개의 파일을 받을 때 받는 쪽에서 파일이름을 바꿔서 지정할 수는 있지만, 여러 개의 파일을 받을 때 파일 이름을 각각 바꿀 수 있는 방법은 찾지 못했다. 즉, 명령어 한 줄로 여러 개의 파일을 보낼 수는 있지만, 받는 쪽에서 그 여러 개의 파일 이름을 고치고 싶은데 어떻게 해야할 지 아직 모르겠다.

아무래도 scp 명령을 통해서 일단 파일들을 모두 받은 이후에 mv 명령으로 수정하는 방법이 현실적이라고 생각된다.




반응형
블로그 이미지

Bryan_

,
반응형

테스트한 운영체제: Ubuntu 12.04 (32-bit, 64-bit)

아파치: Apache/2.2.22 (Ubuntu)


아파치에서 Alias를 이용하면 리눅스의 /var/www, 윈도우에서 아파치 하위의 htdocs와 같은 특정 디렉토리 외에도 파일 시스템에 있는 임의의 위치를 인터넷에서 접근할 수 있게 만들 수 있다.


Alias 설정은 /etc/apache2/httpd.conf 에서 할 수 있다 (Ubuntu 기준).

httpd.conf 파일이 없을 경우 새로 만들어 준다. 그리고, /etc/apache2/apache2.conf 파일에서 아래와 같이 되어 있는지 확인한다. 아마 대부분 기본적으로 되어 있을 것이다.

# Include all the user configurations:

Include httpd.conf


즉, apache2.conf와 httpd.conf가 같은 디렉토리에 있으면 된다.


httpd.conf 파일에 아래와 같이 한 줄을 작성하면 Alias를 추가할 수 있다.

Alias    /원하는_이름/ /임의의_디렉토리_절대경로/


구체적인 예를 들면 다음과 같다.

# 리눅스의 경우

Alias    /aliastest/    "/home/usera/exp/testbed/aodvtest/"


# 윈도우의 경우; 폴더 구분 기호가 슬래시(/)임에 주의

Alias    /aliastest/    "C:/exp/testbed/aodvtest/"


이렇게 하면 /home/usera/exp/testbed/aodvtest/ 디렉토리에 있는 콘텐츠에 접근할 수 있다.

만약 index.html을 만들어 놓는다면 웹 브라우저에서 http://서버의 IP 주소/aliastest/ 를 입력하면 웹페이지를 바로 볼 수 있다.



반응형
블로그 이미지

Bryan_

,
반응형

리눅스 콘솔에서 아래 명령을 통해서, 리눅스의 architecture를 확인할 수 있다.

$ uname -m


위의 명령을 쳤을 때,

i686 이 출력되면 32-bit,

x86_64 가 출력되면 64-bit 시스템이다.



반응형
블로그 이미지

Bryan_

,