새벽감성으로 공부중이다 ㅎ..
쉘 스크립트를 공부하기에 앞서서 쉘스크립트가 작동할 Bash에 대하여 먼저 알아볼 것이다.
# Shell 메타문자
쉘은 아래와 같이 일부 특수문자를 특별하게 인식하여 처리한다.
* : 임의의 문자열 ( 한문자 이상 ), ? : 임의의 한문자, [] : 대괄호안 포함된 문자 중 하나
이 특수문자들은 자신이 파일명을 일부만 알고있거나 파일명이 너무 길어 귀찮을때 유용하다.
@ []안에 문자를 쓸때 a~z까지를 다 쓸필요없이 a-z와 같이 축약가능하다.
@ * []?와 같이 혼합사용이 가능
~ : Home, - : Last Dir
이 특수문자들은 작업공간의 이동시 유용하다.
@ cd - 시 이전 디렉터리 명을 출력하고 이동한다.
; : 한번에 왼쪽부터 차례로 여러개의 명령을 수행
| : 왼쪽 명령의 결과를 오른쪽 명령의 입력으로 전달
` ` : 쉘 명령 수행
이 특수문자는 echo와 유용하게 쓰인다.
예시 ) echo ` expr 4 + 5 ` : expr 명령을 수행후 결과를 출력한다.
' ' : 모든 쉘의 특수문자 무시, " " : $, `, \를 제외한 모든 쉘 문자 무시
이 특수문자들은 쉘이 특수문자를 그 자체로 쓰도록 하는 역할을 한다.
쓰이는 곳은 역시 문자출력이다.
예시 ) echo ' ** Hello ** '
만약 ' ' 없이 echo ** Hello **를 친다면
당신은 해당 작업공간내에 모든 파일 및 폴더를 구경하게 될 것이다. ( 궁금하면 ㄱㄱ )
예시2 ) echo " ** `expr 4 + 5` ** "
\ : 특수문자를 이스케이프 시퀸스로 작동 ( 즉 ', " 없이도 특수문자로 구별되게 가능 )
예시 ) echo \*\*
>, >>, <, 2> : 입출력 장치의 변경
키보드로 표준 입력 ( stdin )을 받으면 명령이 실행된 후
모니터에 표준 출력 ( stdout ) 혹은 표준 오류 ( stderr )를 출력하는게 일반적이다.
< : 키보드 입력 대신 파일의 내용을 입력 ( 입력 리다이렉션 )
> ( or 1> ), >> : 모니터대신 파일에 내용을 출력
@ 둘의 차이점
> : 기존파일의 내용을 없애고 작성
>> : 기존파일이 있을시 append ( 끝에 내용 추가 )방식으로 작성
2> : 에러 메시지를 모니터 대신 파일에 입력한다.
@ 2>&1 : stdout과 stderr를 한 파일에 들어놓음
# Shell 변수 설정
1 ) 쉘 변수와 환경 변수
쉘 변수 : 현재의 쉘에서만 사용 가능한 변수
@ 변수=값 ( 공백까지 일종의 문자로 인식하므로 띄어쓰기는 하지말자 )
@ 변수에 저장될 문자열이 빈 칸을 포함한다면 " "으로 감싸서 대입한다.
@ 변수에 초기 값을 대입하는 시점에 변수가 생성된다.
@ 모든 변수의 타입은 문자열로 간주된다.
@ 확인 명령 : set
@ 쉘 변수는 관례상 대문자를 사용
@ 변수는 대소문자를 구분한다. ( 즉 A와 a는 다른 변수 취급 )
환경 변수 : 모든 쉘에서 사용 가능한 변수
@ 확인 명령 : env
@ export 변수=값 , 변수=값 + export 변수
2 ) 변수 값 확인
전체적으로 확인시 set, env를 사용
변수명을 이용하여 확인시 $을 이용
예시 ) echo $day
3 ) 변수 정의 해제
unset 변수명
# Shell의 여러가지 기능들
1 ) alias : 별칭 만들기
@ alias 별칭=명령 : 설정
@ unalias 별칭 : 해제
@ alias : 설정값 확인
2 ) fc : 사용자가 입력한 명령을 기록하여, 재사용 하도록 함
@ 히스토리 목록에서 선택하는 방식
@ 옵션
-s ) 최근 명령을 재실행
-l ) 이전 명령 목록 확인
@ 확인시 번호와 함께 입력한 명령이 출력된다.
@ 명령 재실행
!! ) 마지막 명령 실행
!n ) 번호번째 명령 실행
!-n ) 현재 명령에서 뒤에서 n번째 명령
!문자열 ) 주어진 문자열로 시작하는 명령중 제일 최근 명령
요기까지 정리하였다
쉘 스크립트가 더 이해잘되기위해 기초를 다졌으니 이제 쉘 스크립트를 만나보자!
'Linux > Shell_Script' 카테고리의 다른 글
RANDOM (0) | 2017.12.14 |
---|---|
case (0) | 2017.12.14 |
for과 while (0) | 2017.12.14 |
Shell Script 뭉텅이 (0) | 2017.12.14 |