:  아무 것도 수행하지 않고 종료 상태만 0으로 반환한다.
.file 마침표(.)명령어는 파일을 읽어서 실행한다. 
break[n] '루프'부분 내용 참조 
현재 쉘 내에서 프로그램을 실행한다.(source 명령어와 동일) 
alias 별명의 목록을 출력하거나 새로 생성한다. 
bg 작업을 백그라운드로 보낸다 
bind  readlind 함수나 매크로에 대한 현재 키와 함수 바인딩, 바인드 키를 보여준다. 
break  가장 안쪽의 루프를 탈출한다 
builtin [sh-builtin [arg]]  내장 명령어를 실행시킨다. 인자를 전달할 수 있으며, 종료 상태를 0으로 반환한다. 함수와 내장 명령어의 이름이 같은 경우 유용하다. 
cd [arg]  인자를 지정하지 않으면 홈 디렉토리로 이동한다. 
command command [arg]  함수와 동일한 이름일지라도 명령어를 실행한다.(함수를 찾아보는 과정이 생략됨) 
continue [n]  루프의 내용을 참고하라. 
declare [var]  모든 변수를 보여주거나, 특정 속성을 지정하여 변수를 선언한다. 
dirs  pushd 이후에 현재 기억된 디렉토리의 목록을 보여준다. 
disown  작업 테이블에서 활성 작업을 제거한다. 
echo [args]  인자를 반향(echo)한다. 
enable  쉘 내장 명령어를 활성화하거나 비활성화 
eval [args] 실행 전에 명령행의 내용을 두 번 검사하게 한다. 한 번은 쉘이 인자로써 해석하고, 또 한 번은 명령어로써 실행한다.
exec command 현재 쉘에서 명령어를 실행한다.
exit [n] 종료 상태를 n으로 반환하고, 종료한다.
export [var] 자식 쉘에게 var를 상속한다. 
fc  히스토리 목록을 편집하기 위한 명령어(fix command) 
fg  백그라운드 작업을 포그라운드로 가져온다. 
getopts  명령행에서 지정한 유효한 옵션을 추출하기 위해 스크립트에서 사용한다. 
hash  명령어의 빠른 수행을 위해, 내부 해시 테이블을 제어한다. 
help [command]  내장 명령어에 대한 도움말을 제공한다 
history  히스토리 목록을 행 번호와 함께 출력한다. 
jobs  백그라운드의 작업 목록을 출력한다. 
kill [-signal process] 지정한 PID번호나 작업 번호에 시그널을 보낸다. kill -l 참조 
let  산술식을 평가하거나 산술 계산의 결과를 변수에 저장하기 위해 사용한다. 
local  변수의 통용범위를 함수 내로 제한하기 위해 사용한다. 
logout  로그아웃 
popd  디렉토리 스택의 항목을 제거한다. 
pushd 디렉토리 스택에 항목을 추가한다.
pwd  현재 작업 디렉토리를 보여준다. 
read [var] 표준 입력에서 읽은 내용을 변수 var에 저장한다. 
readonly [var] 변수  var를 읽기 전용으로 만든다. 변수 var를 재설정할 수 없다.
return [n] 종료 상태를 n의 반환하고, 함수로부터 복귀한다. 
set  옵션과 위치 인자를 설정한다. 
shift [n] 위치 인자를 지정한 n회 만큼 왼쪽으로 이동시킨다. 
stop pid 지정한 pid의 프로세스를 중지한다.halt
suspend 현재 쉘의 수행을 정지시킨다. 
test 파일 유형이나 조건식을 평가한다. 
times 현재 쉘에서 수행된 프로세스들의 수행시간에 대한 정보를 출력한다.
trap [arg] [n] 쉘은 시그널 n에 대해 arg를 수행한다.
type [command] 명령어의 유형을 출력한다. 
typeset 변수의 설정이나 속성을 지정한다. declare와 동일하다 
ulimit  프로세스가 사용할 수 있는 자원의 최대 한계를 설정한다. 
umask [octal digits] 파일 생성 시에 적용할 권한(소유자, 그룹, 다른 사람)을 설정한다. 
unalias  별명의 설정을 해제한다. 
unset [name]  변수나 함수의 설정을 해제한다. 
wait [pid#n] 백그라운드에서 수행되는 지정한 pid의 프로세스가 종료할 때가지 스크립트를 중지한다. 

Posted by linuxism
,

MIME type

Development/HTML 2011. 1. 9. 12:29
MIME type이란 Multipurpose Internet Mail Extensions의 약어로 메시지 컨텐트 형식을 정의하기 위한 인터넷 표준을 말합니다. MIME 메시지는 텍스트, 이미지, 오디오, 비디오, 및 기타 애플리케이션의 특정 데이터를 포함할 수 있으며 일반적으로 홈페이지 상에 표현되는 멀티미디어 데이타에 대한 형식을 말합니다. 클라이언트의 웹브라우저나 웹사이트를 제공하는 웹서버에서 MIME Type이 등록되지 않는다면 사용자들은 해당하는 컨텐트를 웹브라우저에서 볼 수 없게 됩니다. 공식 MIME 정보는 IETF(Internet Engineering Task Force)에서 RFC 기준으로 정의하고 있습니다.


  • RFC-822   ARPA 인터넷 텍스트 메시지에 대한 표준
  • RFC-2045 MIME Part 1: 인터넷 메시지 본문의 형식
  • RFC-2046 MIME Part 2: 미디어 형식
  • RFC-2047 MIME Part 3: 비-ASCII 텍스트에 대한 헤더 확장
  • RFC-2048 MIME Part 4: 등록 프로시져
  • RFC-2049 MIME Part 5: 적합한 기준 및 예시

  • 컨텐트 형식으로 본 MIME Type

    Type/sub-typeExtension
    application/envoy evy
    application/fractals fif
    application/futuresplash spl
    application/hta hta
    application/internet-property-stream acx
    application/mac-binhex40 hqx
    application/msword doc
    application/msword dot
    application/octet-stream *
    application/octet-stream bin
    application/octet-stream class
    application/octet-stream dms
    application/octet-stream exe
    application/octet-stream lha
    application/octet-stream lzh
    application/oda oda
    application/olescript axs
    application/pdf pdf
    application/pics-rules prf
    application/pkcs10 p10
    application/pkix-crl crl
    application/postscript ai
    application/postscript eps
    application/postscript ps
    application/rtf rtf
    application/set-payment-initiation setpay
    application/set-registration-initiation setreg
    application/vnd.ms-excel xla
    application/vnd.ms-excel xlc
    application/vnd.ms-excel xlm
    application/vnd.ms-excel xls
    application/vnd.ms-excel xlt
    application/vnd.ms-excel xlw
    application/vnd.ms-outlook msg
    application/vnd.ms-pkicertstore sst
    application/vnd.ms-pkiseccat cat
    application/vnd.ms-pkistl stl
    application/vnd.ms-powerpoint pot
    application/vnd.ms-powerpoint pps
    application/vnd.ms-powerpoint ppt
    application/vnd.ms-project mpp
    application/vnd.ms-works wcm
    application/vnd.ms-works wdb
    application/vnd.ms-works wks
    application/vnd.ms-works wps
    application/winhlp hlp
    application/x-bcpio bcpio
    application/x-cdf cdf
    application/x-compress z
    application/x-compressed tgz
    application/x-cpio cpio
    application/x-csh csh
    application/x-director dcr
    application/x-director dir
    application/x-director dxr
    application/x-dvi dvi
    application/x-gtar gtar
    application/x-gzip gz
    application/x-hdf hdf
    application/x-internet-signup ins
    application/x-internet-signup isp
    application/x-iphone iii
    application/x-javascript js
    application/x-latex latex
    application/x-msaccess mdb
    application/x-mscardfile crd
    application/x-msclip clp
    application/x-msdownload dll
    application/x-msmediaview m13
    application/x-msmediaview m14
    application/x-msmediaview mvb
    application/x-msmetafile wmf
    application/x-msmoney mny
    application/x-mspublisher pub
    application/x-msschedule scd
    application/x-msterminal trm
    application/x-mswrite wri
    application/x-netcdf cdf
    application/x-netcdf nc
    application/x-perfmon pma
    application/x-perfmon pmc
    application/x-perfmon pml
    application/x-perfmon pmr
    application/x-perfmon pmw
    application/x-pkcs12 p12
    application/x-pkcs12 pfx
    application/x-pkcs7-certificates p7b
    application/x-pkcs7-certificates spc
    application/x-pkcs7-certreqresp p7r
    application/x-pkcs7-mime p7c
    application/x-pkcs7-mime p7m
    application/x-pkcs7-signature p7s
    application/x-sh sh
    application/x-shar shar
    application/x-shockwave-flash swf
    application/x-stuffit sit
    application/x-sv4cpio sv4cpio
    application/x-sv4crc sv4crc
    application/x-tar tar
    application/x-tcl tcl
    application/x-tex tex
    application/x-texinfo texi
    application/x-texinfo texinfo
    application/x-troff roff
    application/x-troff t
    application/x-troff tr
    application/x-troff-man man
    application/x-troff-me me
    application/x-troff-ms ms
    application/x-ustar ustar
    application/x-wais-source src
    application/x-x509-ca-cert cer
    application/x-x509-ca-cert crt
    application/x-x509-ca-cert der
    application/ynd.ms-pkipko pko
    application/zip zip
    audio/basic au
    audio/basic snd
    audio/mid mid
    audio/mid rmi
    audio/mpeg mp3
    audio/x-aiff aif
    audio/x-aiff aifc
    audio/x-aiff aiff
    audio/x-mpegurl m3u
    audio/x-pn-realaudio ra
    audio/x-pn-realaudio ram
    audio/x-wav wav
    image/bmp bmp
    image/cis-cod cod
    image/gif gif
    image/ief ief
    image/jpeg jpe
    image/jpeg jpeg
    image/jpeg jpg
    image/pipeg jfif
    image/svg+xml svg
    image/tiff tif
    image/tiff tiff
    image/x-cmu-raster ras
    image/x-cmx cmx
    image/x-icon ico
    image/x-portable-anymap pnm
    image/x-portable-bitmap pbm
    image/x-portable-graymap pgm
    image/x-portable-pixmap ppm
    image/x-rgb rgb
    image/x-xbitmap xbm
    image/x-xpixmap xpm
    image/x-xwindowdump xwd
    message/rfc822 mht
    message/rfc822 mhtml
    message/rfc822 nws
    text/css css
    text/h323 323
    text/html htm
    text/html html
    text/html stm
    text/iuls uls
    text/plain bas
    text/plain c
    text/plain h
    text/plain txt
    text/richtext rtx
    text/scriptlet sct
    text/tab-separated-values tsv
    text/webviewhtml htt
    text/x-component htc
    text/x-setext etx
    text/x-vcard vcf
    video/mpeg mp2
    video/mpeg mpa
    video/mpeg mpe
    video/mpeg mpeg
    video/mpeg mpg
    video/mpeg mpv2
    video/quicktime mov
    video/quicktime qt
    video/x-la-asf lsf
    video/x-la-asf lsx
    video/x-ms-asf asf
    video/x-ms-asf asr
    video/x-ms-asf asx
    video/x-msvideo avi
    video/x-sgi-movie movie
    x-world/x-vrml flr
    x-world/x-vrml vrml
    x-world/x-vrml wrl
    x-world/x-vrml wrz
    x-world/x-vrml xaf
    x-world/x-vrml xof


    파일 확장자로 본 Mime Types

    ExtensionType/sub-type
      application/octet-stream
    323 text/h323
    acx application/internet-property-stream
    ai application/postscript
    aif audio/x-aiff
    aifc audio/x-aiff
    aiff audio/x-aiff
    asf video/x-ms-asf
    asr video/x-ms-asf
    asx video/x-ms-asf
    au audio/basic
    avi video/x-msvideo
    axs application/olescript
    bas text/plain
    bcpio application/x-bcpio
    bin application/octet-stream
    bmp image/bmp
    c text/plain
    cat application/vnd.ms-pkiseccat
    cdf application/x-cdf
    cer application/x-x509-ca-cert
    class application/octet-stream
    clp application/x-msclip
    cmx image/x-cmx
    cod image/cis-cod
    cpio application/x-cpio
    crd application/x-mscardfile
    crl application/pkix-crl
    crt application/x-x509-ca-cert
    csh application/x-csh
    css text/css
    dcr application/x-director
    der application/x-x509-ca-cert
    dir application/x-director
    dll application/x-msdownload
    dms application/octet-stream
    doc application/msword
    dot application/msword
    dvi application/x-dvi
    dxr application/x-director
    eps application/postscript
    etx text/x-setext
    evy application/envoy
    exe application/octet-stream
    fif application/fractals
    flr x-world/x-vrml
    gif image/gif
    gtar application/x-gtar
    gz application/x-gzip
    h text/plain
    hdf application/x-hdf
    hlp application/winhlp
    hqx application/mac-binhex40
    hta application/hta
    htc text/x-component
    htm text/html
    html text/html
    htt text/webviewhtml
    ico image/x-icon
    ief image/ief
    iii application/x-iphone
    ins application/x-internet-signup
    isp application/x-internet-signup
    jfif image/pipeg
    jpe image/jpeg
    jpeg image/jpeg
    jpg image/jpeg
    js application/x-javascript
    latex application/x-latex
    lha application/octet-stream
    lsf video/x-la-asf
    lsx video/x-la-asf
    lzh application/octet-stream
    m13 application/x-msmediaview
    m14 application/x-msmediaview
    m3u audio/x-mpegurl
    man application/x-troff-man
    mdb application/x-msaccess
    me application/x-troff-me
    mht message/rfc822
    mhtml message/rfc822
    mid audio/mid
    mny application/x-msmoney
    mov video/quicktime
    movie video/x-sgi-movie
    mp2 video/mpeg
    mp3 audio/mpeg
    mpa video/mpeg
    mpe video/mpeg
    mpeg video/mpeg
    mpg video/mpeg
    mpp application/vnd.ms-project
    mpv2 video/mpeg
    ms application/x-troff-ms
    mvb application/x-msmediaview
    nws message/rfc822
    oda application/oda
    p10 application/pkcs10
    p12 application/x-pkcs12
    p7b application/x-pkcs7-certificates
    p7c application/x-pkcs7-mime
    p7m application/x-pkcs7-mime
    p7r application/x-pkcs7-certreqresp
    p7s application/x-pkcs7-signature
    pbm image/x-portable-bitmap
    pdf application/pdf
    pfx application/x-pkcs12
    pgm image/x-portable-graymap
    pko application/ynd.ms-pkipko
    pma application/x-perfmon
    pmc application/x-perfmon
    pml application/x-perfmon
    pmr application/x-perfmon
    pmw application/x-perfmon
    pnm image/x-portable-anymap
    pot, application/vnd.ms-powerpoint
    ppm image/x-portable-pixmap
    pps application/vnd.ms-powerpoint
    ppt application/vnd.ms-powerpoint
    prf application/pics-rules
    ps application/postscript
    pub application/x-mspublisher
    qt video/quicktime
    ra audio/x-pn-realaudio
    ram audio/x-pn-realaudio
    ras image/x-cmu-raster
    rgb image/x-rgb
    rmi audio/mid
    roff application/x-troff
    rtf application/rtf
    rtx text/richtext
    scd application/x-msschedule
    sct text/scriptlet
    setpay application/set-payment-initiation
    setreg application/set-registration-initiation
    sh application/x-sh
    shar application/x-shar
    sit application/x-stuffit
    snd audio/basic
    spc application/x-pkcs7-certificates
    spl application/futuresplash
    src application/x-wais-source
    sst application/vnd.ms-pkicertstore
    stl application/vnd.ms-pkistl
    stm text/html
    svg image/svg+xml
    sv4cpio application/x-sv4cpio
    sv4crc application/x-sv4crc
    swf application/x-shockwave-flash
    t application/x-troff
    tar application/x-tar
    tcl application/x-tcl
    tex application/x-tex
    texi application/x-texinfo
    texinfo application/x-texinfo
    tgz application/x-compressed
    tif image/tiff
    tiff image/tiff
    tr application/x-troff
    trm application/x-msterminal
    tsv text/tab-separated-values
    txt text/plain
    uls text/iuls
    ustar application/x-ustar
    vcf text/x-vcard
    vrml x-world/x-vrml
    wav audio/x-wav
    wcm application/vnd.ms-works
    wdb application/vnd.ms-works
    wks application/vnd.ms-works
    wmf application/x-msmetafile
    wps application/vnd.ms-works
    wri application/x-mswrite
    wrl x-world/x-vrml
    wrz x-world/x-vrml
    xaf x-world/x-vrml
    xbm image/x-xbitmap
    xla application/vnd.ms-excel
    xlc application/vnd.ms-excel
    xlm application/vnd.ms-excel
    xls application/vnd.ms-excel
    xlt application/vnd.ms-excel
    xlw application/vnd.ms-excel
    xof x-world/x-vrml
    xpm image/x-xpixmap
    xwd image/x-xwindowdump
    z application/x-compress
    zip application/zip

    'Development > HTML' 카테고리의 다른 글

    Tag들  (0) 2012.03.01
    html - <meta> http-equiv Attribute  (0) 2012.02.11
    정중앙 위치 시키기  (0) 2011.01.31
    html - div란?  (0) 2011.01.31
    메타 태그(Meta Tag)란?  (0) 2010.12.11
    Posted by linuxism
    ,

    1. 위치 매개변수와 명령줄 매개변수

        1) 위치 매개변수

            -> 스크립트 이름 다음에 공백 문자로 구분된 각 단어를 매개변수라 부른다

            -> 명령줄 매개변수는 스크립트 내에서 위치 매개변수로 참고할 수 있으며, 
                 $1은 첫번째, $2는 두번째 매개변수를 의미한다

            -> $9 이후 매개변수들은 중괄호를 이용하여 숫자부분을 ${10}처럼 묶어주어야 한다

            -> 변수 $#은 전체 위치 매개변수의 개수를 알아보는데, 
                변수 $*는 전체 위치 매개변수의 내용을 알아보는데 사용한다

            -> 위치 매개변수는 set 명령을 써서 설정(set) 또는 재설정(reset)할 수 있으며, 
                 set명령을 사용하면 이전 설정값은 지워진다

            -> 위치 매개변수

             $0           : 현재 쉘 스크립트의 이름                                  
             $#           : 위치 매개변수의 총 개수를 평가한다                        
             $*           : 모든 위치 매개변수를 평가한다                             
             $@           : 큰 따옴표를 사용하였을 때를 제외하고는 $*와 동일한 의미      
             "$*"         : "$1 $2 $3"으로 평가한다                                 
             "$@"         : "$1" "$2" "$3"으로 평가한다                             
             $1 ... ${10} : 사용가능한 위치 매개변수
      
                            
                $ cat test
                #!/bin/bash
                echo "This script is called $0."
                echo "$0 $1 and $2"
                echo "The number of positional parameters is $#"

                $ ./test
                This script is called ./test.
                ./test  and
                The number of positional parameters is 0

                $ ./test aaa
                This script is called ./test.
                ./test aaa and
                The number of positional parameters is 1

                $ ./test aaa bbb
                This script is called ./test.
                ./test aaa and bbb
                The number of positional parameters is 2


        2) set 명령과 위치 매개변수

            -> 위치 매개변수를 재설정하면 기존의 값들은 잃어버리게 된다

            -> 모든 위치 매개변수의 설정을 해제하려면 'set --' 명령을 사용한다

            -> $0는 언제나 스크립트 이름을 가리킨다

                $ cat test
                #!/bin/bash
                echo The name of this script is $0
                echo The arguments are $*
                   
                    => $*은 모든 위치 매개변수를 의미한다

                set $(date)
                echo The date is $2, $3, $6.


                $ ./test a b c d
                The name of this script is ./test
                The arguments are a b c d
                The date is 11., 21., KST.


                $ cat test
                #!/bin/bash
                name=${1:?"requires an argument"}
                echo Hello $name

                    => 특수 변수 변경자인 :?는 $1이 값을 가지고 있는지 검사한다

                    => 지정한 값이 없으면 스크립트를 종료하고 메시지를 출력한다


                $ ./test
                ./test: line 2: 1: requires an argument

                $ ./test aaa
                Hello aaa


            -> $*와 $@의 차이

                => $*와 $@의 의미는 큰 따옴표 안에서 사용되는 경우에만 서로 다르다
               
                => 큰 따옴표 안에 $*를 사용하는 경우에는 매개변수들이 단일 문자로 취급된다

                => $@를 큰 따옴표 안에 사용하면 매개변수들은 서로 분리된 문자로 인식된다

                    $ set 'aaa bbb' ccc ddd
                    $ for i in $*

                    > do
                    > echo $i
                    > done
                    aaa
                    bbb
                    ccc
                    ddd

                    $ set 'aaa bbb' ccc ddd
                    $ for i in "$*"
                    > do
                    > echo $i
                    > done
                    aaa bbb ccc ddd

                        > $*이 큰 따옴표 안에 들어있기 때문에 전체 매개변수를 하나의 문자열로 처리한다


                    $ set 'aaa bbb' ccc ddd
                    $ for i in $@
                    > do
                    > echo $i
                    > done
                    aaa
                    bbb
                    ccc
                    ddd

                    $ set 'aaa bbb' ccc ddd
                    $ for i in "$@"
                    > do
                    > echo $i
                    > done
                    aaa bbb
                    ccc
                    ddd

                        > $@가 큰 따옴표 안에 있으므로 각 위치 매개변수를 개개의 문자열로 처리한다


    2. 조건의 표현과 흐름 제어

        1) 종료 상태

            -> 종료 상태는 명령이 성공했는지 실패했는지 검사하는 것이고 다른 하나는 표현식이 참인지 거짓인지
                판별하는 것이다

            -> 종료 상태가 0이면 성공이나 참을 의미한다

            -> 종료 상태가 0이 아니면 실패나 거짓을 의미한다

            -> ? 변수는 가장 마지막으로 실행된 명령의 종료 상태를 보관한다

               
        2) test 내장 명령

            -> 단일 대괄호와 test 명령

                => 표현식의 평가에는 일반적으로 test 명령을 사용한다

                => test 명령은 대괄호 ([ ])로도 표현할 수 있다

                => test 명령이나 대괄호를 사용하여 식을 평가할 때, 쉘은 메타문자를 전개하지 않는다

                => 변수에 값을 저장할 때는 단어 단위로 나뉘어 저장하게 되므로 스페이스를 포함한 문자열은
                    따옴표로 묶어준다

            -> 이중 대괄호와 test 명령

                => 배시 2.x 버전 이상에서는 이중 대괄호 ([[ ]])를 사용하여 표현식을 평가할 수 있다

                => 단어를 분리하여 변수에 저장하지 않고 패턴 검색이 가능할 뿐만 아니라, 
                    메타문자에 대한 해석도 수행한다

                => 스페이스를 포함하는 문자열에는 반드시 따옴표를 사용하여야하며, 
                    스페이스의 포함 여부와 상관없이 정확히 일치하는지의 여부를 검사할 때도 따옴표를 
                    사용하여야 한다

                => test 명령에서는 논리연산자 &&(and), ||(or)를 -a, -o 옵션으로 치환하여 사용할 수 있다

            -> test 명령 연산자

          => 문자열 검사                                                              
              [ string1 = string2 ]  : string1은 string2와 같다                     
              [ string1 == string2 ] : string1은 string2와 같다                            
              [ string1 != string2 ] : string1은 string2와 다르다                   
                                       (!= 양족에는 스페이스를 사용하여야 한다 )        
              [ string ]             : string은 널이 아니다                          
              [ -z string ]          : string의 길이가 0 이다                        
              [ -n string ]          : string의 길이가 0이 아니다                    
              [ -l string ]          : string의 길이(문자의 개수)                    

          => 논리 검사                                                                
              [ string1 -a string2 ] : and 연산자                                   
              [ string1 -o string2 ] : or 연산자                                    
              [ ! string1 ]          : not 연산자                                  

          => 논리검사(복합 test 명령)                                                  
              [[ pattern1 && pattern2 ]] : pattern1과 pattern2가 모두 참                
              [[ pattern1 || pattern2 ]] : pattern1과 pattern2 중에 하나가 참            
              [[ ! pattern ]]            : pattern과 같지 않다                          

          => 정수 검사                                                                
              [ int1 -eq int2 ]          : int1은 int2와 같다                           
              [ int1 -ne int2 ]          : int1은 int2와 다르다                         
              [ int1 -gt int2 ]          : int1은 int2보다 크다                         
              [ int1 -ge int2 ]          : int1은 int2보다 크거나 같다                   
              [ int1 -lt int2 ]          : int1은 int2보다 작다                         
              [ int1 -le int2 ]          : int1은 int2보다 작거나 같다                  

          => 파일 검사를 위한 이항 연산자                                               
              [ file1 -nt file2 ]        : file1이 file2보다 새로운 파일이면 참           
              [ file1 -ot file2 ]        : file1이 file2보다 오래된 파일이면 참           
              [ file1 -ef file2 ]        : file1과 file2가 동일한 장치이거나 같은         
                                           inode 번호를 가면 참                    

                $ name=kyoung
                $ grep "$name" /etc/passwd
                kyoung:x:1000:1000:kyoung,,,:/home/kyoung:/bin/bash
                $ echo $?
                0

                $ test $name != kyoung
                $ echo $?
                1

                $ [ $name = kyoung ]
                $ echo $?
                0

                $ [ $name = [Kk]????? ]
                $ echo $?
                1
               
                    > test 명령에서는 와일드 카드를 사용할 수 없다 따라서 ?를 일반 문자로 취급한다


            -> let 명령과 이중 괄호로 산술연산 처리

                => 산술식 평가에도 test 명령을 사용할 수 있지만, C언어에서처럼 풍부한 연산자를 사용하고 싶다면
                   let 명령의 사용을 권장한다

                => let 명령은 이중 소괄호 ((( )))로 치환하여 사용할 수 있다

                => let 명령 연산자

                 -                : 음수                          
                 +                : 양수                           
                 !                : 논리 부정                      
                 ~                : 비트 단위 부정                  
                 *                : 곱셈                           
                 /                : 나누기                         
                 %                : 나머지                         
                 +                : 덧셈                          
                 -                : 뺄셈     
                         
                 bash 2.x 이후 추가된 let 연산자                        
                 <<               : 비트 단위 왼쪽 시프트           
                 >>               : 비트 단위 오른쪽 시프트          
                 <= >= <>         : 비교 연산자                    
                 == !=            : 등호 연산자                    
                 &                : 비트 단위 and                  
                 ^                : 비트 단위 배타적 or             
                 |                : 비트 단위 or                   
                 &&               : 논리곱(and)                    
                 ||               : 논리합(or)                     
                 = *= /= %= += -= 
                 <<= >>= &= ^= |= : 대입 및 복합 연산자
            


                    $ x=2
                    $ y=3

                    $ (( x > 2 ))
                    $ echo $?
                    1

                    $ (( x < 3 ))
                    $ echo $?
                    0

                    $ (( x == 2 && y == 3 ))
                    $ echo $?
                    0

                    $ (( x > 2 || y < 3 ))
                    $ echo $?
                    1

        - if 명령
     
            -> if문은 종료 상태 값이 0이면 명령이 성공적으로 수행되었음을 
               의미하고 키워드 then 다음의 문장들이 실행된다 
     
            -> 형식 
     
                if 명령
                then
                    명령
                    명령
                fi
     
     
                => 숫자 및 문자열에 대해 test 사용 - 구형식
     
                    if test 조건식
                    then 
                        명령
                    fi
     
                    또는 
     
                    if [ 문자열/수식 ] then
                        명령
                    fi
     
             
                => 문자열에 대해 test 사용 - 새형식
     
                    if [[ 문자열 조건식 ]] then 
                        명령
                    fi
     
                 
                => 숫자에 대해 let 사용 - 새형식
     
                    if (( 수식 ))
     
                 
                $ shopt -s extglob
     
                    > shopt 내장 명령이 extglob을 설정하면 확장 메타 문자를 쓸 수 있다 
             
                $ answer="not really"
     
                $ if [[ $answer = [Nn]o? ( way|t really ) ]]
                then
                    echo "So sorry."
                fi
     
                    > 확장 패턴 검색을 사용한다 
     
                    > 이 표현식에 따르면 answer 변수의 값이 no나 No로 시작하고 괄호 안에 
                      있는 표현식이 0번 또는 1번 나오면 전체 표현식은 참이 된다 
     
     
     
            -> exit 명령과 변수      
     
                => exit 명령은 스크립트를 중지시키고 명령줄로 돌아가고자 할 때 사용한다 
     
                $ if (( $# != 2 ))
                then 
                    echo "Usage: $0 mdays size " 1>&2
                    exit 1
                fi
     
                    > 매개변수가 2개가 아니면 오류 메시지를 표준 오류로 출력시키고 스크립트의
                      종료 상태를 1로 반환하고 종료한다
     
     
     
            -> 널 값 검사 
     
                => 변수가 널인지 검사할 때는 널의 표현에 큰 따옴표를 사용하여야한다
                   그렇지 않으면 test 명령이 실패한다          
     
                $ if [ "$name" = "" ]
                then
                    echo The name variable is null 
                fi
     
                    > 변수 name의 값이 널이면 검사 결과는 참이되며 큰 따옴표는 널을 표현하기 위해 
                      사용한다 
     
                 
     
        3) if/else 명령
     
            -> if/else 명령은 양자 택일을 표현하는데 사용한다 
     
            -> 형식 
     
                if 명령
                then 
                    명령(들)
                else
                    명령(들)
                fi
     
                 
                $ if grep "$name" /etc/passwd >& /dev/null; then 
                    echo Found $name!
                else
                    echo "Can't find $name."
                    exit 1
                fi
     
     
        4) if/elif/else 명령
     
            -> 다중 택일 표현이다 
     
            -> 형식 
     
                if 명령
                then 
                    명령(들)
                elif 명령
                then 
                    명령(들)
                elif 명령
                then 
                    명령(들)
                else
                    명령(들)
                fi
     
     
        5) 파일 검사 
     
            -> 스크립트를 작성하다 보면 특정 파일에 대한 정보가 필요한 경우 사용
     
            -> 파일의 권한, 형식, 기본속성 등을 확인 할 때 사용한다 
     
            -> 파일 검사 연산자 
     
              -b filename : 블럭 파일                                      
              -c filename : 문자 파일                                      
              -d filename : 디렉토리가 존재                                 
              -e filename : 파일이 존재                                     
              -f filename : 파일이 존재하고, 디렉토리가 아님                  
              -G filename : 파일이 존재하고, 유효 그룹 ID의 소유이다           
              -g filename : setGID가 설정되어 있다                          
              -k filename : 스티키 비트가 설정되어 있다                       
              -L filename : 파일이 심볼릭 링크이다                           
              -p filename : 파일이 명명된 파이프 이다                        
              -O filename : 파일이 존재하고, 유효 사용자 ID의 소유이다         
              -r filename : 파일이 읽기 가능하다                             
              -S filename : 파일이 소켓이다                                 
              -s filename : 파일 크기가 0이 아니다                           
              -t fd       : 파일 식별자가 터미널에 열려있다                   
              -u filename : setUID가 설정되어 있다                          
              -w filename : 파일에 쓰기가 가능하다                           
              -x filename : 파일이 실행 가능하다                
     
                if [ -d $file ] 
                then 
                    echo "$file is a directory"
     
                        > file이 디렉토리이면 출력 
     
                elif [ -f $file ]
     
                        > file이 디렉토리가 아니면 다시 검사 
                then 
                    if [ -r $file -a -w $file -a -x $file ]
                    then 
                        echo "You have read, write, and execute \ permission on $file."
                    fi
                         
                        > file이 읽기,쓰기,실행 모두 가능하면 출력
     
                    else 
                        echo "$file is neither a file nor a directory."
     
                        > 위 내용이 모두 거짓이면 출력
     
                fi         
     
     
        6) null 명령
     
            -> null 명령은 내장 명령으로서 콜론(:)으로 나타낸다 
         
            -> 실제 아무런 작업도 하지 않으며, 단지 종료 상태를 0으로 돌려준다 
     
            -> 주로 if 다음에 어떤 작업도 지정하고 싶지 않을 때 사용한다 
     
            -> then 다음에 문장을 기술하지 않으면 오류가 발생하기 때문에, 무한 반복문을 작성할 때도 
               사용한다 
     
                name=Tom
                if grep "$name" databasefile >& /dev/null
                then
                 : 
                else
                    echo "$1 not found in databasefile"
                    exit 1
                fi
     
                    > 콜론(:)은 널 명령으로 종료 상태 값을 0으로 되돌리기 외에 아무 일도 
                      하지 않는다 
     
     
                $ DATAFILE=
                $ : ${DATAFILE:=$HOME/db/datafile}
                $ echo $DATAFILE
                /home/jody/ellie/db/datafile
     
                    > 콜론(:) 명령은 아무것도 하지 않는 명령이다 
     
                    > 변경자 :=에 의해 널인 변수 값이 지정한 값으로 치환된다 
     
                    > 변경된 값은 DATAFILE에 영구적으로 설정된다 
     
     
        7) case 명령
     
            -> 다중 분기 명령으로 if/elif 대신 사용한다 
     
            -> case문의 변수가 value1, value2, ... 중의 하나와 일치하면 그 값 이후부터 이중 세미콜론(;;)이 
               나올때까지의 명령들이 실행된다
     
            -> 수행 후에는 esac 다음으로 프로그램의 제어가 옮겨 진다 
     
            -> case 변수와 대응되는 것이 없으면, *) 기호 다음에서 부터 esac 사이의 문장들을 수행한다 
     
            -> *)의 역할은 if/else 조건문에서 else 문장과 동일하다 
     
            -> case 변수의 값에는 와일드 카드나 |(OR연산자)를 사용할 수 있다 
     
            -> 형식
     
                case 변수 in 
                value1)
                    명령(들)
                    ;;
                value2)
                    명령(들)
                    ;;
                *)
                명령(들)
                    ;;
                esac grep 단어 파일명 파일명 ...
     
     
                $ cat test
     
                echo -n "Choose a foreground color for your xterm window: "
                read color
                 
                case "$color" in 
                [Bb]l??)
                    xterm -fg blue -fn terminal &
                    ;;
                 
                [Gg]ree*)
                    xterm -fg darkgreen -fn terminal &
                    ;;
                 
                red | orange)
                    xterm -fg $color -fn terminal & 
                    ;;
     
                *)
                    xterm -fn terminal 
                    ;;
     
                esac
     
                echo "Out of case command"
     
             
            -> here 문서와 case 명령을 이용한 메뉴 구성
     
                => here 문서와 case 명령은 함께 사용되는 경우가 잦다 
     
                => here 문서는 화면에 출력될 메뉴를 구성하는 데 사용하며, case 명령은 
                   사용자의 선택을 검사하여 적절한 메뉴 항목을 수행시킨다 
     
     
                $ cat test 
     
                echo "Select a terminal type: "
                cat <<- ENDIT
                    1) unix
                    2) xterm
                    3) sun
                ENDIT
     
                read choice
                 
                case "$choice" in 
                1)     TERM=unix
                    export TERM
                    ;;
                 
                2)     TERM=xterm
                    export TERM
                    ;; 
     
                3)     TERM=sun 
                    export TERM
                    ;;
                esac
                echo "TERM is $TERM."

    'Development > ShellScript' 카테고리의 다른 글

    Shift 명령어  (1) 2012.03.13
    Bash를 이용한 쉘 스크립팅 완전 가이드  (0) 2012.03.12
    bash 내부 명령어  (0) 2011.01.09
    bash 쉘 스크립트 - 위치 매개변수  (0) 2011.01.06
    Posted by linuxism
    ,