posted by 구름너머 2006. 3. 13. 11:29
유닉스의 모든명령어는 반드시 소문자로 입력해야 합니다.

명령어

사 용 법

tar

.tar, _tar로 된 파일을 묶거나 풀때 사용하는 명령어
(압축파일이 아님)

% tar cvf [파일명(.tar, _tar)]압축할 파일(또는 디렉토리): 묶을때
% tar xvf [파일명(.tar, _tar)] : 풀 때
(cf) cvfp/xvfp 로 하면 퍼미션 부동

.파일묶기와 압축을 동시에
% tar cvzfp 파일명.tar.gz 압축할파일

compress

확장자 .Z 형태의 압축파일 생성

% compress [파일명] : 압축시
% uncompress [파일명] : 해제시

gzip

확장자 .gz, .z 형태의 압축파일 생성

% gzip [파일명] : 압축시
% gzip -d [파일명] : 해제시

기타

.tar.Z
이것은 tar로 묶은 후에 compress를 사용하여 압축한 것으로 uncompress를 사용해서 압축을 푼 다음, 다시 tar를 사용해서 원래의 파일들을 만들어내면 됩니다.
아니면 다음과 같이 한 번에 풀 수도 있다.
% zcat [파일명].tar.Z : 해제시

.tar.gz또는 .tar.z
% gzip -cd [파일명] : 해제시

.tar.gz 또는 .tar.z
gzip을 사용해서 푼 다음 다시 tar를 사용해서 원래 파일을 만들어 낼 수 있으나, 하지만 다음과 같이 하면 한 번에 처리를 할 수 있다.
% gzip -cd 파일.tar.gz | tar xvf -

'UNIX' 카테고리의 다른 글

VI 에서 TAB 크기를 4로 설정하기  (1) 2006.07.28
UNIX FTP 사용법  (0) 2006.07.04
unix timestamp  (0) 2005.12.30
Unix Shell  (0) 2005.11.25
클라이언트(Resolver) 설정  (0) 2005.10.24
posted by 구름너머 2005. 12. 30. 09:57

unix timestamp 변환하기...

1970년 1월 1일 0시 0분 0초 부터 현재까지의 시간을 초로 계산함.

2005년 12월 30일 09시 50분 13초 ====> 1135936213 초.

1. script 이용

: http://www.onlineconversion.com/unix_time.htm

2. sql이용

: SELECT ROUND((to_date('20051230095013','yyyymmddhh24miss')-TO_DATE('19700101','YYYYMMDD'))*86400) FROM DUAL;

위와 같이 하면 unix에서 찍어본 날자와 9시간정도 차이가 난다.

이유는 자세히 모르겠다.

timezone문제인듯.... TZ=KST-9

보정을 하면...

SELECT ROUND((to_date('20051230095013','yyyymmddhh24miss')-TO_DATE('19700101','YYYYMMDD'))*86400-32400) FROM DUAL;

3. unix에서

NOW_TIME=`perl -e 'print time'`

'UNIX' 카테고리의 다른 글

UNIX FTP 사용법  (0) 2006.07.04
Unix 압축/해제 명령어 모음  (0) 2006.03.13
Unix Shell  (0) 2005.11.25
클라이언트(Resolver) 설정  (0) 2005.10.24
C shell, Bourne shell에서의 테스트 방식 비교  (0) 2005.10.17
posted by 구름너머 2005. 11. 25. 11:32

1. Shell 스크립트의 첫 번째 줄이 #으로 표기되어 있으면

이 스크립트는 C Shell에 의해 해석된다.

단, 첫 번째 줄이 아닌 다른 줄에 있는 #은 라인주석으로 처리한다.

2. Shell 스크립트의 첫 번째 줄이 #! shell_pathname으로 표기되어 있으면

이 스크립트는 패스에 정의된 Shell에 의해 해석된다.

3. 앞의 두 규칙 중 어느 하나도 만족하지 않으면

기본값으로 Bourne Shell에 의해 해석된다.

예1)

# @(#)local.profile 1.8 99/03/26 ====> Bourne Shell로 해석

예2)

#! /bin/sh ====> Bourne Shell로 해석

예3)

#! /bin/csh ====>C Shell로 해석

'UNIX' 카테고리의 다른 글

Unix 압축/해제 명령어 모음  (0) 2006.03.13
unix timestamp  (0) 2005.12.30
클라이언트(Resolver) 설정  (0) 2005.10.24
C shell, Bourne shell에서의 테스트 방식 비교  (0) 2005.10.17
UNIX에서 날짜 구하기 팁.  (0) 2005.08.25
posted by 구름너머 2005. 10. 24. 21:24

http://www2.kr.freebsd.org/doc/PoweredByDNS/config-resolver.html

Chapter 3. 클라이언트(Resolver) 설정

3.1. Unix 시스템에서의 클라이언트 설정

Unix 시스템상에서 DNS를 사용하기 위해서는 /etc/resolv.conf 파일과, /etc/nsswitch.conf 파일을 손보아야 한다. /etc/resolv.conf에는 도메인 Resolving시 쿼리를 던질 네임서버를 3개까지 나열할 수 있다. 일반적으로 로컬 Primary, Secondary, ISP 네임서버 3개를 다음과 같이 명시한다.

search nobreak.com # 도메인 서픽스(Suffix)
nameserver 210.105.79.2 # ns.nobreak.com
nameserver 210.105.79.3 # ns2.nobreak.com
nameserver 168.126.63.1 # ns.kornet.ne.kr (사용하는 ISP의 NS)

'search nobreak.com'은 호스트명만 주었을 경우 서픽스로 사용할 도메인을 뜻한다. 다른 도메인의 호스트에 자주 접속하거나, 여러 도메인을 관리한다면, 해당 도메인을 다음과 같이 여럿 놓을 수도 있다.

search nobreak.com
search kr.freebsd.org

이런 경우엔 호스트명 www는 먼저 www.nobreak.com으로 확장되어 검색되고, 검색되지 않을 경우 www.kr.freebsd.org로 확장되어 다시 검색된다. 잘못된 호스트명을 주었을때도, 가능한 조합을 모두 검색하므로, 많은 도메인을 search 리스트에 포함하는 것은 바람직하지 않다.

자주 사용하지는 않지만 도메인 별로 네임서버를 다르게 설정할 수도 있다. 주로 네임서버의 캐쉬 영향을 받지 않고, 해당 도메인의 수정사항을 즉각 적용하기 위해 쓰인다.

search nobreak.com

domain nobreak.com
nameserver 210.105.79.2
...

domain kornet.ne.kr
nameserver 168.126.63.1
...

호스트 네임을 DNS로 확장하여 검색하기 위해서는 /etc/nsswitch.conf 파일의 라인 'hosts:'에 'dns'가 추가되어 있어야 한다. 근래 대부분의 OS는 기본적으로 설정되어 배포되지만, 확실히 하기 위해 확인하자.

hosts: files dns

files 는 호스트명을 /etc/hosts 파일에서 검색함을 뜻한다. 시스템은 주어진 순서(files, dns)로 검색을 시도한다.

'UNIX' 카테고리의 다른 글

unix timestamp  (0) 2005.12.30
Unix Shell  (0) 2005.11.25
C shell, Bourne shell에서의 테스트 방식 비교  (0) 2005.10.17
UNIX에서 날짜 구하기 팁.  (0) 2005.08.25
file 검색 in 유닉스,리룩스  (0) 2005.07.20
posted by 구름너머 2005. 10. 17. 16:24

출처 : http://stone.backrush.com/sunfaq/z00010.html

SUBJECT: C shell, Bourne shell에서의 테스트 방식 비교

MEANING OF THIS MEMO
shell program시 흔히 조건 테스트로 사용하는 flag와 operator에 대해
C shell, Bourne shell 양 쪽의 것을 비교해 보았다.

CONTENTS:
0. "test" command에 대하여
1. C shell에서의 테스트 방식
2. Bourne shell에서의 테스트 방식
3. C shell, Bourne shell의 테스트 비교
4. 참고 - Operator의 비교

DESCRIPTION:

0. "test" command에 대하여

* "test" command(이하 "test"로 생략함)는 원래 user command로 존재하는 것이다.
syntax를 보면,
+-----------------------------+
| % test |
+-----------------------------+
을 test하여 그 값이 참이면 0 을 return하고
거짓이면 1 을 return한다.

* 은 logical하게 크게 두 가지 요소로 표현 된다.
① Primitives
"-b ", "-c "의 syntax를 가진다.
에 대해 -의 의미를 test하라는 것이다.
아래 표에서 구체적으로 살펴볼 것이다.
② Operators
앞의 Primitive들을 연결하는데 사용된다.
- Unary Operator : ! (logical NEGATION)
- Binary Operator : -a (logical AND)
-o (logical OR)
- ( ) : grouping을 위한 것으로
괄호 안에는 이 들어 간다.

1. C shell에서의 테스트 방식
* "test"의 man page를 보면 알 수 있듯이
상당 부분의 Primitive들이 csh의 경우 built-in 되어 있다.
* 따라서 C shell programming시에는 built-in된 comand로 테스트토록 하고
built-in command에 없는 것을 테스트하려는 경우
"test"의 Primitive들을 사용하면 될 것.
테스트와 관련한 C shell의 built-in command들은 아래 표 참조.

2. Bourne shell에서의 테스트 방식
* 이 "test"는 C shell 보다는 Bourne shell에서 더욱 자주 사용되는데,
이는 Bourne shell에 테스트를 위한 built-in command가 빈약하기 때문이다.
* Bourne shell에서 "test"를 사용할 때 "test" syntax를 따르기 보다는
"test"와 같은 의미로 사용되는 "[" (물론 "]"도 함께)를 사용한다.
여러 Bourne shell script들에서 if와 함께 나오는 "["를 자주 보는데, 이는
Bourne shell '조건문 if의 syntax'가 아니라 "test"의 대용이라는 점을 주지하시압.
* C shell에서 "["를 사용하여 테스트를 수행하려면,
"["과 "]"는 backslash로 escape되어야 한다.
example) if { \[ -r filename \] } then


3. C shell, Bourne shell의 테스트 비교
+------------+------------+
+-------+---------------------------------------| C shell | "test" |
| 대 상 | 테 스 트 의 미 | (built-in) | command |
+=======+=======================================+============+============+
| | | Flag |
| | +=========================+
| | directory | -d |
| | file | -f |
| | file or directory exists | -e |
| | owned by the executing user | -o |
| | current user can read | -r |
| File | current user can write | -w |
| | current user can execute | -x |
| | exists and size > 0 | -s |
| | size is 0 | -z |
| | block device | -b |
| | character device | -c |
| | named pipe | -p |
| | set-uid-bit set | -u |
| | set-gid-bit set | -g |
| | stiky bit set | -k |
| | n은 terminal의 file descriptor | -t n |
+-------+---------------------------------------+=========================+
| | | Operator |
| | +=========================+
| | NULL | == -z | ⓐ
|String | not NULL | != -n | ⓑ
| | equal | == = |
| | not equal | != != |
| | match wildcard pattern | =~ | ⓒ
| | not match wildcard pattern | !~ | ⓓ
+-------+---------------------------------------+-------------------------+
| | equal | == -eq |
| | not equal | != -ne |
|Number | less than | < -ne |
| | greater than | > -gt |
| | less than equal | <= -le |
| | greater than equal | >= -ge |
+-------+---------------------------------------+-------------------------+
| | logical AND | && -a |
| 논 리 | logical OR | || -o |
| | logical NEGATION | ! |
+-------+---------------------------------------+-------------------------+

* Flag의 경우 사용 syntax를 보면, flag 뒤에 filename을 주면 된다.
* Operator의 경우 사용 syntax를 보면,
unary operator(단항 연산자)인 "!"을 제외하고는
모두 binary operator(이항 연산자)이므로
operator 양쪽에 string(or pattern), number를 주면 된다.

* ⓐ에서 사용 syntax를 보면,
C shell의 경우 : string == ""
"test"의 경우 : if test -z "$string"
* ⓑ에서 사용 syntax를 보면,
C shell의 경우 : string != ""
"test"의 경우 : if test -n "$string"
* ⓒ에서 사용 syntax를 보면, string =~ pattern
* ⓓ에서 사용 syntax를 보면, string !~ pattern

4. 참고 - Operator의 비교
* C shell의 operator들은 모두 built-in된 것들이다.
* Bourne shell의 operator들 중
관계 연산자와 논리 연산자들은 앞서 언급했던 것처럼
"test"에서 빌려다 사용한다는 것을 상기하시라.

+-----------------------------+----------------+----------------+
| Operator 종 류 | C shell | Bourne shell |
+=============+===============+================+================+
| | | < -lt |
| | Number only | > -gt |
| | | <= -le |
| | | >= -ge |
| Relational |---------------+----------------+ |
| Operator | Number or | == | -eq |
| | String | != | -ne |
| |---------------+----------------+----------------+
| | String only | =~ |
| | | !~ |
+-----------------------------+---------------------------------+
| | && -a |
| Logical Operator | || -o |
| | ! |
+-----------------------------+---------------------------------+
| | + |
| | - |
| Arithmetic Operator | * |
| | / |
| | % |
+-----------------------------+---------------------------------+
| | = |
| | += |
| Assignment Operator | -= |
| | *= |
| | /= |
| | %= |
+---------------------------------------------------------------+

Revision History
Created on Jan. 3 ,1993

'UNIX' 카테고리의 다른 글

Unix Shell  (0) 2005.11.25
클라이언트(Resolver) 설정  (0) 2005.10.24
UNIX에서 날짜 구하기 팁.  (0) 2005.08.25
file 검색 in 유닉스,리룩스  (0) 2005.07.20
UNIX 셀 프로그램에서 값 비교하기..  (0) 2005.04.07
posted by 구름너머 2005. 8. 25. 19:20

UNIX에서 쉘 프로그램등에서 유용하게 사용할 수 있으리라

생각 됩니다.

오늘 몇시간 찾아서 정리하여 봅니다.

1주일전 로그를 지우려고 찾다가 여기까지 왔네요.

도움이 되길....

테스트 해보니까 최대 7일전까지만 가능하네요.

KST : Korea Standard Time 한국표준시 이고

UNIX는 Time Zone이라고 해서 지역별 시간대를 가지고 있다고 합니다.

세계 각국 또는 각 지역에는 각각 표준시가 정해져 사용되고 있다.

그리니치에서 동쪽인 경우를 음, 서쪽인 경우를 양으로 한다.

예를 들어 한국 표준시는 세계시보다 9시간 빠르므로

시차는 -9시가 된다.

한국은 표준시에 대해서 TZ=KST-9 입니다.

따라서하루전으로 가기 위해서는 24시간을 더해준답니다.

그래서 KST+15입니다.

같은 방법으로 24씩 증가하면 원하는 시간이 나오겠죠.

그런데 테스트를 해보니 7일전까지만 되는군여...쩝.

좀더 정확히는 +167까지 되니까 7일하고 8시간 전까지 가능하네요..

현재-9TZ=KST-9 date +%Y-%m-%d' '%H:%M:%S
1일전15TZ=KST+15 date +%Y-%m-%d' '%H:%M:%S
2일전39TZ=KST+39 date +%Y-%m-%d' '%H:%M:%S
3일전63TZ=KST+63 date +%Y-%m-%d' '%H:%M:%S
4일전87TZ=KST+87 date +%Y-%m-%d' '%H:%M:%S
5일전111TZ=KST+111 date +%Y-%m-%d' '%H:%M:%S
6일전135TZ=KST+135 date +%Y-%m-%d' '%H:%M:%S
7일전159TZ=KST+159 date +%Y-%m-%d' '%H:%M:%S

'UNIX' 카테고리의 다른 글

클라이언트(Resolver) 설정  (0) 2005.10.24
C shell, Bourne shell에서의 테스트 방식 비교  (0) 2005.10.17
file 검색 in 유닉스,리룩스  (0) 2005.07.20
UNIX 셀 프로그램에서 값 비교하기..  (0) 2005.04.07
wait(2)  (0) 2005.03.15
posted by 구름너머 2005. 7. 20. 11:32
예를 들어 리눅스 안에 모든 txt파일 중에 그 내용에 hello가 포한 되있는 파일만 찾으려면 어떻게 하나요..??
질문자가 선택한 답변
re: 리눅스 명령어 find를 써서....
mkjunee (2005-03-10 16:09 작성)이의제기
질문자 평
find는 파일 내용까지는 볼 수가 없고, grep을 같이 써야 합니다.


$ find . -name *.txt -exec grep hello {} \;

이렇게 하면 hello가 들어있는 파일의 내용은 볼 수 있는데,
해당 파일의 이름은 나오지 않는 문제가 있지요.
그래서, 아래와 같은 shell script를 하나 짜서 실행시키세요.

!#/bin/csh

echo $1;
grep hello $1;


위 내용을 findhello.csh로 저장하시고, 물론, 실행가능하게 chmod a+x 해주구요.

$ find . -name *.txt -exec findhello.csh {} \;

하면 됩니다.
답변들
re: 리눅스 명령어 find를 써서....
neolunch (2005-03-10 18:13 작성)이의제기
윗분 말씀이 UNIX 계열에서 사용하던 정석적인 방법입니다.

그러나 find나 grep 등도 계속 버전업이 되고,

유용한 유틸들이 기본으로 포함되면서

몇가지 유용한 기능들을 쉽게 할 수 있게 되었습니다.

find . -name "*.txt" | xargs grep hello
or
find . -name "*.txt" | xargs grep -l hello

xargs라는 유틸을 사용하시면 스크립트를 작성하지 않아도 될듯합니다.

그리고 grep의 옵션을 이용하면 여러가지 효과를 얻을 수도 있습니다.

-l : 파일 리스트만 보여줍니다. 이 옵션을 주지 않으면,
특정 파일에 hello가 두번 나올 때, 그 두 라인을 모두 print해주지만
이 옵션을 넣으면 한번 나오든지 여러번 나오든지, hello를 포함하고
있는 파일 이름만 나열해 줍니다.
-i : ignore-case, 즉 Hello, HEllO등, 대소문자 구분하지 않고 찾아줍니다.

특히나 -r 옵션은 find를 쓰지 않고 특정 디렉토리 이하를 모두 검색해줍니다.

이러한 옵션은 님의 리눅스 박스에 인스톨 되어 있는 grep의 종류와 버전에

따라 다르므로, 반드시 man grep 하셔서 어떤 옵션이 있는지,

내가 필요로 하는 기능을 어떤 옵션이 지원하지는 않는지 대충 읽어 보시면

많은 도움이 되시리라 생각됩니다.

그러나 앞서도 밝혔듯이, 정석은 윗분의 말씀대로 하시는 것입니다.

참고하세요.

'UNIX' 카테고리의 다른 글

C shell, Bourne shell에서의 테스트 방식 비교  (0) 2005.10.17
UNIX에서 날짜 구하기 팁.  (0) 2005.08.25
UNIX 셀 프로그램에서 값 비교하기..  (0) 2005.04.07
wait(2)  (0) 2005.03.15
main() 함수의 매개변수-> (argc,argv)  (0) 2005.03.15
posted by 구름너머 2005. 4. 7. 21:17

if [ $# -eq 2 ]
then
NO=$1
YY=$2
echo "job start...."
else
echo "param error"
fi

echo "NO:"${NO}
echo "YY:"${YY}
echo "the end"

===========================================================================================

변수사용

어떤 프로그램 언어를 사용하더라도 변수의 설정및 사용이 가장 기본적으로 필요합니다.
변 수 명=값
주의: '=' 좌우에 스페이스가 있어서는 안됨
설정된 변수를 사용할때는 변수명 앞에 '$'를 붙여서 쓰면 됩니다.

$변수명

$# 은 argument의 개수를 나타냅니다.


환경변수를 사용할때는 다음과 같이 합니다.
PATH=/usr/bin
export PATH
export 명령을 사용하여 환경변수로 만들어 주어야 합니다. 프로그램 언어의 전역 변수와 같은 것으로 생각하면 됩니다.
array변수를 사용할때는 약간의 트릭을 이용할수 밖에 없습니다. 다음과 같이
변수명1=값1
변수명2=값2

표현방식참이 되는 경우
[ $A -eq $B ]A와 B의 값이 같은 경우
[ $A -ne $B ]A와 B의 값이 다른 경우
[ $A -gt $B ]A와 B의 값이 큰 경우
[ $A -lt $B ]A와 B의 값이 작은 경우
[ $A -ge $B ]A와 B의 값이 크거나 같은 경우
[ $A -le $B ]A와 B의 값이 작거나 같은 경우
소숫점 이하의 숫자는 무시되므로 유의하여야 합니다

'UNIX' 카테고리의 다른 글

UNIX에서 날짜 구하기 팁.  (0) 2005.08.25
file 검색 in 유닉스,리룩스  (0) 2005.07.20
wait(2)  (0) 2005.03.15
main() 함수의 매개변수-> (argc,argv)  (0) 2005.03.15
int argc, char **argv 의 정체가 정말  (0) 2005.03.15