티스토리 뷰
이번 시간에는 쉘, 쉘 스크립트 프로그래밍, cron & at 명령어에 대해 배웠다.
-새로 배운 내용
| shell (쉘, 셸) | 사용자의 명령을 해석하여 커널에게 전달
| Shell script | 명령어 집합! 주기적으로 해야 하는 명령들의 집합 -> 복잡한 명령어들을 저장해뒀다가 필요한 경우에 쓸 경우 유용
| bash | 우분투에서 기본으로 사용하는 쉘.
alias 기능 / history 기능 / 연산 기능 / 명령 편집 기능 등...
-쉘의 명령문 처리 방법
(프롬프트) 명령 [옵션..] [인자..]
-환경 변수 : 미리 설정되어 있는 값!
$환경변수이름
ex) $USER (현재 사용자 이름), $HOME(현재 사용자 홈디렉터리 표시), $PWD (사용자의 현재 작업 디렉터리 표시)
-쉘 스크립트 프로그래밍
출력 명령 : echo
스크립트 파일 실행 : sh [스크립트명]
변수 : 변수에 넣는 모든 값은 '문자열'로 취급! 숫자로 사용시 expr 키워드 사용, 수식은 ` 로 묶기. 대소문자 구분, 대입 연산자 '=' 좌우에는 공백X
-조건문 -> [ condition ] 안의 각 단어 사이 공백이 있어야 함!
if문) if [ condition ]; then if [ condition ]
.... then
fi = ....
fi
case문)
case variable in
pattern1 [ | pattern2 | ...] ) ... ;;
pattern3 [ | pattern4 | ...] ) ... ;;
...
*) ... ;;
esac
* 파일의 앞에 n번째 줄까지만 출력하고 싶은 경우 : head n $변수명
-반복문 (for, while문)
for variable in range; do while [ condition ]; do
.... ...
done done
-사용자 정의 함수 만들기 가능 : 함수 호출 시 파라미터를 붙여 사용
| eval | 문자열을 명령어로 인식하고 실행
| export | 외부 변수로 선언. 선언 변수를 타 프로그램에서도 사용 가능!
- cron VS at
cron : 주기적으로 반복되는 일을 자동으로 실행할 수 있도록 시스템을 예약하는 것
at : 일회성 작업을 예약하는 것
-문제 발생 및 고민한 내용
실습을 따라하던 도중 조건문을 쓰는데 조건문이 인식이 안되어 파일이 실행되지 않았다.
이는 if와 [ 사이에 공백이 있어야하는데 모르고 붙여썼기 때문에 발생한 문제였다.
if문을 사용할 때는 if와 [ 사이에 공백이 꼭 있어야 함을 명심하자!
-참고
하드웨어, 커널, 쉘 간의 관계와 개념에 대해 자세히 설명해주는 영상이 이번 수업 내용을 이해하는데 도움이 될 것 같아 링크를 첨부했다!
https://www.youtube.com/watch?v=HYQ65yUlJDg
-회고
이번 시간에는 쉘에 대해 전반적인 내용을 다뤘다.
쉘은 '터미널'과 같이 명령어를 입력하는 환경이다. 내가 매일 실습할 때 터미널을 사용하면서
쉘의 도움을 정말 많이 받고 있음을 깨달았다. 스크립트 환경에서 프로그래밍을 할 수 있는 것이 신기했다.
C++을 배우면서 리눅스를 함께 배워보니 비슷한 부분이 많으면서도 차이가 많음을 알았다. 이를 비교해가며 실습하는 과정이 재밌었다. 그 중 가장 재밌는 것은 환경변수였다. 이미 설정이 되어있어 내가 필요한 변수만 입력하면 정보들이 쫙 나오는 것이 신기하고 편리했다. 쉘 스크립트를 이용해 명령어들을 보관하고, 프로그래밍을 할 수 있음을 실습하며 쉘 스크립트의 장점들을 몸소 느낄 수 있는 시간이었다. :)
-실습과제
: 인터넷에서 유용한 bash script 를 하나 선정하여, 유용한 이유, 해당 스크립트 설명, 실행 결과를 작성하시오.
위 포스팅의 많은 코드 중 '계산기 프로그램'을 분석해보려고 한다. 이는 조건문 case문에 대한 쓰임을 잘 이해할 수 있는 코드이기에 선정해보았다. 뿐만 아니라 if문 사용법 및 변수를 상수로 쓰기 위해선 expr 을 입력해줘야하는 것, 상수로 쓰고 싶은 경우엔 $을 변수명 앞에 붙여야 한다는 것을 예제를 통해 배울 수 있어 유용하기에 이것으로 정했다.
스크립트에 대한 설명은 주석문으로 달겠다.
# vi calculator.sh
|
#!/bin/bash //echo : 출력을 가능하게 해주는 명령어 echo -n "Enter A : " read A // read 명령어를 이용해 키보드 입력을 받아 옴 echo -n "Enter B : " read B //옵션 -n 은 새로 개행하지 않고 그대로 출력하라는 의미.
echo "--------------------------------------------------------------" echo " (1) + (2) - (3) * (4) / " echo " -------------------------------------------------------------"
echo -n "Enter your choice :" read C
case $C in //변수 값을 사용하기 위해서 변수명 앞에 $를 붙여 사용!! 1) echo " A + B = `expr $A + $B ` " ;; // 숫자로 사용하기 위해서는 expr 키워드 사용. ` `로 묶는다. 2) echo " A - B = `expr $A - $B ` " ;; 3) echo " A * B = `expr $A \* $B ` " ;; 4) if [ $B - eq 0 ] ; then echo "Wrong B " else echo " A / B = `expr $A + $B ` " fi;; // if문이 끝나면 fi를 기재해 끝을 알림! *) echo " Wrong Number" ;; // *) : 나머지 esac // case문 끝남을 알림. |
|
이 코드를 기반으로 Server(B) 환경에서 계산기 프로그램 스크립트를 작성하고 실행해봤다.
실행 결과는 다음과 같다.
잘 동작 됨을 확인할 수 있었다.
'Ubuntu Linux 🐧 > [컴퓨터시스템관리] 실습일지' 카테고리의 다른 글
컴퓨터시스템관리) 10주차 실습일지 (0) | 2020.05.24 |
---|---|
컴퓨터시스템관리) 8주차 실습일지 (0) | 2020.05.08 |
컴퓨터시스템관리) 6주차 실습일지 (0) | 2020.04.26 |
컴퓨터시스템관리) 5주차 실습일지 (0) | 2020.04.19 |
컴퓨터시스템관리) 4주차 실습일지 (0) | 2020.04.10 |
- Total
- Today
- Yesterday
- 숫자표현JS
- 프로세스
- 토이프로젝트디자인
- 가까운수js
- 웹디자인툴
- 리액트독학
- graphql개념
- 자바스크립트미니프로젝트
- 리액트state
- 개인플젝
- 스크롤내리면나타나는애니메이션
- Graphql서버연결
- 프로세스스레드차이
- 무료목업레퍼런스사이트
- 리액트
- graphql
- 자바스크립트문법
- 리액트스크롤애니메이션
- 리액트커스텀훅
- JS비동기
- 리액트버튼누르면스크롤이동
- 자바스크립트프로그래머스
- ReactAnimation
- 자바스크립트기초
- 프로그래머스js
- 리액트스크롤이벤트
- 자바스크립트최단거리
- CSS디자인
- 리액트스크롤
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |