Shell
Shell Script
1. Shell Script๋? - Script : ์ธํฐํ๋ฆฌํฐ(interpreter) ๋ฐฉ์์ผ๋ก ๋์ํ๋ ์ปดํ์ผ๋์ง ์๊ณ ํ์ค์ฉ ์คํ๋๋ ํ์ผ - Linux/Unix ๊ณ์ด์ Shell์์ ์คํ์ํฌ ๋ช ๋ น์ด๋ค์ Scipt๋ก ์์ฑํ์ฌ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ 2. Shell Script ์์ฑ ๋ฐฉ๋ฒ โ Shell Script ์์ฑํ๊ธฐ - Shebang : ํด๋น Script๊ฐ ์ด๋ค ์ธํฐํ๋ฆฌํฐ์์ ๋์๊ฐ๋ฉด ๋๋์ง ๋ํ๋ด๋ ๊ตฌ๋ฌธ์ด๋ค. ์๋ ์์ ๋ /bin ๊ฒฝ๋ก์ ์๋ bash ์ธํฐํ๋ฆฌํฐ๋ก ๋์๊ฐ๊ฒ ๋๋ค. - ์ฃผ์ : ์ฑ๊ธ ๋ผ์ธ์ #, ๋ฉํฐ ๋ผ์ธ์ :
SSHPASS๋ฅผ ์ด์ฉํ ๋คํธ์ํฌ ์ฅ๋น OS ํ์ธ Shell Script
1. SSHPASS ์ค์น - SSHPASS ์คํ์์ค๋ฅผ ์ฌ์ฉํด์ผ SSH๋ฅผ ๋น๋ํ์์ผ๋ก ์ ์ ๊ฐ๋ฅํฉ๋๋ค. > brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb 2. bash ์คํฌ๋ฆฝํธ ์์ฑ - SSHPASS ๋ณด์ ๋ฌธ์ ๋ก ์คํฌ๋ฆฝํธ์ ์ํธ ์๋ต๋์ด์์ต๋๋ค. ๋ก์ปฌ์ ์คํฌ๋ฆฝํธ ์ ์ฅํ ๋ ํจ์ค์๋ ์ ์ฅํด์ฃผ์ธ์. > vim network_device_os.sh #!/bin/bash Office_FLOOR="1 2 3 4 5 6 7 8 9 10" Office_BB_IP="10.0.1.2 10.0.1.3" for var in $SEOCHO_WG_IP do echo 'โถ Office '$var'F..
Shell์ ์์ ํ์ผ? ๋ก๊ทธ์ธ Shell? ๋น๋ก๊ทธ์ธ Shell?
Shell์ด ์์๋๋ฉด ์์ ํ์ผ(startup files)์ด๋ผ๊ณ ํ๋ ํ์ผ์ด ์ํ๋ฉ๋๋ค! ์์ ํ์ผ์ ์ผ๋ จ์ ์คํฌ๋ฆฝํธ์ด๋ฉฐ ๋ชจ๋ ์ฌ์ฉ์๋ค์๊ฒ ์ ์ฉ๋๋ ํ๊ฒฝ์ค์ ๊ฐ์ ์ธํ ํฉ๋๋ค. ์ฒซ๋ฒ์งธ ๋ชจ๋ ์ฌ์ฉ์๋ค์๊ฒ ์ ์ฉ๋๋ ์ผ๋ฐ ํ๊ฒฝ์ค์ ์ ์ธํ ํ๊ธฐ ์ํ ์์ ํ์ผ์ด ๋์๊ฐ๊ณ , ๋๋ฒ์งธ ๊ฐ์ธ ์ฌ์ฉ์๋ค์๊ฒ ์ ์ฉ๋๋ ๊ฐ์ธ ํ๊ฒฝ์ค์ ์ ์ธํ ํ๊ธฐ ์ํ ์์ ํ์ผ์ด ๋์๊ฐ๋๋ค. ์์ ํ์ผ์ Shell ์ธ์ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ Shell ์ธ์ ์ ๋๊ฐ์ง ์ข ๋ฅ๊ฐ ์์ต๋๋ค. - ๋ก๊ทธ์ธ Shell ์ธ์ : ๋ก๊ทธ์ธ์ ํตํด ์คํ๋๋ Shell(์๊ฒฉ ssh ๋ฑ) - ๋น๋ก๊ทธ์ธ Shell ์ธ์ : ๋ก๊ทธ์ธ์์ด ์คํ๋๋ Shell(๋ก์ปฌ ํฐ๋ฏธ๋, sudo bash, su ๋ฑ) Shell ์ธ์ ์ ๋ฐ๋ผ์ ์คํ๋๋ ์์ ํ์ผ์ ์์น๊ฐ ๋ํ ๋ค๋ฆ ๋๋ค. ๋ก๊ทธ์ธ She..
2. ํ์ผ์์คํ ํ์
ํ์ผ์์คํ - ๊ณ์ธต์ ์ธ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ก ํ์ผ์ ๊ตฌ์ฑ(ํธ๋ฆฌ ํ์) - ์ต์์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฃจํธ(root) ๋๋ ํ ๋ฆฌ๋ผ๊ณ ํจ - ์ ๋์คํ ์์คํ ์์๋ ๋จ์ผ ํ์ผ์์คํ ์ผ๋ก ๊ด๋ฆฌ - ์ ์ฅ์ฅ์น๋ค์ ์ ์ ์ ์ฌ๋์ ๋ฐ๋ผ ๋ค์ํ ์์น์ ๋ง์ดํธ ๊ฐ๋ฅ ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ(print working dir) [eunhye@computer ~]$ pwd /usr/eunhye ๋ํ ํ ๋ฆฌ ๋ชฉ๋ก ํ์ - .๋ก ์์ํ๋ ํ์ผ๋ช ์ ๊ฐ์ง ํ์ผ์ ์จ๊ฒจ์ง ํ์ผ(user home dir์ด ์์ฑ๋๋ฉด ํ๊ฒฝ์ค์ ์ ์ํด ๋ค์์ ์จ๊ฒจ์ง ํ์ผ์ด ์์ฑ๋จ) - -a ์ต์ ์ ํตํด ์จ๊ฒจ์ง ํ์ผ๋ ํ์ธ ๊ฐ๋ฅ - ํ์ผ ํ์ฅ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ํ๋ ํ์ฅ์๋ฅผ ๋ง์๋๋ก ๋ง๋ค ์ ์์ - ๋์ด์ฐ๊ธฐ, ๊ตฌ๋์ ๊ธฐํธ(., -, _)๋ฅผ ํฌํจํ์ฌ ํ์ผ๋ช ์ค์ ์ด ๊ฐ๋ฅ but ๋์ด์ฐ๊ธฐ๋ ..
Script - ์ฐ์ฐ
1. bash ์ฐ์ฐ - ๊ดํธ๋ฅผ ์ด์ฉ a=1 b=10 c=$((a+b)) c=$[a+b] echo $c #11 2. let ๋ช ๋ น์ด a=1 b=10 let c=$a+$b echo $c #11 3. expr ๋ช ๋ น์ด - ์ซ์์ ์ฐ์ฐ์ ์ฌ์ด ๋์์จ์ผ ํจ a=1 b=10 expr $a + $b #11 4. awk ๋ช ๋ น์ด - ์์์ ๊ณ์ฐ ๊ฐ๋ฅ - ํ์ดํ ์ ๋ฌ ๊ณผ์ ํ์ a=1 b=10 echo $a $b | awk '{print $1+$2}' #11 echo $a $b | awk '{print $1/$2}' #0.75 5. bc ๋ช ๋ น์ด - ๋ฆฌ๋ ์ค bc๊ฐ ์ค์น๋์ด์ผ ํจ - ์์์ ๊ณ์ฐ ๊ฐ๋ฅ - ํ์ดํ ์ ๋ฌ ๊ณผ์ ํ์ a=1 b=10 echo "$a+$b" | bc #11
Script - ์ฐ์ฐ์
1. ์ซ์ ๋น๊ต ์ฐ์ฐ์ -lt : ๋ฏธ๋ง() ex) if["$a" -gt "$b"] ex) (("$a" > "$b")) -le : ์ดํ(= "$b")) -eq : ๊ฐ์ ex) if["$a" -eq "$b"] -ne : ๊ฐ์ง์์ ex) if["$a" -ne "$b"] 2. ๋ฌธ์์ด ๋น๊ต ์ฐ์ฐ์ =, == : ๊ฐ์ ex) if["$a" = "$b"] ex) if["$a" == "$b"] != : ๊ฐ์ง์์ ex) if["$a" != "$b"] -z : ๋ฌธ์์ด์ด null์(๊ธธ์ด๊ฐ 0์) ex) if[-z "$a"] -n : ๋ฌธ์์ด์ด null์ด ์๋(๊ธธ์ด๊ฐ 0์ด ์๋) ex) if[-n "$a"] > : ASCII๊ฐ์ด ๋ณด๋ค ํผ ex) if[["$a" > "$b"]] ex) if["$a" \> "$b"] < : ASC..
Script - ์ ์ธ ๋ฐ ์ฌ์ฉ
1. Shell Script - ๋ฆฌ๋ ์ค ์๋ฒ ์๋ํ๋ฅผ ์ํด ํ์ํจ - ๊ธฐ๋ณธ์ ์ธ ๋ฆฌ๋ ์ค ๋ช ๋ น์ด์์ ๋ช ๊ฐ์ง ๋ฌธ๋ฒ์ด ์ถ๊ฐ - ํ์ผ(.sh)๋ก ์ ์ฅ ํ ์คํ - ํ์ผ ๋งจ ์์ ์ค์ #! /bin/bash ์ ์ ํ ์์ฑ 2. ์ฃผ์ ์ฒ๋ฆฌ - #์ผ๋ก ์์ํ๋ ๋ผ์ธ ์ฃผ์ ์ฒ๋ฆฌ ๋จ - ์) # ์ฃผ์์ ๋๋ค. 3. ๋ณ์ ์ ์ธ ๋ฐ ์ฌ์ฉ - ๋ณ์=data ํํ๋ก ์ ์ธ - ๊ธฐ๋ณธ ๋ฌธ์์ด๋ก ์ธ์ - " ", ' ' ๋ ๋จ์ ๊ทธ๋ฃน ์ง์ (' '๊ฐ ๋ ๊ฐ๋ ฅ) - ์) test=1 - ์) test=hello - $๋ณ์๋ก ์ฌ์ฉ - ์) echo $test 4. ๋ฆฌ์คํธ(๋ฐฐ์ด) ์ ์ธ ๋ฐ ์ฌ์ฉ - ๋ณ์=(data1 data2 data3) ํํ๋ก ์ ์ธ - ์) test=(apple banana melon) - ${๋ณ์[ ]}๋ก ์ฌ์ฉ - ์) $..
1. ์์ด๋ ๋ฌด์์ธ๊ฐ?
Shell - ํค๋ณด๋๋ก ์ ๋ ฅํ ๋ช ๋ น์ด๊ฐ ์ด์์ฒด์ ์ ๋ฌํ์ฌ ๋ช ๋ น์ด๊ฐ ์คํ๋ ์ ์๋๋ก ํด์ฃผ๋ ํ๋ก๊ทธ๋จ Shell ์ข ๋ฅ - Bash Shell : ์ต์ด์ ์ ๋์ค Shell์ธ Bourne Shell๊ณผ ํธํ๋๋๋ก ๋ง๋ค์ด์ง Shell - csh(C Shell) : BSD ๊ณ์ด ์ ๋์ค ์ฌ์ฉ์๋ค์ด ์ ํธํ๋ Shell - ksh(Korn Shell) : ์ ๋์ค ์์คํ V ๊ณ์ด ์ฌ์ฉ์๋ค์ด ์ ํธํ๋ Shell - tccsh : C Shell๊ณผ ํธํ๋๋ Shell - ash : Borune Shell๊ณผ ํธํ๋๋ Shell ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ - GUI ํ๊ฒฝ์์ Shell๊ณผ ์ง์ ์์ ํ ์ ์๋๋ก ๋์์ฃผ๋ ํ๋ก๊ทธ๋จ - ํํ ํฐ๋ฏธ๋์ด๋ผ๊ณ ๋ถ๋ฆ ์ผ๋ฐ ์ ์ [eunhye@computer ~ ]$ ์ํผ ์ ์ - ๋ฃจํธ(root) or ..