+ 00 00 0000

Have any Questions?

04_Simple Coding – 01_shell_script

04_Simple Coding – 01_shell_script

μ‰¬μš΄ λͺ©μ°¨

πŸ“ƒ μš”μ•½

컴퓨터λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ 졜초 μœˆλ„μš°λ₯Ό μ„€μΉ˜ν•΄μ•Ό μ‚¬μš©ν•  수 있음.
μœˆλ„μš° ν”„λ‘œκ·Έλž¨μ„ OS(Operating System) 라고 ν•˜κ³  운영체제라고 함.
μš΄μ˜μ²΄μ œλŠ” ν‚€λ³΄λ“œ, 마우슀, μŒμ•…, λ™μ˜μƒ λ“±μ˜ ν™˜κ²½μ„ μ‰½κ²Œ μ‚¬μš©ν•  수 있게 ν•΄μ£ΌλŠ” S/W 둜 졜초둜 μ„€μΉ˜λ˜μ–΄μ•Ό 함.
운영체제의 μ’…λ₯˜λŠ” μœˆλ„μš°(Window), λ¦¬λˆ…μŠ€(Linux), μœ λ‹‰μŠ€(Unix)κ°€ 있으며 주둜 개인용으둜 μœˆλ„μš°λ₯Ό μ‚¬μš©ν•˜κ³  νšŒμ‚¬μ—μ„œλŠ” λ¦¬λˆ…μŠ€ λ˜λŠ” μœ λ‹‰μŠ€κ°€ μ‚¬μš©λ¨

μš”μ†Œ 기술 :

– Basic : λ¦¬λˆ…μŠ€

πŸ“ƒ 기술 κ΅¬ν˜„

μŠ€νŽ™ :

- docker desktop

πŸ“ƒ μ»¨ν…Œμ΄λ„ˆ 개발

μ°Έκ³ ) μ…€μŠ€ν¬λ¦½νŠΈ : μ…€μ—μ„œ μˆ˜ν–‰ν•  λͺ…λ Ήμ–΄λ₯Ό 적어 놓은 파일

λ‹¨μˆœν•œ λͺ…λ Ήμ–΄λ₯Ό λ‚˜μ—΄ν•˜κΈ°λ„ ν•˜κ³  , 쑰건문, λ°˜λ³΅λ¬Έμ„ κΈ°μˆ ν•΄μ„œ μ‚¬μš©ν•  수 있음(ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄)
μž₯점 : 1) λ³΅μž‘ν•œ 처리λ₯Ό μ‰½κ²Œ μ‹€ν–‰ν•  수 있고
2) λ°˜λ³΅λ˜λŠ” 처리λ₯Ό ν•œλ²ˆμ˜ μž‘μ„±μœΌλ‘œ μž¬μ‚¬μš©ν•  수 있음
3) 파일둜 μ œμž‘λ˜λ―€λ‘œ λ‹€λ₯Έμ‚¬λžŒμ—κ²Œ κ³΅μœ λ„ κ°€λŠ₯

(1) μ…€ 선택

sh : λ³Έμ…€(κ³Όκ±°, ν˜„μž¬)
bash : μš”μ¦˜ 많이 μ‚¬μš©ν•˜λŠ” μ…€

(2) μ…€ 슀크립트 μž‘μ„±

예제 1) ν™ˆ λ””λ ‰ν† λ¦¬μ˜ 파일 μ‚¬μš©λŸ‰μ„(크기) 좜λ ₯
λ‹¨μœ„ : MByte, KByte λ‹¨μœ„
μ‚¬μš©λ²•) du -h
(MByte, KByte λ‹¨μœ„λ‘œ λ³΄μž„)
(1) λ¦¬λˆ…μŠ€ μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰
μ»¨ν…Œμ΄λ„ˆ 전체 λͺ©λ‘ 보기
docker ps -a
C:\Users2>docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                            NAMES
7aea09695595        ubuntu:18.04        "bash"                   23 hours ago        Exited (0) 22 hours ago                                        elegant_swartz
...μƒλž΅
μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰
docker start 7aea09695595
C:\Users2>docker start 7aea09695595
7aea09695595
μ»¨ν…Œμ΄λ„ˆ 접속
docker attach 7aea09695595
C:\Users2>docker attach 7aea09695595
(2) λ¦¬λˆ…μŠ€ 접속
ubuntu ν”„λ‘¬ν”„νŠΈ
root@7aea09695595:/#
home 이동
root@7aea09695595:/# cd home
root@7aea09695595:/home# ls
oracle 디렉토리 생성
mkdir oracle
root@7aea09695595:/home# mkdir oracle
head : λ¬Έμ„œ μ•žμ—μ„œ λͺ‡κ°œλ§Œ 보기 λͺ…λ Ήμ–΄
tail : λ¬Έμ„œ λμ—μ„œ λͺ‡κ°œλ§Œ 보기 λͺ…λ Ήμ–΄
μ‚¬μš©λ²•) tail -n 개수
μ‚¬μš©λ²•) λͺ…λ Ήμ–΄ | λͺ…λ Ήμ–΄2 -> λͺ…λ Ήμ–΄μ˜ 좜λ ₯κ²°κ³Όκ°€ λͺ…λ Ήμ–΄2의 μž…λ ₯으둜 μ‚¬μš©λ¨
root@7aea09695595:/home# du -h | tail -n 1
8.0K    .

(3) μ…€μŠ€ν¬λ¦½νŠΈ μž‘μ„±

1) homesize.sh 파일 μž‘μ„±
#!/bin/bash

tail -n 1
echo End Shell Script
2) homesize.sh μ‹€ν–‰ κΆŒν•œ λΆ€μ—¬ : chmod λͺ…λ Ήμ–΄ 이용
μ‚¬μš©λ²•) chmod (u,g,o)+(r,w,x) 파일λͺ…
u : user, g : group, o : other , r : read, w : write, x : execute
chmod +x homesize.sh
root@7aea09695595:/home# chmod +x homesize.sh
root@7aea09695595:/home# ls -l
total 8
-rwxr-xr-x 1 root root   31 Jun  9 01:35 homesize.sh
drwxr-xr-x 2 root root 4096 Jun  9 01:01 oracle
μ…€ 슀크립트 μ‹€ν–‰
root@7aea09695595:/home# ./homesize.sh
3) μ…”λ±… : #!
μ‚¬μš©λ²•) #!μ…€λͺ…λ Ήμ–΄
배쉬셀을 μ‚¬μš©ν•˜κ² λ‹€λŠ” μ‰˜μŠ€ν¬λ¦½νŠΈ : #!/bin/bash
본셀을 μ‚¬μš©ν•˜κ² λ‹€λŠ” μ‰˜μŠ€ν¬λ¦½νŠΈ : #!/bin/sh
μ°Έκ³ ) vim(vi) 에디터 μ„€μΉ˜
apt-get install -y vim
μ—°μŠ΅λ¬Έμ œ 1) μ•„λž˜μ˜ 결과와 같은 μ…€ 슀크립트 μž‘μ„±ν•˜κΈ°
μ…€μŠ€ν¬λ¦½νŠΈλͺ… : rootfs.sh
(1) echo “root directory”
(2) cd /
(3) ls -l
#!/bin/bash

echo "root directory"
cd /
ls -l
단, μ…€μŠ€ν¬λ¦½νŠΈμ— μ‹€ν–‰ κΆŒν•œμ„ μΆ”κ°€ν•˜κ³  μ‹€ν–‰ν•˜μ„Έμš”
μ…€ 슀크립트 μž‘μ„± : rootfs.sh
cat > rootfs.sh
root@7aea09695595:/home# cat > rootfs.sh
#!/bin/bash

echo "root directory"
cd /
ls -l
μ‹€ν–‰ κΆŒν•œ μ£ΌκΈ° :
chmod +x rootfs.sh
root@7aea09695595:/home# chmod +x rootfs.sh
μ…€μŠ€ν¬λ¦½νŠΈ μ‹€ν–‰
./rootfs.sh
root@7aea09695595:/home# ./rootfs.sh
root directory
total 80
drwxr-xr-x   1 root root 4096 Jun  8 01:53 bin
drwxr-xr-x   2 root root 4096 Apr 24  2018 boot
...μƒλž΅
4) λ³€μˆ˜ μž‘μ„±
μ°Έκ³ ) 주석 : #(μ…€μŠ€ν¬λ¦½νŠΈ 주석)
μ…€λ³€μˆ˜(ν™˜κ²½λ³€μˆ˜) : λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ° 언어와 λΉ„μŠ·ν•œ μš©λ„λ‘œ μ‚¬μš©
μ‚¬μš©λ²•) λ³€μˆ˜=κ°’ : λ³€μˆ˜μ •μ˜
$λ³€μˆ˜ : λ³€μˆ˜λ₯Ό μ‚¬μš©ν• λ•Œ μ•žμ— $ 뢙여야함
=(λŒ€μž…μ—°μ‚°μž) μ•žλ’€μ— 곡백이 있으면 μ•ˆλ¨
λ¬Έμžμ—΄ : λ”°μ˜΄ν‘œ(ν™‘, 쌍)
μ •μˆ˜ : 숫자
예제 2) hello world μ…€λ³€μˆ˜ HELLO 에 λ„£κ³  echo μ…€λ³€μˆ˜λ₯Ό 좜λ ₯ν•΄λ³΄μ„Έμš”
파일λͺ… : hello.sh
#!/bin/bash

HELLO="hello world"
echo $HELLO
hello.sh μ…€μŠ€ν¬λ¦½νŠΈ μž‘μ„±
cat > hello.sh
root@7aea09695595:/home# cat > hello.sh
#!/bin/bash

HELLO="hello world"
echo $HELLO
μ‹€ν–‰ κΆŒν•œ μ£ΌκΈ°
chmod +x hello.sh
root@7aea09695595:/home# chmod +x hello.sh
μ‹€ν–‰ν•˜κΈ°
./hello.sh
root@7aea09695595:/home# ./hello.sh
hello world
root@7aea09695595:/home#
5) λ³€μˆ˜μ— λͺ…λ Ήμ–΄ λ„£κΈ°
μ‰˜λ³€μˆ˜μ— λͺ…λ Ήμ–΄ 자체λ₯Ό 넣을 수 있음
μ‚¬μš©λ²•) λ³€μˆ˜=$(λͺ…λ Ήμ–΄) == λ³€μˆ˜=λͺ…λ Ήμ–΄
예제 3) ν˜„μž¬λ‚ μ§œλ₯Ό λ³€μˆ˜μ— λ„£κ³  ν˜„μž¬λ‚ μ§œ μ΄λ¦„μœΌλ‘œ λΉˆνŒŒμΌμ„ λ§Œλ“€μ–΄ λ³΄μ„Έμš”
ν˜„μž¬λ‚ μ§œ λͺ…λ Ήμ–΄) date +%Y-%m-%d
+ : 포맷 μ‚¬μš©
%Y : 4자리 연도
%m : μ›”
%d : 일
μ‹œκ°„ 찾아보기(ꡬ글)
var.sh μž‘μ„±
root@7aea09695595:/home# cat > var.sh
#!/bin/bash

curdate=$(date +%Y-%m-%d)
curdate2=`date +%Y-%m-%d`

echo $curdate
echo $curdate2
μ‹€ν–‰ κΆŒν•œ μ£ΌκΈ°
chmod +x var.sh
root@7aea09695595:/home# chmod +x var.sh
μ‹€ν–‰
root@7aea09695595:/home# ./var.sh
2023-06-09
2023-06-09
root@7aea09695595:/home#

λ‹΅κΈ€ 남기기

이메일 μ£Όμ†ŒλŠ” κ³΅κ°œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•„μˆ˜ ν•„λ“œλŠ” *둜 ν‘œμ‹œλ©λ‹ˆλ‹€