절대 경로로 tar된 파일을 상대 경로로 풀어야 할 경우가 있다.

이럴 경우 pax 명령어를 이용하면 손 쉽게 해결할 수 있다.
단, 모든 Unix에서 가능한 것은 아니다.

우선 tar 파일을 풀고자 하는 경로에 복사한다.

다음 명령어를 실행한다.

pax -r -s ',^/,,' -f file.tar

그러면 file.tar의 내용이 $CWD(현재 디렉토리)에 풀리게 된다.

>>>>>>>>>>>>>>> 원문 <<<<<<<<<<<<<<<<<<

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

                             UNIX GURU UNIVERSE
                                UNIX HOT TIP

                       Unix Tip 3462 - August  2, 2011

                   http://www.ugu.com/sui/ugu/show?tip.today

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


EXTRACT RELATIVE FROM ABSOLUTE

Ever had a tar archive which
was tarred up with an absolute
path, but you need to untar
it to a relative location?

There is an easy way to do
this using the "pax" command.
Note: Not available on all
flavors.

Firstly, copy the archive to
the relative location in
which you wish to untar it.

Then, execute the following
command:

pax -r -s ',^/,,' -f file.tar

The contents of file.tar will now
be in the $CWD.



--------------------------------------------------------------------------
To Subscribe:    http://www.ugu.com/sui/ugu/show?tip.subscribe
To Unsubscribe:  http://www.ugu.com/sui/ugu/show?tip.unsubscribe
To Submit A Tip: http://www.ugu.com/sui/ugu/show?tip.today

==========================================================================
DISCLAIMER: All UNIX HOT TIPS ARE OWNED BY THE UNIX GURU UNIVERSE AND ARE
NOT TO BE SOLD, PRINTED OR USED WITHOUT THE WRITTEN CONSENT OF THE UNIX
GURU UNIVERSE. ALL TIPS ARE "USE AT YOUR OWN RISK". UGU  ADVISES THAT
ALL TIPS BE TESTED IN A NON-PRODUCTION DEVELOPMENT ENVIRONMENT FIRST.

Unix Guru Universe - www.ugu.com - tips@ugu.com - Copyright 1994-2001
==========================================================================
신고
Posted by She쥐포s

○ 상용 Unix에서 절대 경로로 묶인 tar 파일 풀기

    Linux가 아닌 일반 상용 Unix(HP-UX, Solaris 등)에서 리눅스에서 tar 파일
    풀 듯이 아무 생각없이 풀어버리다가 낭패를 당한 적이 있을 것이다.
    어느 회사의 미들웨어 시스템이 HP-UX이던 시절, Test 서버에서 아무
    생각없이 tar를 풀다가 헐~ 하는 경우를 당했었는데..
    Test 서버였기 망정이지..

    어제 갑자기 지인이 그 방법을 물어오길래 생각이 나서..
    한 노트 끄적여 보려고 한다. 

    □ Method 1. GNU tar로 해결 

        지금 생각해 보면 무식한 방법이었던 것 같다. root 권한을 마음대로
        사용할 수 없었는데 root 권한을 갖고 있는 사람에게 굽신굽신하며
        설치를 부탁했던 기억이 난다. 

    □ Method 2. pax 사용 

        "Linux 서버 관리 Hacks 100"이란 책을 보다가 알게된 방법으로 pax를
        사용하는 방법이다.


        - 파일 내용 보기
            # pax -f FILENAME
            예) pax -f sinzi76.tar

        - 절대경로를 상대경로로 바꾸어서 풀기
            # pax -rv -s,절대경로,상대경로, -f FILENAME
            예) pax -rv -s,/home,./pgclks, -f sinzi76.tar

        - Interactive하게 풀기 옵션(-i)
            # pax -rif FILENAME
            예) pax -rif sinzi76.tar
            이 옵션을 사용하면 파일마다 경로를 바꿀 것인지 그대로 풀 것인지 확인

        ※ pax는 tar 및 cpio 파일을 풀 수 있으며 파일이 압축된 경우 -z 옵션을
           함께 사용한다. 그렇지 않으면 에러를 내므로 pax를 사용하기 전에
            file 명령을 이용하여 압축여부를 확인하여 사용하도록 한다.

        ※ 기타 자세한 내용은 man page 참조

신고
Posted by She쥐포s
홈디렉토리의 .vimrc(unix기준)

또는

C:\Program Files\Vim\Vim7.2(버전)\vimrc_example.vim(윈도우 기본설치 기준)

파일에

let g:colors_name="torte"

추가한 후 저장.."torte"에 해당하는 내용은 개인 선택..
신고
Posted by She쥐포s

Linux OS Bit 수 확인

Unix 2009.10.05 14:16

# getconf WORD_BIT

getconf는 glibc-common 패키지에 포함되어 있어 일반적으로 적용될 것이다.

## update 2013.12.17

# getconf LONG_BIT

결과값이 64가 나오면 64bit, 32가 나오면 32bit

참고.

AIX :
# getconf WORD_BIT

HP-UX :
# getconf KERNEL_BITS

Solaris :
# isainfo -kv

참고 URL : http://sardonyx.tistory.com/entry/OS-Bit-확인


신고
Posted by She쥐포s

유닉스엔 원칙적으로 확장자의 개념이 없다.
인간이 구분하기 위해 구분해 놓은 것에 불과하다.
편의상 구분해 놓은 구분자를 변경하는 방법에 관한 팁을 소개한다.

---------------------------------------------------------------------
확장자 바꾸기

여러 파일들의 확장자를 변경하고자 할 때 다음과 같은 방식을 이용할 수 없다.

    % mv *.abc *.def

대신 다음의 쉘 스크립트로 원하는 작업을 할 수 있다.

--------- 시작 ---------
#!/bin/sh
for f in *.abc; do
    mv $f `basename $f .abc`.def
done
--------- 끝 ---------

모든 .abc로 끝나는 파일을 찾아 $f를 파일명으로 바꿔가면서(for)

    mv FILENAME `basename $f.abc`.def

명령을 실행한다.

`basename $f .abc` 명령은 파일명중에서 .abc를 제외한 값을 반환한다.
따라서 위의 mv 명령은 다음과 같은 명령으로 완성된다.(file은 .abc를 제외한 파일명)

    mv file.abc file.def

    done

for 루프를 마친다.

csh이나 tcsh에서는 다음과 같이 하여 위의 작업을 할 수 있다.

    foreach f in ( *.abc )
        mv $f `basename $f .abc`.def
    end

--------- 원문 ---------

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

                             UNIX GURU UNIVERSE
                                UNIX HOT TIP

                       Unix Tip 2932 - February 15, 2009
                   http://www.ugu.com/sui/ugu/show?tip.today

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

CHANGE THE SUFFIX

If you want to change the suffix of
multiple files, you can't do:

       % mv *.abc *.def

However the following shell script
can be used to do the required
opperation:

***

Change all *.abc file to *.def the
following shell script would work:

#!/bin/sh
for f in *.abc; do
 mv $f `basename $f .abc`.def
done

How it works:

 for f in *.abc; do

Set up a look for all files ending
in .abc, and each time around setup
$f as the filename

 mv $f `basename $f.abc`.def

`basename $f .abc` takes the filename
in $f and removes any trailing occurences
of .abc, we then append .def to the result
and the resulting command becomes
"mv file.abc file.def"

  done

Ends the "for" loop above.

Under "csh" or "tcsh" a similar thing could be done with:

 foreach f in ( *.abc )
   mv $f `basename $f .abc`.def
 end

신고
Posted by She쥐포s

어떤 명령을 실행한 결과에서 일정패턴을 찾아 그 결과중 일정부분을 찾으려고 했을때
다음과 같이 입력하는 경험을 해본적이 있을 것이다.
물론 나도 그랬으니까...

$ command | grep PATTERN | awk '{ print $3 }'

위의 문장은 awk의 특성을 이용하여 다음과 같이 줄여 쓸 수 있다.

$ command | awk '/PATTERN/{ print $3 }'

-------------------------<원문>-------------------------
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                             UNIX GURU UNIVERSE
                                UNIX HOT TIP
                       Unix Tip 3171 - October 11, 2008
                   http://www.ugu.com/sui/ugu/show?tip.today
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

REGEXP MATCHING IN AWK

If you ever find yourself typing "command | grep pattern | awk '{print $3}'
you can shorten this by using the regexp matching in awk, like this:

command | awk '/pattern/{print $3}'

신고
Posted by She쥐포s
OS와 ps가 지원하는 포맷에 따라 달라지지만 다음의 내용은 Solaris에서 작동한다.

# ps -eo etime,pid,args | awk -F- '$1>14{print}'

etime은 일반적인 프로세스 시작시간 대신 총 소요된 시간을 반환한다.
etime 값은 dd-HH:MM:SS 의 형식이다.(날짜-시간:분:초)

○ 명령어 설명
- ps -e
    현재 실행중인 모든 프로세스의 정보를 나열한다.
- ps -o format
    format에 명시한 포맷으로 정보를 출력한다.
- etime
    프로세스가 실행된 소요시간 출력
- pid
    Process ID 출력
- args
    명령어와 모든 인수를 문자열로 출력
    기타 자세한 포맷에 대한 정보는 man ps를 이용해 확인하기 바란다.
- awk -F- '$1>14{print}'
    -를 구분자로 하여 첫번째 항목을 찾아 14이상인 항목만 출력한다.
     위의 예에서는 실행한지 15일 이상이 되는 프로세스를 출력하는 예이다.
신고
Posted by She쥐포s

split 명령

Unix 2008.09.21 18:45


이제 앞으로 Floppy는 없어지겠지만 큰 사이즈의 파일을 원하는 사이즈로 나누려면 split 명령을 이용하면 된다.
예를 들어 byte 단위로 나누려면 -b 옵션을 글자수 단위로 나누려면 -c 옵션을 사용하면 된다.
따라서 Floppy에 넣을 수 있는  1400KB 단위로 나누려면 다음과 같이 하면 된다.

# split -b 1400000 FILENAME

이와 같이하면 1400000 byte의 파일이 xaa, xab, ... 등의 이름으로 파일이 생성된다.

다시 원래의 파일로 합치려면

# cat x* > ORIGINAL_FILENAME

참고원문
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                             UNIX GURU UNIVERSE
                                UNIX HOT TIP

                       Unix Tip 3150 - September 20, 2008

                   http://www.ugu.com/sui/ugu/show?tip.today
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

SPLIT FILES FOR FLOPPIES

To split a file up for floppies:

# split -b 1400000

The filenames will be xaa, xbb, etc.
To restore them:

# cat x* > original_filename

신고
Posted by She쥐포s

null copy

Unix/Shell 2008.09.21 17:47
○ null copy
        File의 Size를 0으로 만드는 작업으로 일반적으로 로그파일이 커졌을 때 해당 파일의 사이즈를 초기화하는 목적
        등으로 사용됨.

○ 방법
        1. cat /dev/null > FILENAME
                 /dev/null 파일을 직접 파일에 Redirection한다.
                일반적인 경우 사용됨.
                 예)
                    # cat /dev/null > /var/log/messages

        2. > FILENAME
                직접 Redirection해서 파일에 쓴다.
                Bourne Shell, Korn Shell에서 사용됨
                예)

                    # > /var/log/messages


참고 원문
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                             UNIX GURU UNIVERSE
                                UNIX HOT TIP

                       Unix Tip 3151 - September 21, 2008

                   http://www.ugu.com/sui/ugu/show?tip.today

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

NULL IT FAST

Here is the fastest way to truncate a file to zero
bytes in a bourne or korn shell.

$ > /var/log/messages

This is a good method, if the file has to be truncated,
but is opened by another process. For example, if you
want to truncate /var/log/messages, which is held
open by syslogd...

신고
Posted by She쥐포s

※ lynx란?
요즘처럼 Graphical한 Browser가 나오기 전에 사용하던 Text Browser로 배치작업으로 웹페이지의
내용을 가져올때 사용하면 편리하다.

※ 원하는 작업
한 회사의 FTP 서버로 FTP 접속을 초당 수십회 정도 로그인 시도를 한다면 이는 분명 누군가가
해당 사이트에 대해 공격을 하는 것으로 볼 수 있으며, 해당 아이피가 어디에 속해 있는지 알고 싶다.

- FTP Log에서 Login 시도 IP를 걸러내는 작업은 각자에게 맡기고..

- IP가 포함된 파일이 hack.txt라면

################## 시작 ##################
for a in `cat hack.txt`
do
echo "IP Address : $a"
# 다음 두줄로 보이는 내용은 한줄에 입력해야 한다.
echo "whoistype=I&domain=$a&x=33&y=8" | lynx -post_data -source http://WHOIS서버주소/검색URL |
         egrep "(기관명|Org Name)"|grep ":"
# 위의 두줄로 보이는 내용은 한줄에 입력해야 한다.
echo "=="
sleep 10
done
################## 끝 ##################

한줄로 입력해야 한다는 줄의 "whoistype~y=8" 부분은 Proxy Tool을 이용하여 POST로 넘겨주는 데이터의
일반형을 구해야 한다.

※ 내용이 약간 설렁 설렁 한 것 같은데... 사용법을 잘 연구해 보시길...
※ 중요한 것은 echo "POST DATA" | lynx -post_data -source... 이 부분이다.

신고
Posted by She쥐포s


티스토리 툴바