쉘
- 사용자가 입력한 명령 해석 후 커널에 전달
- 커널의 처리 결과는 사용자에게 전달
한 마디로 사용자와 커널의 중간 매개체라고 생각하면 된다.
기본 쉘은 bash
bash 특징
- Alias 기능(명령어 단축 기능)
- History 기능(위아래 화살표키)
- 연산 기능
- Job Control 기능
- 자동 이름 완성 기능(탭키)
- 프롬프트 제어 기능
- 명령 편집 기능
환경 변수
"echo $환경변수이름" 으로 확인 가능
"export 환경변수=값"으로 환경 변수의 값을 변경
쉘 스크립트 프로그래밍
- 별도로 컴파일 하지 않고 텍스트 파일 형태로 바로 실행
- nano나 gedit으로 작성
- sh <스크립트 파일> 로 실행
- “chmod +x <스크립트 파일>” 명령으로 실행 가능 속성으로 변경한 후에, “./<스크립트파일>”명령으로 실행
모든 변수는 문자열로 취급("")
변수 이름은 대소문자를 구분
변수 대입 시, '=' 좌우 공백 없어야 함
변수의 입력과 출력
$ 문자가 들어간 글자를 출력하려면 ''로 묶어주거나 앞에 ₩ 를 붙인다.
" " 로 변수를 묶어도 된다.
숫자 계산
변수에 대입된 값을 모두 문자열로 취급
expr 명령어를 통해 변수에 들어 있는 값을 숫자로 해서 +, -, *, / 등의 연산
수식에 괄호 또는 곱하기(*)는 그 앞에 꼭 역슬래쉬(₩)를 붙임
파라미터 변수
파라미터 변수는 $0, $1, $2... 의 형태를 가짐
전체 파라미터는 $*로 표현
기본 if 문
#!/bin/sh
if [조건]
then
참일 경우 실행
fi
exit 0
if ~ else 문
if [ 조건 ]
then
참일 경우 실행
else
거짓인 경우 실행
fi
case~esac 문
- if 문은 참과 거짓의 두 경우만 사용(이중 분기)
- 여러가지 경우의 수가 있다면 case 문(다중 분기)
- 요 녀석은 하나의 case문을 끝낼 때 무조건 ;;를 붙여야 한다. 상당히 띠껍게 생겼다.
#!/bin/sh
case "$1" in
start)
echo "시작~~";;
stop)
echo "중지~~";;
restart)
echo "다시 시작~~";;
*)
echo "뭔지 모름~~";;
esac
exit 0
#!/bin/sh
echo "리눅스가 재미있나요? (yes / no)"
read answer
case $answer in
yes | y | Y | Yes | YES)
echo "다행입니다."
echo "더욱 열심히 하세요 ^^";;
[nN]*)
echo "안타깝네요. ㅠㅠ";;
*)
echo "yes 아니면 no만 입력했어야죠"
exit 1;;
esac
exit 0
AND, OR 관계 연산자
- and는 '-a' 또는 '&&'를 사용
- or는 '-o' 또는 '||'를 사용
#!/bin/sh
echo "보고 싶은 파일명을 입력하세요."
read fname
if [ -f $fname ] && [ -s $fname ] ; then
head -5 $fname
else
echo "파일이 없거나, 크기가 0입니다."
fi
exit 0
반복문 – for~in문
for 변수 in 값1 값2 값3 …
do
반복할 문장
done
반복문 - while문
- 조건식이 참인 동안에 계속 반복
- [ 1 ] 또는 [ : ]가 오면 항상 참이 된다.
1에서부터 10까지 합을 while문으로 한다면?
비밀번호를 입력받고 맞을 때까지 계속 입력한다면?
until 문
- 조건식이 참일 때까지 계속 반복한다. (while이랑 반대)
1에서부터 10까지 합을 until 문으로 한다면?
=> while문과 동일하게 작성하되, until [ $i -gt 10 ] 로 바꾼다. (10보다 클 때까지 계속 돈다.)
break, continue, exit, return 문
사용자 정의 함수
함수이름 ( ) { → 함수를 정의
내용들…
}
함수이름 → 함수를 호출
함수의 파라미터 사용
함수이름 ( ) { → 함수를 정의
$1, $2 … 등을 사용
}
함수이름 파라미터1 파라미터2 … → 함수를 호출
eval
문자열을 명령문으로 인식하고 실행
#!/bin/sh
str="ls -l eval.sh"
echo $str
eval $str
exit 0
export
- 외부 변수로 선언해줌.
- 선언한 변수를 다른 프로그램에서도 사용할 수 있도록 함.
printf
C언어의 printf() 함수와 비슷하게 형식을 지정해서 출력
set과 $(명령어)
- 리눅스 명령어를 결과로 사용하기 위해서는 $(명령어) 형식을 사용
- 결과를 파라미터로 사용하고자 할 때, set과 함께 사용
shift
파라미터 변수를 왼쪽으로 한 단계씩 아래로 쉬프트시킴
'CS > 운영체제' 카테고리의 다른 글
리눅스 서버 정리(메일 서버 설치 및 운영 / 데이터베이스 서버 구축 및 운영) (1) | 2024.12.11 |
---|---|
리눅스 서버 정리(원격지 시스템 관리 및 네임 서버 설치 및 운영) (0) | 2024.12.11 |
리눅스 서버 정리(중간고사 범위) (0) | 2024.10.24 |
[CS/운영체제] 가상 메모리, 캐시메모리 (2) | 2024.10.07 |
[CS/운영체제] 스케줄링, 메모리 관리 정리 (2) | 2024.10.02 |