-
shell 특성 2linux/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