vim이 설치된 곳에서 소스코드(source code)를 정렬할때 다음과 같이한다.


1. vim을 이용하여 파일을 읽는다.    vim target_file

2. pretty print를 실행한다.            =G

3. 저장한다.                                   :wq



예를 들면 다음과 같다.


  O "test.c"파일이 아래와 같을때

   

  O (1. vim을 이용하여 파일을 읽는다.) vim test.c


  O (2. pretty print를 실행한다.) =G

    - 단순히 =G만 입력하면 된다. 명령어를 실행하면 아래와 같다.


  O (3. 저장한다.) :wq

    - 단순히 :wq만 입력하면 된다.

 - 현재 폴더에서 파일 찾기 (파일이름 검색)

현재 디렉토리 (Directory, 경로, 폴더)에서 파일 이름 'ga'로 시작하는 파일들을 찾습니다.


find -name 'ga*'


 - 루트 폴더에서 파일 찾기 (파일이름 검색)

현재 폴더가 아닌 루트 (root)폴더에서 찾고 싶으시면 다음과 같이 하시면 됩니다.


find / -name 'ga*'


이 명령은 찾는데 시간이 오래 걸리고 결과물이 많이 나옵니다.


 - 특정 폴더에서 파일 찾기 (파일이름 검색)

그래서 특정한 폴더를 선택하여 찾고 싶으시면 더욱 정확하고 빠르게 찾으실 수 있으시겠죠? 명령은 다음과 같습니다.


find (경로) -name 'ga*'


경로 부분에 원하시는 경로를 지정해 주시면 됩니다.
(경로는 상대 경로와 절대 경로를 사용할 수 있습니다.)




* 파일 이름을 시작이 아닌 중간에 포함한다면 다음과 같이하시면 됩니다.


find -name '*ga*'


마지막에 포함 된다면, 다음과 같이 하시면 되겠죠?


find -name '*ga'


우분투 버전 확인 두가지 방법이 있습니다.
(It has two methods to check Ubuntu version)





첫 번째 방법은 아래와 같습니다.

(below is first)

$ cat /etc/issue


결과는 아래와 같습니다.
(Below is the result of the first method)





두 번째 방법은 아래와 같습니다.

(the next is second)

$ lsb_release -a


결과는 아래와 같습니다.
(Below is the result of the final method)


 - 현재 폴더에서 파일 찾기 (확장자 검색)

현재 디렉토리 (Directory, 경로, 폴더)에서 확장자 txt를 가진 파일들을 찾습니다.


find -name '*.txt'


현재 폴더에서 확장자를 png로 찾고 싶으시다면 다음과 같이 바꾸시면 되겠죠?


find -name '*.png'


 - 루트 폴더에서 파일 찾기 (확장자 검색)

현재 폴더가 아닌 루트 (root)폴더에서 찾고 싶으시면 다음과 같이 하시면 됩니다.


find / -name '*.txt'


이 명령은 찾는데 시간이 오래 걸리고 결과물이 많이 나옵니다.


 - 특정 폴더에서 파일 찾기 (확장자 검색)

그래서 특정한 폴더를 선택하여 찾고 싶으시면 더욱 정확하고 빠르게 찾으실 수 있으시겠죠? 명령은 다음과 같습니다.


find (경로) -name '*.txt'


경로 부분에 원하시는 경로를 지정해 주시면 됩니다.
(경로는 상대 경로와 절대 경로를 사용할 수 있습니다.)


 - 결과를 더욱 상세하게 보고 싶으시면 옵션을 추가해 줍니다.

코드는 아래와 같습니다.


find -name '*.txt' -ls


뒤에 -ls 옵션을 추가하여 주시면 -ls 형식으로 보실 수 있습니다.




"cvCreateFileCapture_FFMPEG"이라는 단어를 검색하고 싶으면, 

다음과 같이 검색을 한다.

grep -e cvCreateFileCapture_FFMPEG /home/OpenCV/ -R


여기서 "grep"를 이용하여 "cvCreateFileCapture_FFMPEG"단어를 "/home/OpenCV/"에서 검색한다. 그냥 "/home/"에서만 검색하고 싶은 경우에는 "-R"를 제외시킨다.


또한 검색 결과를 파일로 저장하고 싶으면 아래와 같이 한다.

grep -e cvCreateFileCapture_FFMPEG /home/OpenCV/ -R >> result.txt


"result.txt"파일명으로 저장된다.

  • 이 글은 쉽게 컴퓨터와 감시용 카메라(  웹캠, IP카메라, 캡쳐보드에 연결된 아날로그 카메라 등 )를 이용하여 감시 카메라 시스템을 설치한다.
  • 설치 시 필요한 것들은 다음과 같다.
    • Ubuntu
    • 카메라( Camera )  
  • 패키지를 설치하기 위해서 관리자 권한을 획득한다.
    • ~$ sudo -i
    • 비밀번호( Password )를 입력한다.
  • ssl-cert 패키지를 설치한다.
    • ~# apt-get install ssl-cert
  • 존마인더( zoneminder ) 패키지를 설치한다.
    • ~# apt-get install zoneminder
    • 아래와 같이 zoneminder에 설치에 필요한 필요한 패키지들이 추가로 필요하다고 알려준다. 따라서 y로 추가 패키지도 설치한다.
    • 데이터베이스( DB : Data Base )의 비밀번호(  Password )를 입력하라고 아래와 같이 나온다.
      • 설정하고 싶은 비밀번호를 입력한다. 
    • 재확인은 다음과 같다. ( 위에서 설정한 비밀번호와 똑같이 입력하면 된다. )
    • nullmailer을 설정하라고 아래와 같이 나온다. 하지만 난 이게 무슨 의미인지 몰라서 그냥 "ok"를 클릭했다. ( 이와 같이 해도 무슨 문제가 있는지 모르지만.... 일단은 상관없다 )
    • 두번째도 위와 같다
    • 추가로 H.264 패키지를 설치해도 된다.
      • ~# apt-get install x264
    • 존마인더 시작파일을 수정해서, MySQL을 수정하여 딜레이를 추가한다. ( 에디터( Editer )는 "vi"를 사용하였다. )
      • ~# vi /etc/init.d/zoneminder
      • 다음과 같이 24번째 줄의 "sleep 15"를 추가한다.
    • 아파치( apache ) 설정은 다음과 같다.
      • ~# ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf
      • ~# /etc/init.d/apache2 force-reload
      • ~# /adduser www-data video
      • ~# make-ssl-cert generate-default-snakeoil --force-overwrite
      • ~# a2enmod ssl
      • ~# a2ensite default-ssl
      • ~# service apache2 restart
      • 웹서버에 접속이 가능하다.
        • 웹주소를 "https://서버주소"로 들어가면 된다.
          • 예를 들면, 
            • "https://127.0.0.1"
            • "https://localhost"
            • 등이 있다.
        • 실행화면은 다음과 같다.
    • 캠보졸라( cambozola )를 설치한다.
      • ~# cd /usr/src
      • ~# wget https://www.andywilcock.com/code/cambozola/cambozola-latest.tar.gz
      • ~# tar -xzvf cambozola-latest.tar.gz
      • cp cambozola-0.935/dist/cambozola.jar /usr/share/zoneminder
        • 설치당시 현재 0.935 이다.
    • NTP 시간 동기화를 한다.
      • ~# vi /etc/cron.daily/ntpdate
        • 여기에 다음과 같이 입력한다.
          • #! /bin/sh
          • ntpdate 0.kr.pool.ntp.org
      •  실행가능한 권한을 준다.
        • ~# chmod 755 /etc/cron.daily/ntpdate
    • 재부팅 한다.
      • ~# Shutdown -r now
  • zoneminder 화면 확인
    • 익스플로러, 크롬, 및 파이어폭스 등 에서 다음과 같이 입력한다.
    • https://localhost/zm
    • https://127.0.0.1/zm
    • https://computerIP/zm
      • 파이어폭스에서 확인결과는 다음과 같다.


  • 이번에는 소스 파일이 여러개일때를 생각해보자.


/*

*    filename : message.c

*/

#include <stdio.h>

void goodbye_world(void)

{

        printf("Goodbye, World ! \n");

}


/*

*    filename : main.c

*/

#include <stdio.h>

void goodbye_world(void);

int main(int argc, char **argv)

{

        goodbye_world();

        exit(0);

}


  • 위와 같이 소스파일이 2개가 있을경우를 생각하자.
  • 여기서 두가지 방법이 있다.
  • 첫번째 방법은 각각 파일을 컴파일 및 어셈블리 변환을한다.( 링크는 하지 않는다. ) 그 이후 링크로 연결한다.
  • 이후 생성되는 .o 는 gcc의 산물이다.
$ gcc -c message.c
$ gcc -c main.c
$ gcc -o goodbye message.o main.o
$ ./goodbye
  • 두번재 방법은 두개의 파일을 한번에 한다.
$gcc -o goodbye message.c main.c
$ ./goodbye

  • 이렇게 보니깐... 두번째 방법이 쉬워 보인다. ㅋ
  • gcc 에서 '-c' : Compile and assemble, but do not link 이다.



  • gcc로 컴파일해서 어플리 케이션을 작동시켜 보자.
  • 역시 처음에는 "Hello, World!" 출력이 가장좋은것 같다.

  • 일단 소스를 입력을 하기 위해서 파일을 해서한다.
$ vi hello.c
  • 소스를 작성하기 위해서 'i'를 클릭후 소스를 입력한다. 
  • 소스는 아래와 같다.

/*

*       Professional Linux Programming - Hello World

*/


#include <stdio.h>

#include <stdlib.h>


int main( int argc, char **argv )

{

        printf( "Hello, World! \n");

        exit(0);

}

"Professional Linux Programming" 책에서 가져왔다.


  • 소스 작성을 종료하고 파일을 닫기 위해서 다음과 같이 입력한다.
$ shift + ":" 
$ wq
  • 마무리로 "Enter" 키를 누른다.
  • 그렇게 하면, 소스를 입력하기전 화면으로 복구가 된다.
  • 이제 소스를 컴파일 하기 위해서 다음과 같이 입력한다.
  • ( 여기서, gcc로 컴파일로 하며 설치되어 있다고 가정한다. )
$ gcc -o hello hello.c
$ ./hello

  • Hello, World 가 출력되는것을 확인 할 수 있다.
  • 여기서 gcc 옵션 '-o'가 궁금하면, 다음과 같이 입력해서 확인해 보자.
$ gcc --help

  • 여기서,
  • -o <file>    Place the output into <file>
  • 이라고 나와있다.


+ Recent posts