+ 00 00 0000

Have any Questions?

04_Simple Coding – 01_shell_script

04_Simple Coding – 01_shell_script

Table of Contents

๐Ÿ“ƒ ์š”์•ฝ

์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ตœ์ดˆ ์œˆ๋„์šฐ๋ฅผ ์„ค์น˜ํ•ด์•ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
์œˆ๋„์šฐ ํ”„๋กœ๊ทธ๋žจ์„ 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#

๋‹ต๊ธ€ ๋‚จ๊ธฐ๊ธฐ

์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ํ•„๋“œ๋Š” *๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค