ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • shell 특성 2
    linux/centOS 2018. 6. 15. 13:56

    ☆ 이름 자동 완성 기능

    : 디렉토리에 있는 파일이나 디렉토리의 첫 번째 문자만 입력 후 Tab키를 누르면 첫 글자로 시작하는 파일이나 디렉토리의 나머지 글자가 자동으로 완성된다. , 첫 문자가 같은 디렉토리나 파일이 있는 경우 Tab키 한번만 누르면 아무 변화도 없지만 Tab키 두 번 연속으로 누르면 동일하게 시작하는 모든 디렉토리나 파일을 출력해 준다.

     

    [명령어 형식]

    # ls t tab키

     

    [EX1] <TAB> 이용한 디렉토리 이동

    # cd /etc/sysco<TAB>

    /etc/sysconfig/

     

    # cd /etc/sysconfig/netw<TAB>

    /etc/sysconfig/network

     

    # cd /etc/sysconfig/network-s<TAB>

    /etc/sysconfig/network-scripts/

     

     

     

    ☆ 변수

     

    변수의 종류

    - 지역변수(Local Variable) : # VAR=5

    - 환경변수(Environment Variable) : # export VAR=5

    - 특수변수(Special Variable) : $$, $?, $!, $0, $1, $#, $*, ....

     

    (1) 지역변수 선언

     

    변수 선언 방법(EX: bash)

    # VAR=5 (# export VAR=5)

    # export VAR

    # echo $VAR (# printf $VAR)

    # unset VAR

     

    지역 변수는 현재 사용하고 있는 쉘에만 적용되는 변수 값으로 선언 하는 것이다. 서브 쉘에서 지역 변수 값을 확인하려고 할 경우 값이 나타나지 않는다.

     

     

    (2) 환경변수 선언

     

    환경변수는 현재 쉘과 서브쉘에 변수를 모두 적용되는 변수 값으로 선언해 주는 것이다. 환경변수를 사용하는 이유는 이전쉘에서 선언한 변수 값을 서브쉘에서도 동일하게 적용하기 위한 것이다.

     

    ※ 환경 변수는 자신이 선언한 쉘의 서브쉘에서 적용되는 것이다. 상위의 쉘에는 적용되지 않는다.

     

     

    (3) 알아두면 좋은 특수 변수

    $ : 현재쉘의 PID를 저장하고 있다. 쉘 스크립트내에서 임시 파일의 이름을 지정할 때 보통 사용이 된다.

     

    # echo $$

    11991

     

    # ps

    PID TTY TIME CMD

    11991 pts/1 00:00:00 bash

     

     

    ? : 바로 이전 명령어의 정상 실행 여부에 대한 결과값이 들어 있다. 쉘 스크립트내에서 이전 명령어의 정상 수행 여부를 확인할 때 주로 사용된다. (0이면 정상종료. 1~255 사이면 비정상 종료.)

     

    # ls /nodir

    ls: /nodir: No such file or directory

     

    # echo $?

    2

     

    ! : 바로 이전에 백그라운드로 실행한 프로세스의 PID번호가 저장 된다.

     

    # sleep 300 &

    [1] 25192

    [1] : Job ID

    25192 : PID

     

    # echo $!

    25192

     

    # ps

    PID TTY TIME CMD

    24868 pts/1 00:00:00 bash

    25101 pts/1 00:00:00 bash

    25192 pts/1 00:00:00 sleep

    25219 pts/1 00:00:00 ps

     

     

    인자변수(Argument Variable)

    $로 표시하여 인자변수의 값이 몇 번째인지 나타낼 수 있다.

    인자변수1

    인자변수2

    인자변수3

     

    # date

    Thu Aug 19 14:24:33 KST 2010

     

    # set $(date)

    # echo $1

    Thu

     

    # echo $2

    Aug

     

    # echo $3

    19

     

    # echo $4

    14:24:47

     

    # echo $5

    KST

     

    # echo $6

    2010

     

     

     

    (5) PATH 변수

     

    명령어를 검색할 디렉토리를 선언할 때 사용하여 절대 경로를 쓰지 않고 실행파일명만을 이용해서 사용할 수 있게 한다. which라는 명령도 PATH에 설정되어 있는 디렉토리의 파일의 경로만을 알려준다.

     

    # gedit &

    # which gedit

    /usr/bin/gedit

     

    # echo $PATH

    /usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:

    /usr/bin:/root/bin:/root/bin

     

     

     

    메타캐릭터(Metacharacter)

    '', "", ``, \, ;

     

    ''(작은 따옴표(single quotation))

    ""(큰 따옴표(Double quotation))

    ``(역 따옴표(Back quotation))

    \ (역 슬래쉬(Back slash))

    ; (세미콜론(Semicolon))

     

     

    ''(작은 따옴표(single quotation))

    쉘이 해석 할 수 없도록 막아 준다.

     

    # echo $HOME

    # echo '$HOME'

     

     

    ""(큰 따옴표(Double quotation))

    쉘이 해석 할 수 없도록 막아 준다. 단 인식되는 문자($, ``, \)들도 있다.

     

    # echo $HOME

    # echo "$HOME"

    # echo "$HOME is my directory.????"

     

     

    ``(역 따옴표(Back quotation))

    쉘이 해석할 때 명령어로 인식한다. 따라서 역 따옴표 안의 내용을 실행한다.

     

    sh -> ksh -> zsh -> bash

    sh ) # echo ‘date’

    ksh) # echo $(date)

     

     

    \ (역 슬래쉬(Back slash))

    바로 이후에 있는 문자을 쉘이 해석 할 수 없도록 막아 준다.

     

    # echo $HOME

    # echo \$HOME (# echo '$HOME')

     

     

    ; (세미콜론(Semicolon))

    한개의 라인에 여러개 명령어 수행할 때 사용한다.

     

    # ls

    # date

    # cal

     

    # ls ; date ; cal

     

     

    ☆ history

    : 사용자가 로그인 하게 되면 사용자의 명령어를 저장하기 위해서 Stack 공간이 할당된다. Stack 공간은 ksh 쉘을 사용하고 있다면, 기본값은 1000의 명령어를 저장할 수 있는 공간이 할당된다. bash 쉘은 1000개의 명령어를 저장 할 수 있다. 또한 sh 쉘은 히스토리 기능이 없다.

     

    HISTSIZE /* 히스토리를 기록하는 스택의 크기를 지정 */

    HISTFILE /* 히스토리 내용을 지속적으로 저장하는 파일 이름 지정 */

    /* 기본값: ~/.bash_history */

    HISTFILESIZE /* 히스토리파일의 크기 지정 */

     

    # grep -i histsize /etc/profile

    HISTSIZE=1000

     

    # history | less /* 현재까지 사용한 스택에 들어간 명령이 출력 */

    1 ifconfig

    2 ping 163.126.63.1

    3 ping 168.126.63.1

    4 vi /etc/sysconfig/network-scripts/ifcfg-eth0

    5 vi /etc/sysconfig/network-scripts/ifcfg-eth1

    6 vi /etc/hosts

    7 vi /etc/resolv.conf

    ....

     

    # history -c /* (clear) 현재까지 사용한 명령을 삭제 */

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    'linux > centOS' 카테고리의 다른 글

    프로세스 관리  (0) 2018.06.17
    shell 특성 3  (0) 2018.06.17
    shell 특성 1  (0) 2018.06.14
    압축과 아카이빙  (0) 2018.06.13
    검색 관련 명령어  (0) 2018.06.13

    댓글

Designed by Tistory.