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 ..