Shell Script 기초 그리고 조건문과 반복문, Linux 계정 설정

2021. 9. 30. 03:12카테고리 없음

/* Shell Script */

* 기초 문법

cd ~
mkdir scripts
cd scripts

vi practice1.sh // 입력 후 아래 스크린 샷 내용 입력, 이하 동일

sh practice1.sh // sh [파일명]으로 실행, 이하 동일
결과 : 달력, 날짜, 환경변수, 파일 상세 목록이 순서대로 출력

vi practice2.sh

sh practice2.sh
결과 : 달력, 10, hello, 날짜 순서대로 출력
※ cal, date는 script 안에 echo문이 이미 설정 있어서 생략 가능, 터미널에서 직접 입력 시와 동일
※ sh 파일에서 주석은 #으로 처리

vi practice3.sh

sh practice3.sh
결과 : hello world!
 글자 출력 시 " "로 String 처리 필요

vi practice4.sh

sh practice4.sh
결과 : hwan 113 111 0 01:59 tty1 00:00:00 grep node // 변수에 터미널 명령어 담아 출력

vi practice5.sh

sh practice5.sh
결과 :
5
50
3
1 + 2
※ echo문은 단순 출력문이기때문에 계산을 하지 않음, expr문으로 계산


vi practice6.sh

sh practice6.sh
결과 : hwan       121   119  0 02:10 tty1     00:00:00 grep node
※ 꺽쇠 ' > ' 사용 시 왼쪽 파일의 내용을 오른쪽 파일로 내보냄

 

* 조건문과 반복문

- 조건 비교 연산자가 숫자일 때와 문자열일 때가 다름

- if문의 기본 구조

- 조건문과 명령어 응용

  • if [ -d [폴더명] ] // 폴더 찾기
  • if [ -f [파일명] ] // 파일 찾기
vi practice7.sh
 

sh practice7.sh
결과 : 터미널에서 ls -l 입력한 결과와 동일

vi practice8.sh

sh practice8.sh
결과 : 위 스크린샷의 파란색 부분과 같음
※ 비교 연산자 표현 방식

  • == : -eq
  • != : -ne
  • < : -lt
  • <= : -le
  • > : -gt
  • >= : -ge

vi practice9.sh

sh practice9.sh
결과1 : 최초 실행 시 폴더가 없으므로 해당 경로에 log 폴더가 없으므로 else문 출력 됨
결과2 : 다음 실행 시 폴더가 있으므로 폴더가 존재합니다 출력 됨

vi practice10.sh

sh practice10.sh
결과 : practice9와 동일, 꺽쇠 응용

vi practice10_2.sh

sh practice10_2.sh
결과 : practice9와 동일, 꺽쇠 응용

vi practice11.sh

sh practice11.sh [매개변수]
결과 : 입력했던 [매개변수]가 출력 됨

vi practice12.sh // 반복문, for문

sh practice12.sh
결과 : 오류 발생, sh 대신 zsh 또는 bash로 대체하여 터미널 입력
zsh practice12.sh
결과 :
A B C D E
0
1
2
3
4
5
6
7
8
9
bash practice12.sh
결과 :
A
B
C
D
E
0
1
2
3
4
5
6
7
8
9

 

* find문

  • find / -name [파일명] // 최상위 디렉토리부터 name이 node인 것들 검색
  • find / -type f -name [파일명] // type이 파일인 것만 검색
  • find / -type f -name "*.js" // 확장자로 검색
  • find ~/ // home 디렉토리 기준으로 검색

/* Linux 계정 설정 */

* 생성, 설정, 변경 등

  • ubuntu config --default-user [계정명] // 기본 계정으로 설정
  • sudo useradd -m [계정명] // 계정 생성
  • sudo passwd [계정명] // 비밀번호 설정
  • su [계정명] // 사용 계정 변경