록키 리눅스에서 기본적으로 제공하는 셸은 bash(배시 셸) 이다.
프로그래밍 언어를 배웠다면 크게 비슷하기 때문에 간략하게 정리만 하고 넘어간다.
셸의 명령문 처리방법
(프롬프트) 명령어 [옵션...] [인자...]
ls -l
rm -rf /mydir
find . / -name "*.conf*
사용 예시이다.
find . / -name "*.conf*
환경변수
echo $환경변수
주요 환경 변수는 다음과 같다
HOME : 현재 사용자의 홈 디렉토리
LANG : 기본 지원되는 언어
TERM : 로그인 터미널 타임
USER : 현재 사용자의 이름
COLUMNS : 현재 터미널의 컬럼 수
PS1 : 1차 명령 프롬프트 변수
BASH : bash 셸의 경로
HISTFILE : 히스토리 파일의 경로
HOSTNAME : 호스트의 이름
LONNAME : 로그인 이름
MAIL : 메일을 보관하는 경로
PATH : 실행 파일을 찾는 디렉토리 경로
PWD : 사용자의 현재 작업 디렉토리
SHELL : 로그인해서 사용하는 셸
DISPLAY : X 디스플레이 이름
LINES : 현재 터미널 라인 수
PS2 : 2차 명령 프롬프트(대개는 '>')
BASH_VERSION : bash번전
HISTSIZE : 히스토리 파일에 저장되는 개수
USERNAME : 현재 사용자 이름
LS_COLORS : ls 명령어의 확장자 색상 옵션
OSTYPE : 운영체제 타입
export 환경변수=값 형식으로 환경 변수 값을 변경한다.
그외 환경변수는 printenv
셸 스크립트 프로그래밍 실습
nano name.sh
나노 편집기 실행
name.sh
#!/bin/sh
echo "사용자 이름 :" $USER
echo "홈 디렉터리: " $HOME
exit 0
1행. 특별한 형태의 주석 #!으로 bash를 사용하겠다는 의미이다. 반드시 필요하다.
2행~3행 : echo는 화면에 출력하는 명령이다.
4행 : 종료 코드를 반환한다. 제대로 실행됐는지 확인하려면 적절한 종료 코드를 반환하는것이 좋다. 0은 성공을 의미한다.
sh 명령으로 실행
sh name.sh
'실행 가능' 속성으로 변경 후 실행
ls -l *.sh
권한을 확인하면 -rw-r-이다.
chmod +x name.sh
실행 권한을 추가하면
-rwxr- 로 변경된다.
./name.sh
실행이 가능해진다.
root 권한으로 설정했기 때문에 root 사용자만 사용할수 있다. 다른 사용자가 사용하게끔 하려면 /usr/local/bin/ 디렉터리에 복사하고 권한을 755로 변경해야 한다.
변수
변수는 필요한 값을 계속 변경해 저장할 때 사용한다.
변수의 모든 값은 문자열로 취급한다. 숫자를 넣어도 문자로 취급한다.
대소문자를 구분한다.
'=' 앞뒤에는 공백이 없어야 한다.
var1.sh 파일을 하나 생성해서 테스트 해본다.
#!/bin/sh
myvar="Hi Devport"
echo $myvar
echo "$myvar"
echo '$myvar'
echo \$myvar
echo 값 입력 :
read myvar
echo '$myvar' = $myvar
exit 0
1. $변수와 '$변수'는 같다 변수에 입력된 값에 공백이 포함될수 있다면 '$변수'를 사용하는 것이 오류방지에 도움이 된다.
2. '$변수'는 $를 포함한 변수라는 글자자체가 출력된다.
3. \ 역시 '$변수'와 같다.
4. read 는 키보드로 문자열을 입력한다.
숫자계산
numcalc.sh 파일을 생성한다.
#!/bin/sh
num1=100
num2=$num1+200
echo $num2
num3=$(expr $num1 + 200)
echo $num3
num4=$(expr \( $num1 + 200 \) / 10 \* 2)
echo $num4
exit 0
num2 는 단순히 100+200 문자열을 출력한다.
num3 은 계산하여 300을 출력한다.
num4에 \(, \),\*와 같이 괄호와 *(곱하기) 앞에는 예외적으로 \(역슬래시)를 붙여야 된다.
파라미터 변수
파라미터 변수는 $0, $1, $2 등의 형태를 갖는다.
paravar.sh 파일을 생성한다.
#!/bin/sh
echo "실행 파일 이름은 <$0>이다"
echo "첫번째 파라메터는 <$1>이고, 두번째 파라미터는 <$2>이다."
echo "전체 파라미터는 <$*>이다.
exit 0
sh paravar.sh 값1 값2 값3
과 같이 파라미터를 값을 지정해서 sh실행때 넣어줄 수 잇다.
if문과 case문
#!/bin/sh
if [ "devport" = "devport" ]
then
echo "참입니다"
fi
exit 0
'[', ']'사이에 공백에 주의한다.
if~else문
#!/bin/sh
if [ "devport" = "dev" ]
then
echo "참입니다"
else
echo "거짓입니다"
fi
exit 0
조건문의 들어가는 비교 연산자
그 외
-n "문자열" 문자열이 null 이 아니면 참
-z "문자열" 문자열이 null이면 참
case-esac 문
실행할 구문이 더 없으면 뒤에 ;;를 붙인다.
AND,OR 연산자
and는 -a 또는 &&
or -o 또는 ||
반복문
for ~ in문
while 문
until 문
조건이 거짓이면 반복하고 참이면 중단한다.
break, continue,exit,return
break 반복문 종료
continue는 뒤 구문을 skip하고 while 조건식으로 돌아감
exit 해당 프로그램을 완전 종료
return 함수 안에 사용되며 함수를 호출한 곳으로 돌아가게 한다.
'이것이 리눅스다 따라하기' 카테고리의 다른 글
22. 이것이 리눅스다 공부하기 - 사용자별 용량 할당 (0) | 2024.03.26 |
---|---|
21 이것이 리눅스다 공부하기 - LVM (0) | 2024.03.26 |
20 이것이 리눅스다 공부하기 - 고급 RAID 레벨(RAID 6, RAID 1+0) (0) | 2024.03.26 |
19. 이것이 리눅스다 공부하기 - 여러개의 디스크를 하나처럼 사용하기 (0) | 2024.03.25 |
18. 이것이 리눅스다 공부하기 - 디스크 관리와 사용자별 공간 할당 (0) | 2024.03.25 |
17. 이것이 리눅스다 공부하기 - X윈도 사용법 (0) | 2024.03.25 |
16. 이것이 리눅스다 공부하기 - 간단한 커널 컴파일 (0) | 2024.03.24 |
15. 이것이 리눅스다 공부하기 - 응급복구, root 비밀번호 변경 (0) | 2024.03.23 |