์ถ์ฒ : ์์ฝ - ๋ฆฌ๋
์ค ์ค๋ฌด ์
๋ฌธ
๐ผ Shell Script
shell์ script(ํ์ค์ฉ ์คํ)์ง๋ ๊ฒ์ผ๋ก ์ฒซ์ค์ #!/bin/bash ํ์!!
- ๋ช
๋ น์ด ์๋์ด์ ๋ค string์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ "๋ก ๊ฐ์ธ์ง ์์๋ ๋จ
- {} ์ฌ์ด์ ์์ฑํ๋ ๊ฒ์ ํ๋ก๊ทธ๋จ(๋ช
๋ น ex. {print a})
๐ vim์ ํ๊ฒฝ์ค์
- vimrc: vim ์ ํ๊ฒฝ์ค์
- vi .vimrc ์ค๋ช
: indent๋ฅผ ์์์ ์ค์ , tabํฌ๊ธฐ๋ฅผ 4๋ก ์ค์
set smartindent
set tabstop=4
set expandtab
set shiftwidth=4
๐ ๋ณ์์ฌ์ฉ
- ๋ณ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ str="hello " ์ด๋ฉด $๋ฅผ ์ด์ฉํด์ ์ฌ์ฉ
- echo "${str}world" : ๋ถ์ฌ์ฐ๊ณ ์ถ์ผ๋ฉด ์ค๊ดํธ๋ก ๊ฐ์ธ
- echo "$str world" : hello world ์ถ๋ ฅ๋จ
-
vi s1.sh


-
๋ณ์ ๊ท์น
- $n: n๋ฒ์งธ ๋ช
๋ น
- $#: ๋๋นผ๊ณ ํ๋ผ๋ฏธํฐ์ ๊ฐ์
-
vi s3.sh


๐ ๋ฐ๋ณต๋ฌธ
-
for๋ฌธ ์์
for i in `ls`; do echo $i; done
- ๋ฐฑํฑ์์ ์๋ ๋ช
๋ น ์คํํ ๊ฒฐ๊ณผ๊ฐ ๋ค์ด๊ฐ
- doํด๋ผ done๋๋ด๋ผ (set์)
for i in 1 3 5; do echo $i; done
- ๊ฒฐ๊ณผ 1 /n 3 /n 5 (๊ฐํ๋จ)
- range๋ ์ค๊ดํธ์์
for i in {1..10}; do echo $i; done
- ๊ฒฐ๊ณผ : 1๋ถํฐ 10๊น์ง ์ถ๋ ฅ๋จ
for i in `ls *.txt`; do echo $i; cat $i; done
- .txt๋ก ๋๋๋ ํ์ผ๋ช
๊ณผ ํ์ผ๋ด์ฉ์ ์ถ๋ ฅ
-
vi s2.sh


๐ ๋ณ์นญ
alias s2='~/s2.sh'
- ๊ณ์ ์ ์ฅํ๊ณ ์ถ์ผ๋ฉด vi .bashrc์์ ์ ์ฅํด์ค์ผํด (๋ก๊ทธ์ธํ๋ฉด ์๋ ์คํ๋๋ ํ์ผ)
- .bashrc : Bash์์์ ์ฌ์ฉ๋๋ ์ด๊ธฐํ ํ์ผ๋ก ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ๋๋ง๋ค bash์์ด ์คํ๋ ๋ ์๋์ผ๋ก ๋ก๋๋จ

. .bashrc : ํ์ฌ ์ธ์
์์ .bashrcํ์ผ์ ์คํํด๋ผ(์ถ๊ฐํ ์ค์ ๋ค ์ฆ์ ์ ์ฉ)
๐ ์กฐ๊ฑด๋ฌธ
- ์ซ์ ๋น๊ต
- -gt(greater than) : ํฌ๋ค >
- -lt(less than) : ์๋ค <
- -eq(equal) : ๊ฐ๋ค =
- -ne(not equal) : ๊ฐ์ง์๋ค !=
- -le(less equal) : ์๊ฑฐ๋ ๊ฐ๋ค <=
- -qe(greater equal) : ํฌ๊ฑฐ๋ ๊ฐ๋ค >=
- ํ์ผ ๋น๊ต
- -f : ํ์ผ์ด ์กด์ฌํ๋๋
- -r : ์ฝ๊ธฐ ๊ถํ ์๋๋
- -w : ์ฐ๊ธฐ ๊ถํ ์๋๋
- -x : ์คํ ๊ถํ ์๋๋
- vi s4.sh
- ์ธ์์ ๊ฐ์๊ฐ 0์ผ๊ฒฝ์ฐ ์ฌ์ฉ๋ฒ์ ์ค๋ช
ํ๋ ๋ฉ์์ง ์ถ๋ ฅ
- exit 0 : ์คํฌ๋ฆฝํธ๊ฐ ์ ์์ ์ผ๋ก ์ข
๋ฃ๋จ์ ๋ํ๋


๐ date
๐ ์ฐ์ต๋ฌธ์
- ํ์ผ๋ช
์ ์
๋ ฅ๋ฐ์ผ๋ฉด ์ค๋๋ ์ง(์ฐ์์ผ).txt๋ก ํ์ผ๋ช
๋ณ๊ฒฝ


- a.txt์ ํ์ผ๋ช
์ ์ค๋๋ ์ง.txt๋ก ๋ณ๊ฒฝ
- ํ์ผ๋ช
์ 2๊ฐ ์
๋ ฅ ๋ฐ์ ๋ ํ์ผ์ ํฉ์น ํ, ํ์ผ๋ช
์ ์ด์ ๋ ์ง.log๋ผ๊ณ ์๋กญ๊ฒ ๋ง๋์์ค.


- s1.sh์ ๋ด์ฉ๊ณผ s3.sh์ ๋ด์ฉ์ ํฉ์ณ์ ์ด์ ๋ ์ง.log์ธ ํ์ผ ์์ฑ
- >> : appendํด์ FN์ ํ์ผ์ ์ถ๊ฐํด๋ผ
- ๊ตฌ๊ตฌ๋จ ์ถ๋ ฅ
- $(( ์ฐ์ฐ )) : ์ฐ์ฐ์ ํด๋ผ


๐ก ์ฐธ๊ณ expr : ์ฐ์ฐํ๋ผ๋ ๋ช
๋ น์ด
๐ Array
-
Array ์ ์ธ
- declare -a arr : arr๋ผ๋ ๋ณ์๋ฅผ array๋ก ๋ฉ๋ชจ๋ฆฌ์ ํ๋ณดํ๊ฒ ๋ค.
- arr=("aaa" "bbb" "ccc" 123) : ๊ดํธ์์ ์์ผ๋ฉด array๋ก ํ๋จ
-
Array ์ถ๋ ฅ
- ${arr[n]} : array์ n๋ฒ์งธ ์์ (๋ฐฐ์ด์ ์์๋ฅผ ๋ํ๋ผ ๋ ์ค๊ดํธ์ ์๋ฌถ์ด์ฃผ๋ฉด ๋๊ดํธ๋ฅผ ๋ฌธ์๋ก ์ธ์ํจ)
- arr๋ก๋ง ์ถ๋ ฅํ๋ฉด ์ฒซ๋ฒ์งธ ์์๋ง ์ถ๋ ฅ๋จ
- @ : all์ ์๋ฏธ
- #array : ๋ฐฐ์ด์ ๊ธธ์ด


๐ Function
- ํจ์๋ ์์ ์๋ ํจ์๋ง ํธ์ถ ๊ฐ๋ฅ
- $0, $@, $1, $# : ์๊ธฐ์์ , ๋งค๊ฐ๋ณ์ ์ ๋ถ, ์ฒซ๋ฒ์งธ ๋งค๊ฐ๋ณ์, ๋งค๊ฐ๋ณ์ ๊ฐ์


๐ IFS & AWK
- IFS(Internal Field Separator) : ์์์ ๋ฌธ์์ด์ ๋ถ๋ฆฌํ ๋ ์ฌ์ฉํ๋ ๊ตฌ๋ถ์๋ฅผ ๋ํ๋ด๋ ํ๊ฒฝ ๋ณ์
- ๊ธฐ๋ณธ์ ์ผ๋ก IFS๋ ๊ณต๋ฐฑ, ํญ, ์ค ๋ฐ๊ฟ ๋ฌธ์๋ก ์ค์ ๋์ด ์์

- echo "IFS=${IFS}.": IFS์ ํ์ฌ ๊ฐ์ ์ถ๋ ฅ
- PRE_IFS=$IFS: ํ์ฌ IFS์ ๊ฐ์ PRE_IFS๋ผ๋ ๋ณ์์ ์ ์ฅ
- IFS=": IFS ๊ฐ์ ์ค๋ฐ๊ฟ ๋ฌธ์(\n)๋ก ๋ณ๊ฒฝ
- awk '{print $5}' : 5๋ฒ์งธ ํ๋๋ฅผ ์ถ๋ ฅํด๋ผ
- IFS=$PRE_IFS : ๋ฐ๋ณต์ด ๋๋ ํ, IFS์ ๊ฐ์ ์ด์ ์ ์ ์ฅํด๋ PRE_IFS์ ๊ฐ์ผ๋ก ๋ณต๊ตฌ(IFS๊ฐ์ ์๋ ์ํ๋ก ๋๋๋ฆผ)

๐ ์ฐ์ต๋ฌธ์
- ํ์ฌ ๋๋ ํ ๋ฆฌ ์๋์ ์กด์ฌํ๋ ํ์ผ๋ค์ ์ด๋ฆ๊ณผ ํฌ๊ธฐ๋ฅผ ํ๊ฐ์ ํ์ผ๋ก ์์ฑํ์์ค(total, ., ..๋ฑ์ ์ ์ธ)

- ๋ณ์๋ ๋ชจ๋ string์ด๋ฏ๋ก ๊ณ์ฐ ๋ถ๊ฐ
- expr์ ๋ฐ์์ ๊ณ์ฐํ ํ์ ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ด๋ฏ๋ก ๊ณ์ฐ ๊ฐ๋ฅ

๐ผ Cron
- ๋ฆฌ๋
์ค์์ scheduler (์ฃผ๊ธฐ๋ง๋ค ์คํํด๋ผ)
sudo apt-get update : ์ค์น์ ์ ์
๋ฐ์ดํธ!!
sudo apt-get install cron : cron์ค์น
service cron restart : ํฌ๋ก ์๋น์ค ์คํ
- cron ์คํ ํ์ธ

crontab -e : cron์ฃผ๊ธฐ ์ค์ ํ๋ ์(root์์ ๊ฐ๋ฅ)
crontab -l : crontab์ ์ค์ ํ ๊ฒ ํ์ธ ๊ฐ๋ฅ
๐ฃ ๋ถ ์ ์ผ ์ ์ฃผ (์๊ธฐํ์)
๐ 2>&1
- ํ์ค์๋ฌ๋ฅผ ํ์ค์ถ๋ ฅ์๊ฒ ์ฃผ๊ฒ ๋ค
- 2: ํ์ค์๋ฌ(์๋ฌ๋ฉ์์ง๋ ํ์ค์ถ๋ ฅ์ ํฌํจ๋์ง ์์)
- 1 : ํ์ค์ถ๋ ฅ(shell์ ์คํ์์ผฐ์ ๋ ์ถ๋ ฅ๋๋ log)
๐ cron ์คํํ ์ ์์ฑ
- ์:๋ถ:์ด ์ถ๋ ฅ

๐ crontab -e
-
cron ์ค์ (์ฃผ์๋๋ถ๋ถ์ ์ค๋ช
์ผ๋ก ์ญ์ ํด๋๋จ)
- 1๋ถ์ ํ๋ฒ์ฉ crontest.sh์์ ์ถ๋ ฅ๋๋ ๊ฒ์ temp.logํ์ผ์ ์ ์ฅํ๊ฒ ๋ค(ํ์ค์๋ฌ๋ ํจ๊ป ์ ์ฅ)

-
์ ์ฅํ๋ฉด crontab์ค์นํ๋ค๊ณ ๋์ด

-
temp.log๋ฅผ ์ค์๊ฐ์ผ๋ก ์ถ๋ ฅํด๋ณด๋ฉด ๋งค๋ถ ์๊ฐ์ด ์ถ๊ฐ๋์ด ์ถ๋ ฅ๋๋ ๊ฒ ํ์ธ ๊ฐ๋ฅ
