반응형
반응형
반응형

먼저 쉘 확인하기..

 

echo $SHELL

 

ksh : korn shell

csh : C shell

sh : bourne shell

bash : bash shell

 

이다..

 

쉘 바꾸기는 간단..

 

# 에서 korn shell 로 바꿀려면

# ksh

라고 입력하면 끝..

 

다른 쉘도 마찬가지..

 

만약 로그인 할때마다 내가 원하는 쉘로 바꾸고 싶다면?

 

etc/passwd 파일을 연다..

 

그러면..

root:x:0:1:Super-User:/:/sbin/sh
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
sys:x:3:3::/:
adm:x:4:4:Admin:/var/adm:
lp:x:71:8:Line Printer Admin:/usr/spool/lp:
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
smmsp:x:25:25:SendMail Message Submission Program:/:
listen:x:37:4:Network Admin:/usr/net/nls:
nobody:x:60001:60001:Nobody:/:
noaccess:x:60002:60002:No Access User:/:
nobody4:x:65534:65534:SunOS 4.x Nobody:/:
oracle:x:301:300::/oracle/app/oracle/product/9.2.0:/bin/ksh
idctech:x:302:1::/home/idctech:/bin/ksh
indi:x:303:1::/home/indi:/bin/ksh
tuxedo:x:304:1::/export/home/tuxedo:/bin/ksh

 

이런 것들이 나오는데..여기서 원하는 쉘로 바꿔주면 된다.

 

root 의 쉘을 korn 쉘로 바꿀려면

 

root:x:0:1:Super-User:/:/bin/ksh:

 

로 바꿔주면 끝..

 

아..이 파일에서 권한과 그룹도 같이 설정 해줄수 있다..

 

tuxedo:x:304:1::/export/home/tuxedo:/bin/ksh

 

에서 304 가 owner 1 이 그룹..

 

이걸 원하는 걸루 바꿔 주면 됨..

 

P.S root 의 쉘은 웬만하면 바꾸지 말것..로그인 안되는 수가 있단다..

반응형

'OS > Linux' 카테고리의 다른 글

path 추가  (0) 2009.02.11
du 명령어 (파일및 디렉토리의 용량을 확인한다.)  (0) 2009.02.11
scp 파일 가져오기.  (1) 2009.02.11
[VI] vi 에서 utf-8 형식의 글 보기.  (0) 2009.02.11
tar 압축  (1) 2009.02.11
반응형
scp childeye@server 주소:파일경로 .
반응형

'OS > Linux' 카테고리의 다른 글

du 명령어 (파일및 디렉토리의 용량을 확인한다.)  (0) 2009.02.11
쉘바꾸기  (0) 2009.02.11
[VI] vi 에서 utf-8 형식의 글 보기.  (0) 2009.02.11
tar 압축  (1) 2009.02.11
[VI] vi 한글깨짐 현상  (1) 2009.02.11
반응형
set tenc=korea
set enc=utf-8

~/.vimrc 파일
반응형

'OS > Linux' 카테고리의 다른 글

쉘바꾸기  (0) 2009.02.11
scp 파일 가져오기.  (1) 2009.02.11
tar 압축  (1) 2009.02.11
[VI] vi 한글깨짐 현상  (1) 2009.02.11
[VI] vi 색상 바꾸기 - vim 파일(putty.vim)  (1) 2009.02.11
반응형

tar - GNU 버전 tar 저장 도우미

이 설명서는 tarfile 이라고 알려진 저장 파일을 묶거나 풀 수 있도록 만들어 진
GNU 버전 tar 저장 프로그램에 대한 설명이다. tarfile 은 테이프 드라이브에 저
장할 수도 있고, tarfile 을 일반적인 보통 파일로 쓸 수도 있다. tar 의 첫번째
인수로는 반드시 Acdrtux 중 하나의 옵션이 들어가야 하고, 다른 선택적인 기능이
 덧붙여진다. tar 의 마지막 인수로는 압축될 파일이나 디렉토리의 이름이 오게
된다. 디렉토리 이름이 사용될 경우 언제나 하위 디렉토리가 함께 저장된다.

가장 많이 사용하는 일반적인 옵션

[압축할 때] tar cvzf 파일명.tar.gz <디렉토리> 또는 파일
[압축 해제] tar xvzf 파일명.tar.gz

[예제]
tar -xvvf foo.tar : foo.tar 파일을 푼다.
tar -xvvzf foo.tar.gz : gzip으로 압축된 foo.tar.gz 파일을 푼다.
tar -cvvf foo.tar foo/ : foo 디렉토리에 있는 내용물을 foo.tar 파일로 묶는다.

기능 옵션
반드시 아래 옵션들 중 하나가 들어가야 한다.
-A, --catenate, --concatenate : 저장 파일에 tar 파일을 추가한다.
-c, --create : 새 저장 파일을 만든다.
-d, --diff, --compare : 저장 파일 혹은 파일 시스템 간의 다른 점을 찾는다.
--delete : 저장 파일에서 지운다. (자기 테이프에는 쓰면 안됨!)
-r, --append : 저장 파일의 끝에 파일을 덧붙인다.
-t, --list : 저장 파일의 내용 목록을 보여준다.
-u, --update : 저장 파일에 저장된 사본보다 새로운 파일만을 덧붙인다.
-x, --extract, --get : 저장된 것에서 풀어낸다.

부가적인 옵션
--atime-preserve : 덤프된 파일의 접근 시간을 바꾸지 않는다.
-b, --block-size N : 블럭 크기를 N x 512 바이트로 정한다. (기본값 N = 20)
-B, --read-full-blocks : 읽은 만큼 블럭을 재지정한다. (4.2BSD 파이프를 읽기 위함)
-C, --directory DIR : DIR 디렉토리로 바꾸고 작업을 한다.
--checkpoint : 저장 파일을 읽는 동안 디렉토리 이름을 출력한다.
-f, --file [HOSTNAME:]F : 저장 파일 혹은 장치 파일 F에 저장한다.
 (기본 "-", 표준입/출력을 나타낸다.)
--force-local : colon 문자가 있더라도 저장 파일을 지역 파일로 처리한다.
-F, --info-script F --new-volume-script F : run script at end of each tape (implies -M)
 테이프의 끝에 도달하면 스크립트를 실행한다. (-M 이 포함된다.)
-G, --incremental : 이전 GNU 형식으로 incremental 백업을 만들거나 목록을 보거나 풀어낸다.
-g, --listed-incremental F : 새로운 GNU 형식으로 incremental 백업을 만들거나 목록을 보거나
 풀어낸다.
-h, --dereference : 심볼릭 링크를 묶지 않는다. 그것이 가리키는 파일을 묶는다.
-i, --ignore-zeros : 크기가 0인 것은 무시한다. (보통 EOF를 의미한다.)
-j, --bzip2 : bzip2 필터를 사용하여 .bz2 파일을 푼다.
--ignore-failed-read : 읽을 수 없는 파일이 있더라도 종료 코드 0을 출력하지 않는다.
-k, --keep-old-files : 기존에 있는 파일을 유지한다. 파일이 있으면 덮어쓰지 않는다.
-K, --starting-file F : 저장 파일에 있는 파일 F에서부터 시작한다.
-l, --one-file-system : 저장 파일을 만들 때 로컬 파일 시스템 안의 놓는다.
-L, --tape-length N : N * 1024 바이트를 쓴 다음 테이프를 바꾼다.
-m, --modification-time : 파일의 변경 시간 정보를 유지하지 않는다.
-M, --multi-volume : 여러 개로 나눠진 저장 파일로 만들거나 목록을 보거나 풀어낸다.
-N, --after-date DATE, --newer DATE : 주어진 DATE 보다 새로운 파일만 저장한다.
-o, --old-archive, --portability : ANSI 형식 대신 V7 형식으로 저장한다.
-O, --to-stdout : 표준 출력으로 파일들을 풀어낸다.
-p, --same-permissions, --preserve-permissions : 모든 퍼미션 정보를 유지한다.
-P, --absolute-paths : 파일 이름의 맨 앞 `/' 문자를 버리지 않는다.
--preserve : -p 옵션과 -s 옵션을 함께 사용한 것과 같다.
-R, --record-number : 저장 파일의 레코드 번호를 각각의 메시지로 보여준다.
--remove-files : 파일을 저장 파일에 덧붙인 다음 파일을 지운다.
-s, --same-order, --preserve-order : 저장 파일 목록과 똑같은 순서로 풀어낸다.
--same-owner : 같은 사용자 소유권으로 파일들을 풀어낸다.
--numeric-owner : user/group 이름으로 항상 숫자를 사용한다.
-S, --sparse : 듬성한 파일을 효율적으로 다룬다.
-T, --files-from F : 파일 F에서 목록을 읽어 추출하거나 만든다.
--null : -T reads null-terminated names, disable -C -C를 비활성화하고, -T로 읽을 때 null로 끝
 나는 이름을 읽는다.
--totals : --create로 만들어진 바이트 총합을 출력한다.
-v, --verbose : 처리중인 파일을 자세하게 보여준다.
-V, --label NAME : 저장 파일의 볼륨 이름을 NAME으로 한다.
--version : tar 프로그램의 버전 정보를 출력한다.
-w, --interactive, --confirmation : 각각을 처리할 때 마다 물어본다.
-W, --verify : attempt to verify the archive after writing it 저장 파일을 쓴 후에 저장 파일을
 점검한다.
--exclude=FILE : FILE을 제외한다.
-X, --exclude-from FILE : FILE 목록에 있는 것을 제외한다.
-Z, --compress, --uncompress
compress로 압축하거나 푼다.
-z, --gzip, --ungzip : gzip으로 압축하거나 푼다.
--use-compress-program PROG : PROG로 저장 파일을 다시 처리한다. (PROG은 반드시 -d를 처리해야 한다.)
--block-compress : 테이프에 저장할 때 압축 프로그램의 출력을 막는다.
--rsh-command=CMD : `rsh' 대신 원격 COMMAND를 사용한다. 이 옵션은 표준 `rsh' 대신 원격 장치에 접근
 할 수 있는 다른 것(예를 들어, Kerberized `rsh')을 사용하는 사람들을 위해 필요하다.
-[0-7][lmh] : 드라이브와 밀도를 지정한다.


반응형

'OS > Linux' 카테고리의 다른 글

scp 파일 가져오기.  (1) 2009.02.11
[VI] vi 에서 utf-8 형식의 글 보기.  (0) 2009.02.11
[VI] vi 한글깨짐 현상  (1) 2009.02.11
[VI] vi 색상 바꾸기 - vim 파일(putty.vim)  (1) 2009.02.11
[VI] vi 색상 변경  (0) 2009.02.11
반응형
[ 패치파일 만들어 적용하기 ]


작성자 : 정택진 (nveteran@netian.com)
작성일 : 2002. 6. 23.


1. 패치파일 만들기 (diff 이용)

- diff 의 쓰임 : 두 대상간의 차이점만을 모아 파일로 저장한다.

- 확장자 : .diff or .patch

- 만들기 전에는 make clean, make distclean, make mrproper 등을 수행하여,

컴파일된 파일을 모두 삭제한 뒤 만듭니다.

- 아래 설명들은 pwd 를 항상 생각하면서 도움이 됩니다.



* 실제 소스 코드를 통한 테스트를 합시다.

- 대상 : wu-ftpd-2.6.2.tar.gz

# cd /usr/src/

# tar xzvf wu-ftpd-2.6.2.tar.gz : 압축 해제

# mv wu-ftpd-2.6.2 wu-ftpd-2.6.2-orig : 원본 백업

# tar xzvf wu-ftpd-2.6.2.tar.gz : 압축 해제 2



* 수정을 해 봐야죠?

# cd /usr/src/wu-ftpd-2.6.2

# vi src/ftpd.c

--------- 수정 전 ----------

int main(int argc, char **argv, char **envp)
{
#if defined(UNIXWARE) || defined(AIX)
size_t addrlen;
#else
int addrlen;
#endif

...... ( 중략 ) ........

}


--------- 수정 후 ----------

#if defined(UNIXWARE) || defined(AIX)
size_t addrlen;
int myaddr; <================ 한 줄 추가.
#else




# vi src/sco.c

--------- 수정 전 ----------

char *
getcwd(pt, size)
char *pt;
int size;
{
register struct dirent *dp;
...... ( 중략 ) ........
}


--------- 수정 후 ----------

char * getcwd(char *pt, int size) <======== 한 줄로 압축.
{
register struct dirent *dp;
...... ( 중략 ) ........
}



--------- 패치 파일 만들기 ----------

# cd /usr/src/
# ls
wu-ftpd-2.6.2
wu-ftpd-2.6.2-orig


# diff -urN wu-ftpd-2.6.2-orig wu-ftp-2.6.2 > wu-ftp-2.6.2-test.diff
diff [옵션] <원본 파일> <수정본>

-u : --unidirectional-new-file
통일된 출력 형식을 사용.
(디렉토리 비교시, 두 디렉토리중
두번째 디렉토리에만 파일이 존재한다면,
첫번째 디렉토리에는 파일이 없어도 있는 것처럼 처리한다)
-r : --recursive, 재귀적. 하위 디렉토리를 모두 검색한다.
-N : --new-file
(비교하는 디렉토리에 파일이 하나의 디렉토리에만
모두 있는 것처럼 처리하지만 사실 다른 한 디렉토리에는
파일이 없다. 새로 만든다.)


# vi wu-ftpd-2.6.2-test.diff
diff -urN wu-ftpd-2.6.2-orig/src/ftpd.c wu-ftpd-2.6.2/src/ftpd.c
--- wu-ftpd-2.6.2-orig/src/ftpd.c Fri Nov 30 01:56:11 2001
+++ wu-ftpd-2.6.2/src/ftpd.c Sun Jun 23 20:04:57 2002
@@ -567,7 +567,8 @@
int main(int argc, char **argv, char **envp)
{
#if defined(UNIXWARE) || defined(AIX)
- size_t addrlen; // 이 한 줄을 빼고,
+ size_t addrlen // 아래 2 줄을 넣어라.
+ int myaddr; //
#else
int addrlen;
#endif
diff -urN wu-ftpd-2.6.2-orig/support/sco.c wu-ftpd-2.6.2/support/sco.c
--- wu-ftpd-2.6.2-orig/support/sco.c Sun Jul 2 03:36:29 2000
+++ wu-ftpd-2.6.2/support/sco.c Sun Jun 23 20:14:47 2002
@@ -429,10 +429,7 @@
(dp->d_name[0] == '.' && (dp->d_name[1] == '\0' || \
dp->d_name[1] == '.' && dp->d_name[2] == '\0'))

-char * // 아래 4줄을 빼고,
- getcwd(pt, size) //
- char *pt; //
- int size; //
+char *getcwd(char *pt, int size) // 이 한 줄을 넣어라.
{
register struct dirent *dp;
register DIR *dir;

-----------------------------------------------------------------
다른 설명은 필요 없으리라 봅니다.

--- 로 표시된 것은 원본
+++ 로 표시된 것은 수정본

- 로 표시된 줄은 빼고,
+ 로 표시된 줄로 대치한다.


****************************************************************

diff 파일은 ASCII 형태의 파일이므로, 압축을 하면
상당히 그 양을 줄일 수 있습니다.
일반적으로 tar.gz 혹은 gz 을 사용하니 그대로 사용합니다.

# gzip wu-ftpd-2.6.2-test.diff
# ls
wu-ftpd-2.6.2-test.diff.gz



2. 패치파일 적용하기.

이제 패치 파일을 적용시켜 봅시다.

지금부터는 패치를 만드는 과정은 생각하지 않습니다.

즉 새롭게 소스를 다운 받은 상태라고 생각하고 진행하세요.

그렇다면 그 상황을 만들어 봅시다.

# cd /usr/src

# mv wu-ftpd-2.6.2 wu-ftpd-2.6.2-old

# mv wu-ftpd-2.6.2-orig wu-ftpd-2.6.2
혹은
# rm -rf wu-ftpd-2.6.2-orig ; tar xzvf wu-ftpd-2.6.2.tar.gz

이제 상황이 설정되었죠?

그럼 이제 패치할 파일의 정보를 확인해 봅시다.

# zcat wu-ftpd-2.6.2-test.diff.gz | head -3
--------------------------------------------------------------------
diff -urN wu-ftpd-2.6.2-orig/src/ftpd.c wu-ftpd-2.6.2/src/ftpd.c <=== 주목
--- wu-ftpd-2.6.2-orig/src/ftpd.c Fri Nov 30 01:56:11 2001
+++ wu-ftpd-2.6.2/src/ftpd.c Sun Jun 23 20:04:57 2002
--------------------------------------------------------------------

첫줄을 보시면 patch 를 만들었을 때 정보를 확인할 수 있죠.
즉 어떻게 패치를 적용해야 할 지도 알수도 있는 셈이죠.
diff [옵션] <원본> <수정본>
눈여겨 봐야 할 곳은 <원본>과 <수정본> 디렉토리의 차이점이죠.
적용시킬 때는 <수정본>을 주목합니다.


확인이 끝났으면 원본이 있는 곳으로 갑니다.

# cd wu-ftpd-2.6.2

patch 를 실행시킬 때는 diff 파일의 내용과, 현재 커서가 있는 디렉토리와의
관계를 잘 따져야 합니다.

지금 있는 곳의 디렉토리가 wu-ftpd-2.6.2/ 입니다.
여기서 ls src/ftpd.c 명령을 내린다면 그 파일이 있겠죠?

위의 파일에서 첫번째 줄을 다시 보면, <수정본> 이 wu-ftpd-2.6.2/src/ftpd.c 라고
되어 있습니다. 즉 현재 작업위치가 wu-ftpd-2.6.2/ 디렉토리이니, 이 부분은 건너 띌 수 있는 겁니다.

그래서 여기서 패치 명령을 내린다면,

# zcat ../wu-ftpd-2.6.2-test.diff.gz | patch -p1

-p1 에서 '1' 의 의미는 <수정본>에 관한 정보 " wu-ftpd-2.6.2/src/ftpd.c " 에서
'/' 하나(디렉토리 하나)를 건너띄고 비교해서 패치를 적용시키라는 의미가 됩니다.

이제 감을 잡았나요? patch -p1 의 의미를...


하지만, wu-ftpd-2.6.2 디렉토리로 들어가지 않았았고, 패치 파일이 위와 같은 경우라면
-p0 을 사용하면 된다.

즉 <수정본> 정보에서 wu-ftpd-2.6.2/ 이고, 적용시킬 소스가 있는 디렉토리가 wu-ftpd-2.6.2/ 로
동일하기 때문이다.


-p1 을 먼저 예로 든 이유는 디렉토리명이 틀릴 경우가 많기 때문이다.


(참고) - patch 를 적용시키는데 있어서 여러 방법.
# zcat *****.diff.gz | patch -p1
# gzip -dc *****.diff.gz | patch -p1

# patch -p1 < *****.diff
# cat *****.diff | patch -p1

위의 두 경우는 압축되어 있는 것을 풀어서, 화면상에 표준출력되는
내용을 파이프를 통해 patch 프로세스에 diff 정보를 전달하는 경우이고,

아래 두 경우는 압축되지 않은 것을 redirection 과 파이프를 통해
patch 프로세스에 diff 정보를 전달하여 적용하는 방법입니다.

반응형

'Server > Apache' 카테고리의 다른 글

ssl 설정.  (2) 2015.08.16
[설치] DocumentRoot must be a directory  (0) 2015.06.16
에러 : libexpat.so.0: 열기 실패  (0) 2014.03.24
Apache MPM  (0) 2014.03.24
디렉토리 인덱싱 비활성화.  (1) 2011.12.14

+ Recent posts