stty -a 하면 정의된 문자를 볼 수 있습니다.

intr : 인터럽트 : 대부분 Ctrl-C
quit : 강제종료 : Ctrl-\
erase : 문자지우기 : Ctrl-H 
kill : 입력 라인 전체 지우기 : Ctrk-U
eof : end of file : ctrl-D
start : 터미널 출력 : Ctrl-Q
stop : 터미널 출력 중지 : Ctrl-S
susp : suspend (수행 중지) : Ctrl-Z

등등등 이런 것들이 정의되어 있습니다.

Ctrl-Z 되었으니.. 구동 중지하고 백그라운드 프로세스로 전환된 겁니다..
그리고 카운트는 백그라운드 프로세스의 job number입니다.

명령프롬프트에서 jobs 명령을 수행하면 백그라운드 프로세스 목록을 보여줍니다.

백그라운드 프로세스는 fg %number로 불러올 수 있습니다.

cat은 Ctrl-D를 만나면 종료됩니다.

더 자세한 내용은 man bash로 확인하세요

'프로그래밍언어 > Linux' 카테고리의 다른 글

ubuntu 터치패드, 마우스 설정  (0) 2013.10.14
virtualBox 공유 폴더 설정 (linux경경)  (0) 2013.10.11
chmod 권한 설정  (0) 2013.08.09
우분투 12.04 네트워크 설정 문제  (0) 2013.07.31
TFTP 설정  (0) 2013.07.03
Posted by w우주z
,

chmod명령어는 특정파일 또는 디렉토리의 퍼미션(permission)을 설정하는 명령어이다.
퍼미션이란, 특정파일이나 디렉토리에 대하여 읽기, 기록하기, 삭제하기 등의 권한을 설정해놓은 것으로 다중사용자 운영체제에서 파일의 접근권한과 보호등을 위하여 반드시 필요한것이다.
 
>> 파일과 디렉토리의 권한 확인하기 <<
ls -l 명령어를 이용하여 파일을 보면 가장 앞쪽에 7칸의 문자가 있다.
이 7개칸의 문자에 파일유형과 현재 설정된 권한을 알수 있다.
[root@os1 ~]# ls -l test.sh
-rwxr-x--x 1 root root 189 2013-01-08 21:56 test.sh
test.sh파일을 ls -l명령어로 보니 가장 앞쪽 7칸에 특정 문자들이 있다.
가장 첫번째 칸에 나오는 문자는 파일유형을 뜻하며 문자별로 유형은 아래와같다.
문자
파일형식
-
일반파일
b
블록구조의 특수파일(ex: /dev/sda)
c
입출력에 사용되는 특수파일(ex: /dev/console)
d
디렉토리(디렉토리도 하나의 특수파일로 취급됨)
l
심볼릭링크파일
p
파이프파일
s
소켓파일
즉, 가장 앞이 drwx-rx-rx일 경우 디렉토리라는 의미이다.
그다음에 오는 9개의 문자는 파일의 권한에 대한 표시이며, 각 자리별 의미는 아래와 같다.
파일소유자의 권한
-rwxr-xr-x
위 붉은색으로 표시된 부분은 파일소유자의 권한에 대한 부분이다.
파일소유그룹의 권한
-rwxr-xr-x
위 붉은색으로 표시된 부분은 파일소유그룹의 권한에 대한 부분이다.
일반사용자(파일소유자와, 소유그룹을 제외한 모두)의 권한
-rwxr-xr-x
위 붉은색으로 표시된 부분은 일반사용자의 권한에 대한 부분이다.
위와 같이 3칸의 문자씩 나누어 각각 구분하며, 각각의 문작 가지는 의미는 아래와 같다.
권한
일반적의미
파일
디렉토리
r
읽기권한(read)
파일읽기권한(cat명령어)
디렉토리내용보기(ls명령어)
w
쓰기권한(write)
파일저장,삭제(vi,rm명령어)
디렉토리에 파일저장, 디렉토리이름변경, 삭제등
x
실행권한(execution)
파일실행
디렉토리접근(cd명령어)
s
SetUID,SetGID권한
파일소유자(SetUID),그룹소유자(SetGID)의 권한으로 실행
t
Sticky Bit권한
공유디렉토리로 사용됨
위와 같이 같은 권한임에도 파일과 디렉토리에 대해서는 차이가 있으므로 확실히 파악하고 있어야 한다.
-. SetUID,SetGID,Stikybit
SetUID와 SetGID란?
일반적으로 특정 실행파일을 실행하였을 경우에는 그 파일을 실행시킨 실행자의 권한으로 실행된다
즉 root가 실행하면 root권한으로 실행되고 user1이 실행하면 user1의 권한으로 실행된다.
하지만 이 실행파일에 SetUID와 SetGID가 설정이 되면 약간 달라진다.
SetUID가 설정되어있는파일의 소유자가 root일 경우 user1이 실행하여도 root권한으로 실행이 된다.
SetGID역시 마찬가지로 파일의 소유그룹이 root일경우 user1이 실행하여도 root그룹권한으로 실행이 된다.
Stikybit란?
주로 공용디렉토리 사용되며 일반사용자의 실행권한부분에 "t"문자로 표시된다.
>stikybit를 설정했을때와 설정하지 않았을때의 차이점
/test 디렉토리에 아래와같은 권한설정이 되어있는경우 차이점
-rwxrwxrwx
/test디렉토리안에서 user1소유의 파일을 user2사용자가 수정할수 있음
-rwxrwxrwt
/test/디렉토리안에서 user1소유의 파일을 user2사용자가 수정할수 없음
위의 비교에서 보듯이, stikybit를 주지 않고 디렉토리에 777권한을 줄경우 user1이 생성한 문서를 user2가 얼마든지 수정할수있다. 또한 user2가 수정하면 파일소유자가 user2로 바뀌게 된다.
하지만 해당 파일이 들어있는 디렉토리에 777권한을 주고 stikybit를함께 주면 user1이 생성한 문서를 user2는 실행도 가능하고 읽을수도 있으나 수정을 불가하게 된다.
※ 권한의 대문자 표시
파일이 속성설정을 하다보면 SetUID,SetGID,Sticky Bit권한 자리의 알파벳이 소문자가 아닌 대문자로 설정되는것을 볼수 있는데, 아래의 예를 보면서 설명하겠다.
>SetUID문자의 대소문자 차이
SetUID문자가 대문자인경우 = -rwSr--r--
SetUID는 설정되었지만 파일소유자에게 실행권한(x)이 없는경우(SetUID유효하지 않음)
SetUID문자가 소문자인경우 = -rwsr--r--
SetUID가 설정되어있고 파일소유자에게 실행권한(x)도 있는경우 (정상적인 SetUID설정)
>SetGID문자의 대소문자 차이
SetGID문자가 대문자인경우 = -rw-r-Sr--
SetGID는 설정되어있지만 파일소유그룹의 실행권한(x)이 없는경우(SetGID유효하지 않음)
SetGID문자가 소문자인경우 = -rw-r-sr--
SetGID가 설정되어있고 파일소유그룹에게 실행권한(x)도 있는경우(정상적인 SetGID설정)
>Stiky bit문자의 대소문자 차이
Stiky bit문자가 대문자인경우 = -rw-r--r-T
Stikybit는 설정되어있지만 일반사용자에게 실행권한(x)이 없는경우(Stikybit유효하지 않음)
Stiky bit문자가 소문자인경우 = -rw-r--r-t
Stikybit가 설정되어있고 일반사용자에게 실행권한(x)도 있는경우(정상적인 Stikybit 설정)
SetUID,SetGID,Stikybit의 설정을 할때에는 대소문자를 잘 확인해야 할것이다.
>> 파일의 퍼미션을 설정하는 2가지 방법 <<
형식 chmod [권한] [파일명]
-. 첫번째, 8진수를 이용한 권한설정하기(절대모드)
형식 : chmod [n] [파일명]
8진수로 숫자를 지정하여 해당파일의 권한을 설정하는 방법이다.
8진수 7은 2진수로 111이며, 111은 각 해당하는 자리의 권한을 의미한다.
아래표를 참조하자
8진수
2진수
권한
의미
0
000
---
아무 권한 없음
1
001
--x
실행 권한만 있음
2
010
-w-
쓰기 권한만 있음
3
011
-wx
쓰기,실행 권한 있음
4
100
r--
읽기 권한만 있음
5
101
r-x
쓰기,실행 권한 있음
6
110
rw-
읽기,쓰기 권한 있음
7
111
rwx
모든 권한 있음
각 숫자는 2진수로 대입하여 각 자리의 권한을 의미한다.
즉, 777은 이진수로 111111111로서 rwxrwxrwx라는 의미로서 파일소유자,소유그룹,일반사용자에게
읽기,쓰기,실행의 모든 권한을 주는 설정이다.
>chmod 777 testfile [-rwxrwxrwx]
위와 같이 설정하면 testfile에 대해선 모든사용자가 파일을 맘대로 수정할수 있다.
>chmod 755 testfile [-rwxr-xr-x]
위와 같이 설정하면 testfile에 대해서 파일소유자는 읽기,쓰기,실행권한을 모두 가지지만 파일소유그룹과 일반사용자는 읽기와 실행만 가능하다.
>chmod 744 testfile [-rwxr--r--]
위와 같이 설정하면 testfile에 대해서 파일소유자는 읽기,쓰기,실행권한을 모두 가지지만 파일소유그룹과 일반사용자는 읽기만 가능하다.
>chmod 700 testfile [-rwx------]
위와 같이 설정하면 testfile에 대해서 파일소유자는 읽기,쓰기,실행권한을 모두 가지지만 파일소유자외에 모든 사용자에겐 아무런 권한도 주지 않는다.
주로 보안이 목적인 파일에 설정한다.
>chmod 644 testfile [-rw-r--r--]
위와 같이 설정하면 testfile에 대해서 파일소유자는 읽기,쓰기만 가능하며, 파일소유그룹과 일반사용자는 읽기만 가능하다.
주로 웹문서 파일에 설정된다.
>chmod 007 testfile 또는 chmod 7 testfile [-------rwx]
위와 같이 설정하면 testfile 에 대해서 소유자와 소유그룹에게는 아무런 권한을 주지 않고 일반사용자에 대해서만 읽기,쓰기,실행 권한을 주게된다.
위는 사용할일이 없는 퍼미션이지만 8진수를 표현하기 위하여 설명하였다.
즉, 007은 결국 7이므로 위와 같이 설정이 가능하다는 것이다.
>>SetUID,SetGID,Stikybit설정하기
기존에 설정하는 퍼미션앞에 숫자를 하나 더 붙여주면 된다.
1 = stikybit
2 = SetGID
4 = SetUID
를 뜻하며,
설정방법은 아래와 같다.
#chmod 4711 testfile [-rws--x--x] (SetUID설정)
위와 같이 설정하면 파일소유자에게는 읽기,쓰기,실행권한이 주어지며 파일소유그룹과 일반사용자에게는 실행권한만 주어진다. 또한, 파일의 SetUID가 설정되어 파일을 실행하는 사용자의 권한 아닌, 파일소유자의 권한으로 실행파일이 실행된다.
파일소유자에게 실행권한이 없으면 SetUID는 무효화된다. 즉, 4611로 권한이 설정되는경우 SetUID설정은 하지 않은것이나 다름없다.
#chmod 2711 testfile [-rwx--s--x] (SetGID설정)
위와 같이 설정하면 파일소유자에게는 읽기,쓰기,실행권한이 주어지며 파일소유그룹과 일반사용자에게는 실행권한만 주어진다. 또한 파일의 SetGID가 설정되어 파일을 실행하는 사용자의 권한이 아닌, 파일소유그룹의 권한으로 실행된다.
파일그룹에게 실행권한이 없으면 SetGID는 무효화된다. 즉, 2701로 권한이 설정되는경우 SetGID설정을 하지 않는것이나 다름없다.
#chmod 1777 /testdir [drwxrwxrwt] (Stikybit설정)
위와 같이 설정하면 해당디렉토리 내에 있는 파일에 대해서 stikybit가 적용되어, 파일의 소유자만이 해당파일을 수정하고 지울수 있다.
따라서 여러 사용자가 함께 사용하는 공용디렉토리에 주로 사용된다.
-. 두번째, 특정문자를 이용하여 권한설정하기(상대모드)
형식 : chmod [사용자][연산자][권한] [파일명]
8진수를 이용하여 퍼미션을 설정할수도 있으나 특정문자를 이용하여 퍼미션을 설정할수도 있다.
>사용자부분에 들어갈수 있는 문자
u : 파일소유자를 뜻함
g : 파일소유그룹을 뜻함
o : 일반사용자를 뜻함
a : 모든사용자를 뜻함
>연산자부분에 들어갈수 있는 문자
+ : 해당권한을 허용
- : 해당권한을 비허용
= : 해당권한으로 권한설정
>권한부분에 들어갈수 있는 문자
r : 읽기 권한
w : 쓰기 권한
x : 실행 권한
s : SetUID,SetGID 설정
파일소유자,파일소유그룹에만 사용됨
chmod u+s testfile : SetUID설정
chmod g+s testfile : SetGID설정
chmod o+s testfile : 아무런 변환없음
t : Stikybit 설정
일반사용자에게만 사용됨
chmod u+t testdir : 아무런 변화없음
chmod g+t testdir : 아무런 변화없음
chmod o+t testdir : Stikybit설정
X : 파일소유자에게 실행권한이 있는경우에만 소유그룹과 일반사용자에게 실행권한부여
파일소유자에게 실행권한이 있어야만 파일소유그룹또는 일반사용자에게 실행권한을 부여한다.
>파일소유자에게 실행권한이 있는경우
chmod u+X : 아무런 변화없음
chmod g+X : 파일소유그룹에게 실행권한부여
chmod o+X : 일반사용자에게 실행권한부여
이해를 돕도록 아래 몇가지 예를 보자
>모든사용자에게 읽기,쓰기권한 추가(a+rw)
[root@os1 /]# ls -l testfile
---------- 1 root root 0 2013-01-18 03:54 testfile
[root@os1 /]# chmod a+rw testfile
[root@os1 /]# ls -l testfile
-rw-rw-rw- 1 root root 0 2013-01-18 03:54 testfile
>파일소유자에게 실행권한 추가(u+x)
[root@os1 /]# ls -l testfile
-rw-rw-rw- 1 root root 0 2013-01-18 03:54 testfile
[root@os1 /]# chmod u+x testfile
[root@os1 /]# ls -l testfile
-rwxrw-rw- 1 root root 0 2013-01-18 03:54 testfile
>SetUID설정(u+s)
[root@os1 /]# ls -l testfile
-rwxrw-rw- 1 root root 0 2013-01-18 03:54 testfile
[root@os1 /]# chmod u+s testfile
[root@os1 /]# ls -l testfile
-rwsrw-rw- 1 root root 0 2013-01-18 03:54 testfil
>파일소유그룹과 일반사용자의 쓰기권한 비허용(go-w)
[root@os1 /]# ls -l testfile
-rwsrw-rw- 1 root root 0 2013-01-18 03:54 testfile
[root@os1 /]# chmod go-w testfile
[root@os1 /]# ls -l testfile
-rwsr--r-- 1 root root 0 2013-01-18 03:54 testfile
>파일소유그룹과 일반사용자에게 실행권한만 허용(go=x)
[root@os1 /]# ls -l testfile
-rwsr--r-- 1 root root 0 2013-01-18 03:54 testfile
[root@os1 /]# chmod go=x testfile
[root@os1 /]# ls -l testfile
-rws--x--x 1 root root 0 2013-01-18 03:54 testfile
위에서도 볼수 있듯이 내가 지정한 값에 대해서만 변경이 가능하기 때문에 권한이 일정하지 않은 많은 파일에 일괄적으로 특정 권한을 추가하거나 제거하고자 할때 사용하면 용이하다.
다만, 그런경우는 흔치 않기 때문에 대부분 문자를 이용한 권한변경보다는 8진수를 이용한 권한변경을 주로 사용한다.
-. chmod명령어의 주요 옵션
-c : 권한이 변경된 경우에만 권한변경 정보 출력하기
아래의 예를 보면 모든파일을 대상으로 파일소유자에게 실행권한을 추가하는 명령어를 사용했지만 file2 파일에는 이미 파일소유자게에 실행권한이 있어 권한이 변경되지 않았기때문에 아무런 출력도 하지 않고, file1에 대해서만 파일소유자에게 실행권한을 추가하였으므로 권한변경에 대한 정보를 출력한다.
[root@os1 /test]# ls -l
total 0
-rw-r--r-- 1 root root 0 2013-01-18 04:17 file1
-rwxr--r-- 1 root root 0 2013-01-18 04:17 file2
[root@os1 /test]# chmod -c u+x *
mode of 'file1' changed to 0744 (rwxr--r--)
[root@os1 /test]#
-v : 권한변경정보 출력하기
위의 예와 마찬가지로 모든파일에 실행권한을 추가하였다. 하지만 이번엔 권한이 변경되든 변경되지 않든 모두 메시지를 출력한다. 하지만 메시지의 문구는 약간다르다.
변경된 경우 changed를 변경되지 않는 경우 retained를 출력한다.
[root@os1 /test]# ls -l
total 0
-rw-r--r-- 1 root root 0 2013-01-18 04:17 file1
-rwxr--r-- 1 root root 0 2013-01-18 04:17 file2
[root@os1 /test]# chmod -v u+x *
mode of 'file1' changed to 0744 (rwxr--r--)
mode of 'file2' retained as 0744 (rwxr--r--)
-f : 에러메시지를 생략한다.
파일의 권한변경시 발생하는 에러메시지를 출력하지 않는다.
아래처럼 user1소유의 파일을 user2사용자가 권한을 변경하려 하는경우 에러메시지를 출력한다.
하지만 -f옵션을 주면 에러메시지는 출력되지 않는다.
[user2@os1 /test]$ ls -l
-rw-rw-r-- 1 user1 user1 0 Jan 18 04:25 user1
[user2@os1 /test]$ chmod 777 user1
chmod: changing permissions of 'user1': Operation not permitted
[user2@os1 /test]$ chmod 777 user1 -f
[user2@os1 /test]$ ls -l
-rw-rw-r-- 1 user1 user1 0 Jan 18 04:25 user1
-R : 서브디렉토리 및 폴더내 파일까지 일괄적으로 권한을 변경한다.
특정 디렉토리의 권한만이 아닌 디렉토리내에있는 모든 파일까지 권한을 일괄적으로 변경하고자 할때 사용된다.
[root@os1 /]# ls -lR /test
/test:
total 4
drwxr-xr-x 2 root root 4096 2013-01-18 04:30 dir1
-rw-r--r-- 1 root root 0 2013-01-18 04:29 file1
-rw-r--r-- 1 root root 0 2013-01-18 04:29 file2
/test/dir1:
total 0
-rw-r--r-- 1 root root 0 2013-01-18 04:30 file01
-rw-r--r-- 1 root root 0 2013-01-18 04:30 file02
[root@os1 /]# chmod -R 777 /test
[root@os1 /]# ls -lR /test
/test:
total 4
drwxrwxrwx 2 root root 4096 2013-01-18 04:30 dir1
-rwxrwxrwx 1 root root 0 2013-01-18 04:29 file1
-rwxrwxrwx 1 root root 0 2013-01-18 04:29 file2
/test/dir1:
total 0
-rwxrwxrwx 1 root root 0 2013-01-18 04:30 file01
-rwxrwxrwx 1 root root 0 2013-01-18 04:30 file02
참조 : 리눅스 서버관리 실무 바이블 3.0(박성수 저)
[출처] Linux, 파일과 디렉토리의 퍼미션(chmod명령어)|작성자 Youngjae

Posted by w우주z
,

우분투12.04나 11.10 사용자 노트북 무선 네트워크 설정시 문제발생

하드웨어나 소프트웨어에서 차단 할 경우

1. 차단 확인 명령어

    rfkill list wlan 혹은    rfkill list all

   1) 소프트웨어 차단

    ~$ rfkill list all
    1: phy1: Wireless LAN
    Soft blocked: yes
    Hard blocked: no    

   2) 하드웨어 차단

~$ rfkill list all
1: phy1: Wireless LAN
Soft blocked: no
Hard blocked: yes

2.  차단 해제 명령어 (대부분 소프트 웨어경우)

    rfkill unblock wlan 혹은  rfkill unblock all

3.  네트워크 매니저 재시작

    sudo service network-manager restart


출처 : http://www.upubuntu.com/2012/09/solved-wireless-network-detected-but.html

'프로그래밍언어 > Linux' 카테고리의 다른 글

터미널 작업 변환, 백그라운드, 포그라운드  (0) 2013.08.09
chmod 권한 설정  (0) 2013.08.09
TFTP 설정  (0) 2013.07.03
vi 기본설정  (0) 2013.07.03
Ubuntu에서 USB 마운트 하기  (0) 2013.06.17
Posted by w우주z
,

$sudo apt-get install tftpd-hpa tftp-hpa 명령어로 패키지를 설치한다.

 

TFTP 설정

# /ect/default/tftpd-hpa

RUN_DAEMON = "yes"

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/tftpboot"

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="--secure"

 

$sudo mkdir /tftpboot

$sudo chmod 777 /tftpboot

$sudo /etc/init.d/tftp-hpa restart

 

 

tftp 가 자동 시작을 하지 못하는 버그가 있어서 자동 실행을 위해 다음과 같이 설정한다.

$sudo vi /etc/rc.local

sleep 30

service tftpd-hpa restart

부팅후 30초 기다렸다가 tftp 자동 실행

 

 

그냥 terminal 창에서 재시작 하고 싶을 경우는

sudo service tftpd-hpa restart 로 해야한다.

 

'프로그래밍언어 > Linux' 카테고리의 다른 글

chmod 권한 설정  (0) 2013.08.09
우분투 12.04 네트워크 설정 문제  (0) 2013.07.31
vi 기본설정  (0) 2013.07.03
Ubuntu에서 USB 마운트 하기  (0) 2013.06.17
파일명 찾기  (0) 2013.05.29
Posted by w우주z
,

vi ~/.vimrc

명령어로, vi 기본 세팅을 변경 할 수 있다.

set autoindent      " 자동으로 들여쓰기를 한다."
set cindent         " C 프로그래밍을 할때 자동으로 들여쓰기를 한다."
set smartindent     " 좀더 똑똑한 들여쓰기를 위한 옵션이다. "
set textwidth=79    " 만약 79번째 글자를 넘어가면 \
set wrap            " 자동으로 <CR>를 삽입하여 다음 줄로 넘어간다."
set nowrapscan      " 검색할 때 문서의 끝에서 다시 처음으로 돌아가지 않는다."
set nobackup        " 백업 파일을 만들지 않는다."
set visualbell      " 키를 잘못눌렀을 때 삑 소리를 내는 대신 번쩍이게 한다."
set ruler           " 화면 우측 하단에 현재 커서의 위치(줄,칸)를 보여준다."
set tabstop=3       " Tab을 눌렀을 때 8칸 대신 3칸 이동하도록 한다."
set shiftwidth=3    " 자동 들여쓰기를 할때 3칸 들여쓰도록 한다."
set number          " 행번호를 사용한다."
set fencs=ucs-bom,utf-8,euc-kr.latin1 "한글 파일은 euc-kr로 읽어들이며,유니코드는 유니코드로 읽음 설정"
set fileencoding=euc-kr         " 실제로 파일을 저장할때 사용되는 인코딩은 euc-kr"
set background=dark " 하이라이팅 옵션"
set expandtab         " 탭을 입력하면 공백문자로 변환하는 기능을 설정"
set hlsearch        " 검색어를 구문강조해주는 기능"
set ignorecase      " 검색할 때 대소문자 무시하도록 하는 것."
set title " 타이틀바에 현재 편집중인 파일을 표시"

set number   :  줄번호
syntax on    :    문법에 색 넣기
set ai    :    자동행
set background=dark    :    바탕이 흑백일 경우 더 잘 보이게 한다
set si   :   if문 다음에 자동으로 맞추어주기
set tabstop=4   :   텝키의 간격을 4로
set shiftwidth=4   :   자동으로 맞춰주는 간격을 4로
set nobackup   :   백업을 만들지 않는다

set autoindent      " 자동으로 들여쓰기를 한다.
set cindent         " C 프로그래밍을 할때 자동으로 들여쓰기를 한다.
set smartindent     " 좀더 똑똑한 들여쓰기를 위한 옵션이다.
set textwidth=79    " 만약 79번째 글자를 넘어가면 \
set wrap            " 자동으로 <CR>를 삽입하여 다음 줄로 넘어간다.
set nowrapscan      " 검색할 때 문서의 끝에서 다시 처음으로 돌아가지 않는다.
set nobackup        " 백업 파일을 만들지 않는다.
"set visualbell      " 키를 잘못눌렀을 때 삑 소리를 내는 대신 번쩍이게 한다.
set ruler           " 화면 우측 하단에 현재 커서의 위치(줄,칸)를 보여준다.
set tabstop=3       " Tab을 눌렀을 때 8칸 대신 3칸 이동하도록 한다.
set shiftwidth=3    " 자동 들여쓰기를 할때 3칸 들여쓰도록 한다.
set number          " 행번호를 사용한다.
set nobackup        " 백업파일을 생성하지 않는다.
set fencs=ucs-bom,utf-8,euc-kr.latin1 "한글 파일은 euc-kr로 읽어들이며, 유니코드는 유니코드로 읽음 설정
set fileencoding=euc-kr         " 실제로 파일을 저장할때 사용되는 인코딩은 euc-kr
set background=light " 하이라이팅 옵션
set expandtab         " 탭을 입력하면 공백문자로 변환하는 기능을 설정
set hlsearch        " 검색어를 구문강조해주는 기능
set ignorecase      " 검색할 때 대소문자 무시하도록 하는 것.
set title " 타이틀바에 현재 편집중인 파일을 표시

"================= Key 매핑 ========================

map <PageUp> <C-U><C-U> "맨 위로
map <PageDown> <C-D><C-D>  "맨 마지막으로
map <F2> :25vs ./<CR>   "F2: 탐색기 열기
map <F3> :only<CR>    "창 최대화
map <F12> v]} zf "폴딩

"================= Gcc 컴파일 & 실행 설정 ==============

map <F9> :w!<cr> "현재 작업 저장
map <F10> :!g++ -W -Wall -O2 -g % -o %<<cr>  "컴파일
map <F11> :!%<<cr> "실행

 

위의 참고 명령중 필요한 명령어들을 사용하면 default로 설정 할 수 있다.

 

 

참고 : http://citylock.tistory.com/161

 

'프로그래밍언어 > Linux' 카테고리의 다른 글

우분투 12.04 네트워크 설정 문제  (0) 2013.07.31
TFTP 설정  (0) 2013.07.03
Ubuntu에서 USB 마운트 하기  (0) 2013.06.17
파일명 찾기  (0) 2013.05.29
makefile 관련 문법, 주의사항 및 팁  (0) 2013.04.30
Posted by w우주z
,
크리에이티브 커먼즈 라이선스
Creative Commons License

1.스토리지의 정보를 조회합니다.

$ sudo fdisk -l(L입니다. 소문자...)


2.마운트 시킬 포인트를 만듭니다.

$ sudo mkdir /media/usb_storage


3.마운트 합니다.

$ sudo mount -t vfat /dev/sdb /usb_storage //fat계열로 포멧된 경우

   또는

$ sudo mount -t ntfs-3g /dev/sdb /usb_storage //ntfs계열로 포멧된 경우


## 여기에서 /dev/sdb는 fdisk -l을 했을 때 보이는 내용을 가지고 유추한 것입니다.

## 아래 사진을 참고하시기 바랍니다.




## 위에 빨간 부분으로 밑 줄이 그어져 있는 부분이 제가 추가한 USB스토리지의 정보입니다. 

## 그리고 /dev/sdb ^(띄어쓰기) /media/usb_storage를 하게 되면 sdb를 usb_storage에 마운트 하겠다는 의미가 되어 마운트가 정상 적으로 이뤄지게 됩니다.

'프로그래밍언어 > Linux' 카테고리의 다른 글

TFTP 설정  (0) 2013.07.03
vi 기본설정  (0) 2013.07.03
파일명 찾기  (0) 2013.05.29
makefile 관련 문법, 주의사항 및 팁  (0) 2013.04.30
파일시스템 mount 옵션 (/etc/fstab 설정)  (0) 2013.04.30
Posted by w우주z
,

파일 찾기 (파일명 검색)


현재 디렉토리에서, pl 확장자를 가진 모든 파일 찾기

find -name '*.pl'


(현재 디렉토리 밑의 하위 디렉토리까지 다 찾습니다.)


루트에서부터, 즉 전체 하드에서, pl 확장자를 가진 모든 파일 찾기

find / -name '*.pl'




전체 하드 디스크에서, 파일명이 ab 로 시작하는 모든 파일 찾기

find / -name 'ab*'




전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기

find / -name '.bash*'




전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
+ ls 명령 형식으로 출력

find / -name '.bash*' -ls


뒤에 -ls 라는 옵션을 붙이면 됩니다.


디렉토리명 찾기


전체 하드 디스크에서, 디렉토리 이름이 et 로 시작하는 모든 디렉토리 찾기

find / -name 'et*' -type d

'프로그래밍언어 > Linux' 카테고리의 다른 글

vi 기본설정  (0) 2013.07.03
Ubuntu에서 USB 마운트 하기  (0) 2013.06.17
makefile 관련 문법, 주의사항 및 팁  (0) 2013.04.30
파일시스템 mount 옵션 (/etc/fstab 설정)  (0) 2013.04.30
nfs 설정  (0) 2013.03.19
Posted by w우주z
,

3. make 강좌

3.1 머릿말

소스 한두 개로 이루어진 C/C++ 언어 교양과목 과제물을 제출하는 것이 아니라면 약간만 프로젝트가 커져도 소스는 감당할 수 없을 정도로 불어나게 되고 그것을 일일이 gcc 명령행 방식으로 처리한다는 것은 상당히 곤역스러운 일입니다.

그래서 하나의 프로젝트를 효율적으로 관리하고 일관성있게 관리하기 위하여 Makefile 이라는 형식을 사용하고 make 라는 유틸리티를 사용합니다.

여러분이 리눅스에서 소스 형태로 되어 있는 것을 가져와서 컴파일하게 되면 보통 마지막에는 make 라는 명령, 또는 make <어쩌구> 이런 식으로 치게 됩니다.

make 라는 유틸리티는 보통 현재 디렉토리에 Makefile 또는 makefile 이라는 일정한 규칙을 준수하여 만든 화일의 내용을 읽어서 목표 화일(target)을 만들어냅니다. Makefile의 이름을 다르게 명시하고 싶을 때는 다음과 같이 합니다.

        $ make -f Makefile.linux

보통 멀티플랫폼용 소스들은 Makefile.solaris, Makefile.freebsd, Makefile.hp 이런 식으로 Makefile 을 여러 개 만들어두는 경향이 있지요. 또는 적절하게 만들어두어 다음과 같이 make <플랫폼> 라는 식으로 하면 컴파일되도록 하기도 합니다.

        $ make linux

이런 일은 보통의 관례일 뿐이죠. 더 예를 들어보자면 이런 식입니다. 우리가 커널 컴파일 작업할 때를 보십시요.

        $ make config           /* 설정 작업을 한다 */
        $ make dep              /* 화일 의존성을 검사한다 */
        $ make clean            /* 만든 화일들을 지우고 
                                   깨긋한 상태로 만든다 */
        $ make zImage           /* zImage(압축커널)를 만든다 */
        $ make zlilo            /* 커널을 만들고 LILO를 설정한다 */
        $ make bzImage          /* bzImage(비대압축커널)를 만든다 */
        $ make modules          /* 커널 모듈을 만든다 */
        $ make modules_install  /* 커널 모듈을 인스톨한다 */

복잡한 것같아도 우리는 항상 make, make, make ... 일관성있게 make 라고만 쳐주면 됩니다. ^^ 분량이 작은 소스들의 경우에는 일반적으로 다음만 해도 되는 경우가 많죠.

        $ make  또는 make all
        $ make install

영어권에 사는 사람들에게는 더욱 친밀하게 느껴질 겁니다. 그렇겠죠? ``만들라!''라는 동사를 사용하고 있는 것이고 그 다음에는 그들의 정상적인 어순에 따라 목적어가 나오죠.

        $ make install.man

또한 관례상 ``맨페이지'' 같은 것은 별도로 인스톨하도록 배려하는 경우가 많습니다. 프로그램에 대해 잘 아는 사람이라면 맨페이지를 자질구레하게 설치하고 싶지 않을 때도 많으니까요.

다른 사람에게 공개하는 소스라면 더욱 make 를 사용해야 합니다. 그들뿐 아니라 여러분 자신도 make 라고만 치면 원하는 결과가 나올 수 있도록 하는 것이 좋습니다. 많은 소스를 작성하다 보면 여러분 스스로도 까먹기 쉽상입니다.

일단 make를 사용하는 일반적인 관례를 익히는 것이 중요하다고 봅니다. 리눅스 배포판 패키지만 설치하지 마시고 적극적으로 소스를 가져다 컴파일해보십시요. 실력이든 꽁수든 늘기 시작하면 여러분은 더욱 행복해지실 수 있습니다. =)

3.2 make 시작해 봅시다.

일관성있게 make라고만 치면 모든 일이 술술 풀려나가도록 하는 마술은 Makefile이라는 것을 어떻게 여러분이 잘 만들어두는가에 따라 결정됩니다. 바로 이 Makefile 을 어떻게 만드는지에 대하여 오늘 알아봅니다.

상황 1)

        $ gcc -o foo foo.c bar.c

여기서 foo 라는 실행화일은 foo.c, bar.c 라는 2 개의 소스로부터 만들어지고 있습니다.

여러분이 지금 계속 코딩을 하고 있는 중이라면 이 정도쯤이야 가상콘솔 또는 X 터미널을 여러 개 열어두고 편집하면서 쉘의 히스토리 기능을 사용하면 그만이지만 하루 이틀 계속 해간다고 하면 곤역스러운 일이 아닐 수 없습니다.

자, 실전으로 들어가버리겠습니다. vi Makefile 해서 만들어봅시다. ( 편집기는 여러분 마음 )


 foo:   foo.o bar.o 
        gcc -o foo foo.o bar.o

 foo.o: foo.c
        gcc -c foo.c

 bar.o: bar.c
        gcc -c bar.c

입력하는데 주의하실 것이 있습니다. 자, 위 화일을 보십시요. 형식은 다음과 같습니다.


 목표:  목표를 만드는데 필요한 구성요소들...
        목표를 달성하기 위한 명령 1
        목표를 달성하기 위한 명령 2
        ...

Makefile은 조금만 실수해도 일을 망치게 됩니다.

맨 첫번째 목표인 foo 를 살펴보죠. 맨 첫 칸에 foo: 라고 입력하고 나서 foo가 만들어지기 위해서 필요한 구성요소를 적어줍니다. foo가 만들어지기 위해서는 컴파일된 foo.o, bar.o 가 필요합니다. 각 요소를 구분하는데 있어 콤마(,) 같은 건 사용하지 않고 공백으로 합니다.

중요! 중요! 그 다음 줄로 넘어가서는 <탭>키를 누릅니다. 꼭 한 번 이상은 눌러야 합니다. 절대 스페이스키나 다른 키는 사용해선 안됩니다. 목표 화일을 만들어내기 위한 명령에 해당하는 줄들은 모두 <탭>키로 시작해야 합니다. Makefile 만들기에서 제일 중요한 내용입니다. <탭>키를 사용해야 한다는 사실, 바로 이것이 중요한 사실입니다.

foo를 만들기 위한 명령은 바로 gcc -o foo foo.o bar.o 입니다.

다시 한 번 해석하면 이렇습니다. foo 를 만들기 위해서는 foo.o와 bar.o가 우선 필요하다.( foo: foo.o bar.o )

일단 foo.o, bar.o 가 만들어져 있다면 우리는 gcc -o foo foo.o bar.o 를 실행하여 foo 를 만든다.

자, 이제부터 사슬처럼 엮어나가는 일만 남았습니다.

foo를 만들려고 하니 foo.o와 bar.o 가 필요합니다!

그렇다면 foo.o는 어떻게 만들죠?


 
 foo.o: foo.c
        gcc -c foo.c

바로 이 부분입니다. foo.o는 foo.c를 필요로 하며 만드는 방법은 gcc -c foo.c입니다.

그 다음 bar.o 는 어떻게 만들죠?


 bar.o: bar.c
        gcc -c bar.c

이것을 만들려면 이것이 필요하고 그것을 만들기 위해서는 또 이것이 필요하고...

소스를 만들어서 해봅시다.

  • foo.c 의 내용

extern void bar ( void );

int
main ( void )
{
  bar ();
  return 0;
}

  • bar.c 의 내용

#include <stdio.h>

void
bar ( void )
{
  printf ( "Good bye, my love.\n" );
}

Makefile을 위처럼 만들어두고 그냥 해보죠.

        $ make 또는 make foo
        gcc -c foo.c
        gcc -c bar.c
        gcc -o foo foo.o bar.o

명령이 실행되는 순서를 잘 보십시요. 여기서 감이 와야 합니다. ^^

        $ ./foo
        Good bye, my love.

다시 한 번 실행해볼까요?

        $ make
        make: `foo' is up to date.

똑똑한 make는 foo를 다시 만들 필요가 없다고 생각하고 더 이상 처리하지 않습니다.

이번에는 foo.c 를 약간만 고쳐봅시다. return 0; 라는 문장을 exit (0); 라는문장으로 바꾸어보죠. 그리고 다시 한 번 다음과 같이 합니다.

        $ make
        gcc -c foo.c
        gcc -o foo foo.o bar.o

자, 우리가 원하던 결과입니다. 당연히 foo.c 만 변화되었으므로 foo.o 를 만들고 foo.o가 갱신되었으므로 foo도 다시 만듭니다. 하지만 bar.c는 아무변화를 겪지 않았으므로 이미 만들어둔 bar.o 는 그대로 둡니다.

소스크기가 늘면 늘수록 이처럼 똑똑한 처리가 필요하지요.

        $ rm -f foo
        $ make
        gcc -o foo foo.o bar.o

이것도 우리가 원하던 결과입니다. foo 실행화일만 살짝 지웠더니 make는 알아서 이미 있는 foo.o, bar.o 를 가지고 foo 를 만들어냅니다. :)

상황 2) 재미를 들였다면 이번에는 청소작업을 해보기로 합시다.


 clean:
        rm -f foo foo.o bar.o

이 두 줄을 위에서 만든 Makefile 뒷부분에 추가해보도록 합시다.

        $ make clean
        rm -f foo foo.o bar.o
        $ make
        gcc -c foo.c
        gcc -c bar.c
        gcc -o foo foo.o bar.o

make clean이라는 작업 또한 중요한 작업입니다. 확실히 청소를 보장해주어야 하거든요.

make, make clean 이런 것이 되면 상당히 멋진 Makefile 이라고 볼 수 있죠? 이번 clean 에서 보여드리고자 하는 부분은 이런 것입니다.

우리의 머리 속에 clean 이라는 목표는 단지 화일들을 지우는 일입니다.

clean: 옆에 아무런 연관 화일들이 없지요?

그리고 오로지 rm -f foo foo.o bar.o 라는 명령만 있을 뿐입니다. clean이라는 목표를 수행하기 위해 필요한 것은 없습니다. 그러므로 적지 않았으며 타당한 make 문법입니다.

상황 3)


 all: foo

이 한 줄을 Makefile 맨 앞에 넣어두도록 합시다.

        $ make clean
        $ make all
        gcc -c foo.c
        gcc -c bar.c
        gcc -o foo foo.o bar.o

이번예는 all 이라는 목표에 그 밑에 나오는 다른 목표만이 들어있을 뿐, 아무런 명령도 없는 경우입니다. 보통 우리는 make all 하면 관련된 모든 것들이 만들어지길 원합니다.

 all: foo1 foo2 foo3
 foo1: <생략>
 foo2: <생략>
 foo3: <생략>

이런 식으로 해두면 어떤 장점이 있는지 알아봅시다.

보통 make all 하면 foo1, foo2, foo3가 모두 만들어집니다. 그런데 어떤 경우에는 foo1만 또는 foo2만을 만들고 싶을 때도 있을 겁니다. 괜히 필요없는 foo3 같은 것을 컴파일하느라 시간을 보내기 싫으므로 우리는 단지 다음과 같이만 할 겁니다.

        $ make foo1
        $ make foo2

물론 일반적으로 다 만들고 싶을 때는 make all 이라고만 하면 됩니다.

make all 이건 아주 일반적인 관례이지요. 그리고 외우기도 쉽잖아요?

3.3 꼬리말 규칙, 패턴 규칙

잘 관찰해보시면 어쩌구.c -----------> 어쩌구.o 라는 관계가 매번 등장함을 알 수 있습니다. 이것을 매번 반복한다는 것은 소스 화일이 한 두 개 정도일 때야 모르지만 수십 개가 넘게 되면 정말 곤역스러운 일이라고 하지 않을 수 없지요.

다음과 같은 표현을 Makefile 에서 보는 경우가 많을 겁니다.


 .c.o:
        gcc -c ${CFLAGS} $<

여기서 .c.o 의 의미를 생각해보겠습니다. ".c 를 입력화일로 받고 .o 화일을 만든다"

        gcc -c ${CFLAGS} $<

이 문자을 보면 일단 눈에 띄는 것은 ${CFLAGS}라는 표현과 $< 라는 암호와도 같은 표현입니다. 여기서는 일단 $< 라는 기호의 의미를 알아보겠습니다.

유닉스에서 쉘을 잘 구사하시는 분들은 눈치채셨을 겁니다. 작다 표시(<)는 리다이렉션에서 입력을 의미하는 것을 아십니까? 그렇다면 $< 는 바로 .c.o 라는 표현에서 .c 즉 C 소스 화일을 의미합니다.

예를 들어 foo.c 가 있다면 자동으로

        gcc -c ${CFLAGS} foo.c

가 수행되며 gcc 에 -c 옵션이 붙었으므로 foo.o 화일이 만들어질 것입니다.

3.4 GNU make 확장 기능

.c.o 라는 전통적인 표현 말고 GNU 버전( 우리가 리눅스에서 사용하는 것은 바로 이것입니다 )의 make 에서 사용하는 방법을 알아봅시다.

위에서 예로 든 것을 GNU 버전의 make 에서 지원하는 확장문법을 사용하면 다음과 같습니다.


 %.o: %.c
        gcc -c -o $@ ${CFLAGS} $<

그냥 설명 전에 잘 살펴보시기 바랍니다.

우리가 위에서 알아보았던 표준적인 .c.o 라는 꼬리말 규칙(Suffix rule)보다 훨씬 논리적이라는 것을 발견하셨습니까?

우리가 바로 전 강의에서 main.o : main.c 이런 식으로 표현한 것과 같은 맥락이지요? 이것을 우리는 패턴 규칙(Pattern rule)이라고 부릅니다. 콜론(:) 오른쪽이 입력 화일이고 왼쪽이 목표 화일입니다. 화일명 대신 퍼센트(%) 문자를 사용한 것만 유의하면 됩니다. 여기서 foo.c 라는 입력화일이 있다면 % 기호는 foo 만을 나타냅니다.

        gcc -c -o $@ ${CFLAGS} $<

라는 표현을 해석해봅시다. ( 후  마치 고대 문자판을 해석하는 기분이 안드십니까? ^^ )

$< 는 입력화일을 의미하고 $@ 은 출력화일을 의미합니다. .c.o와 같은 꼬리말 규칙과 별 다를 바 없다고 생각하실 지 모르나 -o $@ 를 통하여 .o 라는 이름 말고 전혀 다른 일도 해낼 수 있습니다.

다음 예는 그냥 이런 예가 있다는 것만 한 번 보아두시기 바랍니다.


 %_dbg.o: %.c
        gcc -c -g -o $@ ${CFLAG} $<

 DEBUG_OBJECTS = main_dbg.o edit_dbg.o

 edimh_dbg: $(DEBUG_OBJECTS)
        gcc -o $@ $(DEBUG_OBJECTS)

%_dbg.o 라는 표현을 잘 보십시요. foobar.c 라는 입력화일(%.c)이 있다면 % 기호는 foobar 를 가리키므로 %_dbg.o 는 결국 foobar_dbg.o 가 됩니다.

기호정리

 $<     입력 화일을 의미합니다. 콜론의 오른쪽에 오는 패턴을 치환합니다.
 $@     출력 화일을 의미합니다. 콜론의 왼쪽에 오는 패턴을 치환합니다.
 $*     입력 화일에서 꼬리말(.c, .s 등)을 떼넨 화일명을 나타냅니다.

역시 GNU 버전이라는 생각이 들지 않으시는지요?

3.5 매크로(Macro) 기능

앞에서도 잠깐씩 나온 ${CFLAGS} 라는 표현을 보도록 합시다.

gcc 옵션도 많이 알고 make을 능수능란하게 다룰 수 있는 사람들은 다음과 같이 해서 자신의 프로그램에 딱 맞는 gcc 옵션이 무엇인지 알아내려고 할 것입니다.

 $ make CFLAGS="-O4"
 $ make CFLAGS="-g"

이제 매크로에 대한 이야기를 나눠볼까 합니다. 이 이야기를 조금 해야만 위의 예를 이해할 수 있다고 보기 때문입니다. 그냥 시험삼아 해보십시다. 새로운 것을 배우기 위해서는 꼭 어떤 댓가가 와야만 한다는 생각을 버려야겠지요?


 myprog: main.o foo.o
        gcc -o $@ main.o foo.o

이것을 괜히 어렵게 매크로를 이용하여 표현해보기로 하겠습니다.


 OBJECTS = main.o foo.o
 myprog: $(OBJECTS)
        gcc -o $@ $(OBJECTS)

여러분은 보통 긴 Makefile을 훔쳐 볼 때 이런 매크로가 엄청나게 많다는 것을 보신 적이 있을 겁니다. ^^


 ROOT = /usr/local
 HEADERS = $(ROOT)/include
 SOURCES = $(ROOT)/src

예상하시듯 위에서 HEADERS는 당연히 /usr/local/include가 되겠지요?

다음과 같은 문장도 있습니다.


 ifdef XPM
     LINK_DEF = -DXPM
 endif

  $ make XPM=yes

이렇게 하면 ifdef   endif 부분이 처리됩니다.

자, make CFLAGS="-O" 이런 명령을 한 번 봅시다. ${CFLAGS}에서 {} 표현은 유닉스 쉘에서 변수값을 알아낼 때 쓰는 표현입니다. CFLAGS 값을 여러분이 Makefile에 고정적으로 집어넣지 않고 그냥 make 만 실행하는 사람에게 선택권을 주기 위해서 사용하거나 자기 스스로 어떤 옵션이 제일 잘 맞는지 알아보기 위해서 사용합니다. 다른 옵션으로 컴파일하는 것마다 일일이 다른 Makefile을 만들지 말고 가변적인 부분을 변수화하는 것이 좋습니다.

3.6 마지막 주의 사항


 target:
        cd obj
        HOST_DIR=/home/e 
        mv *.o $HOST_DIR

하나의 목표에 대하여 여러 명령을 쓰면 예기치 않은 일이 벌어집니다. 기술적으로 말하자면 각 명령은 각자의 서브쉘에서 실행되므로 전혀 연관이 없습니다. -.- cd obj 도 하나의 쉘에서 HOST_DIR=/home/e도 하나의 쉘에서 나머지도 마찬가지입니다. 각기 다른 쉘에서 작업한 것처럼 되므로 cd obj 했다 하더라도 다음번 명령의 위치는 obj 디렉토리가 아니라 그대로 변함이 없이 현재 디렉토리입니다. 세번째 명령에서 HOST_DIR 변수를 찾으려 하지만 두번째 명령이 종료한 후 HOST_DIR 변수는 사라집니다.


 target:
        cd obj ; \
        HOST_DIR=/hom/e ; \
        mv *.o $$HOST_DIR

이렇게 적어주셔야 합니다. 세미콜론으로 각 명령을 구분하지요. 처음 두 줄의 마지막에 쓰인 역슬래쉬(\) 문자는 한 줄에 쓸 것을 여러 줄로 나누어 쓴다는 것을 나타내고 있습니다.

주의! 세번째 줄에 $HOST_DIR이 아니라 $$HOST_DIR인 것을 명심하십시요. 예를 하나 들어보죠. ^^


 all:
         HELLO="안녕하세요?";\
         echo $HELLO

Makefile의 내용을 이렇게 간단하게 만듭니다.

 $ make
 HELLO="안녕하세요?";\
 echo ELLO
 ELLO
<verb>

 우리가 원하는 결과가 아니죠?

 $HELLO를 $$HELLO로 바꾸어보십시요.

<verb>
 $ make
 HELLO="안녕하세요?";\
 echo $HELLO
 안녕하세요?


 all:
         @HELLO="안녕하세요?"; echo $$HELLO

명령의 맨 처음에 @ 문자를 붙여봅시다.

 $ make
 안녕하세요?

3.7 잠시 마치면서

Makefile에 대한 내용은 이것보다 훨씬 내용이 많습니다. 하지만 모든 것을 다 알고 시작할 수는 없겠지요? 이 정도면 어느 정도 충분하게 창피하지 않을 정도의 Makefile을 만들 수 있습니다.

참고로 autoconf/automake라고 하는 아주 훌륭한 GNU make 유틸리티를 시간나면 배워보시는 것도 좋습니다.

http://wiki.kldp.org/KoreanDoc/html/gcc_and_make/gcc_and_make-3.html

 

 

 

추가 참고

http://greenfishblog.tistory.com/150

'프로그래밍언어 > Linux' 카테고리의 다른 글

Ubuntu에서 USB 마운트 하기  (0) 2013.06.17
파일명 찾기  (0) 2013.05.29
파일시스템 mount 옵션 (/etc/fstab 설정)  (0) 2013.04.30
nfs 설정  (0) 2013.03.19
PATH  (0) 2013.03.18
Posted by w우주z
,

# cat /etc/fstab

[파일시스템 장치명] [마운트 포인트] [파일시스템 종류] [옵션] [dump관련설정] [파일점검 옵션]
LABEL=/                         /                         ext3     defaults                  1 1
LABEL=/boot1                 /boot                    ext3     defaults                 1 2
tmpfs                             /dev/shm              tmpfs   defaults                 0 0
devpts                           /dev/pts                devpts  gid=5,mode=620      0 0
sysfs                             /sys                     sysfs   defaults                 0 0
proc                              /proc                     proc    defaults                 0 0
LABEL=SWAP-sda3         swap                    swap    defaults                0 0

 

-파일시스템 장치명 : 장치명을 지정

-마운트 포인트 : 장치가 연결된 마운트 지점

-파일시스템 종류 : 파티션이 사용하는 파일시스템 지정

-옵션 : 파일시스템의 속성을 설정하는 옵션

defaults (rw, nouser,auto,exec suid 속성을 모두 가지는 옵션)

auto : 부팅시 자동 마운트

noauto : 부팅시 자동마운트 안함

exec : 실행파일이 실행되는 것을 허용

no exec : 실행파일이 실행되는 것을 허용 안함

suid : setuid, setgid의 사용을 허용하는 옵션

nosuid : setuid, setgid의 사용을 거부

ro (read only) : 읽기 전용

rw (ead write) : 읽고 쓰기 가능

user : 일반 계정 사용자들도 마운트 할 수 있는 옵션

nouser : root만 mount 가능

usrquota : 일반 사용자 quota적용

grpquota : 그룹 quota 적용

 

-dump 관련 설정

0 : 덤프되지 않은 파일시스템

1 : 데이터 백업을 위해 dump가능

 

-파일점검 옵션

0 : 부팅시 fsck를 사용하지 않음

1 : 루트 파일시스템을 의미

2 : 루트 파일시스템 이외의 파일시스템을 의미

 

'프로그래밍언어 > Linux' 카테고리의 다른 글

파일명 찾기  (0) 2013.05.29
makefile 관련 문법, 주의사항 및 팁  (0) 2013.04.30
nfs 설정  (0) 2013.03.19
PATH  (0) 2013.03.18
하드링크, 심볼릭 링크 명령어 ln  (0) 2013.03.18
Posted by w우주z
,

sudo apt-get install nfs-kernel-server nfs-common portmap

명령어로 설치 할 것

 

sudo vi /etc/exports 파일에 아래 내용을 추가한후, init.d에서 nfs 데몬 restart 하면 된다.

/home/builder/work *(rw,sync,no_root_squash)

sudo /etc/init.d/nfs-kernel-server restart (재실행)

'프로그래밍언어 > Linux' 카테고리의 다른 글

makefile 관련 문법, 주의사항 및 팁  (0) 2013.04.30
파일시스템 mount 옵션 (/etc/fstab 설정)  (0) 2013.04.30
PATH  (0) 2013.03.18
하드링크, 심볼릭 링크 명령어 ln  (0) 2013.03.18
리눅스 쉘 과 사용법  (0) 2013.03.18
Posted by w우주z
,