Self-Improvement

1) Bash 쉘 기능 및 특성 본문

프로그래밍/Shell

1) Bash 쉘 기능 및 특성

JoGeun 2018. 10. 21. 12:56

*Bash
 //기능
 입력을 읽고 해당 명령행을 분석한다.
 특수 문자들을 평가한다.
 파이프, 리다이렉션, 백그라운드 프로세스를 설정한다
 시그널을 처리한다.
 프로그램을 할 수 있는 언어 

 //쉘에서 실행되는 우선순위
 1.쉘 내부 명령어 ex) if, while
 2.엘리어스 ex) alias ls='ls -l'
 3.함수 ex) a() {CMD; CMD}
 4..디스크내 존재하는 명령어 ex) /bin/ls

*쉘의 특성
 쉘의 특성은 많지만 중요하다고 생각한 것 위주로 작성

 1.리다이렉션
  0 : 표준입력 (>, >>)
  1 : 표준출력 (<, <<)
  2 : 표준에러 (2>, 2>>)

 2.파이프 ( | )
ex) #cat /etc/passwd | grep root



 3.특수변수
 $$ : 현재 쉘의 PID 번호 저장(EX: 임시 파일 생성, /tmp/.tmp.$$)
 $! : 바로 이전 수행된 백그라운드 프로세스의 PID 번호 저장
 $? : 바로 이전 수행된 명령어의 return value 저장(0=정상, 1 ~ 255=오류)

$* : 모든 인자($* == $@)
$# : 인자의 개수
$0 : 프로그램 이름
$1 : 프로그램에 대한 첫번째 인자
$2 : 프로그램에 대한 두번째 인자
$3 : 프로그램에 대한 세번째 인자

 4.메타캐릭터
 작은 따옴표('') : 명령어의 변수를 해석하지않음
 큰 따옴표("") : 명령어의 변수를 해석함
 역 따옴표(``) : 명령어안의 명령어 
  ex) #touch file.`date`


 백 슬래쉬(\) : 뒤에오는 변수? 한 글자를 해석안함

 5.함수설정 및 실행, 확인
 #a() { ls ; date ; cal ; }
 #a

 #typeset -f

#unset -f a

 6.cat CMD + Here Documentation
 #vi test

 ※EOF사이의 써진것들이 다시 출력됨
 
 7.그룹화
 #(ls ; pwd ; date) > file1.txt
 ※ls ; pwd ; date > file.txt (date명령어만 저장됨)

 8.조건부
 #cd /etc && ls -l passwd (앞의것이 참이면 뒤에꺼 실행)
  = 앞 명령어가 '참'이면 뒤에꺼 실행o
  = 앞 명령어가 '거짓'이면 뒤에꺼 실행x
 #cd /etc || ls -l passwd (앞명령어가 '참'이면 뒤에껀 실행x)
  = 앞 명령어가 '참'이면 뒤에꺼 실행x
  = 앞 명령어가 '거짓'이면 뒤에꺼 실행o

 9.파일의 이름/경로
 #DIR1=/etc/sysconfig/network-scripts/ifcfg-eth0 
 #dirname $DIR1  (=/etc/sysconfig/..., 경로)
 #basename $DIR1 (=ifcfg-eth0, 이름)

 10.eval CMD
 쉘이 한번더 해석하도록 하는 것
 #A='ls -a'
 #B='-t -r'
 #C='$A $B'
 #echo $C ($A $B)
 #eval echo $C (ls -a -r -r)
 or
 #C="$A $B"
 #eho $C (ls -a -t -r)