Linux/Shell
๊ณ์ ๊ณผ su, sudo
๊ณ์ - root(#) : ์์คํ ๋ชจ๋ ๊ถํ์ ๊ฐ์ง super ์ฌ์ฉ์ - admin : ์ปดํจํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ฌ์ฉ์๋ค(user๋ ๋ค๋ฅผ๊ฒ ์์ง๋ง user๋ ๊ตฌ๋ถํ๊ธฐ ์ํจ) - user : ์ผ๋ฐ ์ฌ์ฉ์๋ค ํ ์คํธ ํ๊ฒฝ > whoami #ํ์ฌ ๋ก๊ทธ์ธ ๊ณ์ eunhye > pwd #ํ์ฌ ๊ฒฝ๋ก /Users/eunhye > echo $hi #eunhye์ ์ ์ฉ๋ ํ๊ฒฝ ๋ณ์๋ก ์ฌ์ฉ ์ฌ๋ถ์ ๋ฐ๋ผ ํ์ฌ eunhye ํ๊ฒฝ์ธ์ง or ์๋์ง ํ์ธ ๊ฐ๋ฅ hello su(substitute user) [๊ณ์ ] - ๋ก๊ทธ์์ํ์ง ์๊ณ ๊ณ์ ์ ํ - ๋ณ๊ฒฝ๋ ๊ณ์ ์ ๋น๋ฐ๋ฒํธ ์๊ตฌ - ๊ณ์ ์ด ์๋ต๋ ๊ฒฝ์ฐ root๋ก ๋์ - ๊ธฐ์กด์ ๋ก๊ทธ์ธ๋ ๊ณ์ ํ๊ฒฝ์ผ๋ก shell ์คํ > su Password: sh-3.2# whoami root sh-..
/dev/null 2>&1
ํ์ค ์ถ๋ ฅ๊ณผ ํ์ค ์๋ฌ๋ฅผ ๋ชจ๋ ๋ฒ๋ฆฌ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ก ์ ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉ > commnad > /dev/null 2>&1 ๋ฆฌ๋ ์ค์์ 0, 1, 2๋ ํ์ค ์ ๋ ฅ, ํ์ค ์ถ๋ ฅ, ํ์ค ์๋ฌ์ ์๋ฏธ๋ฅผ ๊ฐ์ง - 0 : ํ์ค ์ ๋ ฅ(stdin) - 1 : ํ์ค ์ถ๋ ฅ(stdout) - 2 : ํ์ค ์๋ฌ(stderr) ๊ทธ ์ค ์๋ ๊ตฌ๋ฌธ์ ํ์ค ์ถ๋ ฅ์ ๋ฒ๋ฆฌ๊ฒ ๋ค(/dev/null)๋ ์๋ฏธ > /dev/null (= 1> /dev/null) ๊ทธ ์ค ์๋ ๊ตฌ๋ฌธ์ ํ์ค ์๋ฌ๋ฅผ ํ์ค ์ถ๋ ฅ๊ณผ ๋์ผํ๊ฒ ์ฒ๋ฆฌํ๊ฒ ๋ค๋ ์๋ฏธ 2>&1 ๋ง์ฝ? ๋ฒ๋ฆฌ์ง ์๊ณ ๋ฐ๋ก log๋ก ๋จ๊ฒจ์ ๋ณด๊ณ ์ถ๋ค๋ฉด ์๋์ฒ๋ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ฃผ๋ฉด ๋จ > command 1>stdout.log 2>stderr.log > ./test #command ์คํ ์ ํ์ค ์๋ฌ..
ssh key
1. ssh ์๊ฒฉ์ง์ ์๊ฒฉ ๊ณ์ ์ผ๋ก ์ ์ํ๋ ๋ช ๋ น์ด์ ๋๋ค. > ssh [OPTION][์๊ฒฉ ๊ณ์ ]@[์๊ฒฉ์ง] 2. ssh key ssh ์ ์ ์ key๋ฅผ ์ํด ์ฐธ์กฐ๋๋ ๋๋ ํ ๋ฆฌ์ ๋๋ค. ๋ชฉ์ ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ์๋ฒ๋ ๊ณต๊ฐํค, ๊ฐ์ธ์ ๋น๊ณต๊ฐํค๋ฅผ ๊ฐ์ง๊ณ ์ํธํ ํต์ ์ ํฉ๋๋ค. > pwd ~/.ssh > ls -la total 8 drwx------ 3 eunhye staff 96 7 11 20:23 . drwxr-xr-x+ 31 eunhye staff 992 9 29 23:02 .. -rw-r--r-- 1 eunhye staff 404 10 1 11:10 config -rw-r--r-- 1 eunhye staff 3990 9 29 15:56 known_hosts known_hosts - ์ฐ๊ฒฐ๋ ํธ์คํธ์ key ..
grep ๋ช ๋ น์ด
1. grep ํน์ ํ์ผ ์์์ ํน์ ๋ฌธ์์ด์ ํฌํจํ๊ณ ์๋ ๋ผ์ธ์ ์ถ๋ ฅํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ช ๋ น์ด ์ ๋๋ค. ๋จ์ผ๋ก ์ฌ์ฉํ๊ธฐ๋ณด๋ค๋ ํ์ดํ๋ผ์ธ์ ์ด์ฉํด ๋ค๋ฅธ ๋ช ๋ น์ด์ ํจ๊ป ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด์ ps ๋ช ๋ น์ด๋ฅผ ํตํด ํ์ฌ ์คํ์ค์ธ ํ๋ก์ธ์ค ์ค ํน์ ๋ฌธ์์ด์ ํฌํจ ํ๋ก์ธ์ค๋ง ์ถ๋ ฅํฉ๋๋ค. > grep [OPTION] [MESSAGE PATTERN] [FILE] > grep --help usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label..
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..
5. ๋ช ๋ น์ด์ ์นํด์ง๊ธฐ
๋ช ๋ น์ด - /usr/bin์ ์ค์น๋์ด์๋ ์คํ ํ๋ก๊ทธ๋จ - shell์ ๋ด์ฅ๋ ๋ช ๋ น์ด - shell ํจ์ - ๋ณ์นญ ๋ช ๋ น์ด ํ์ธ [eunhye@computer ~]$ type cd cd is a shell builtin [eunhye@computer ~]$ type ls ls is /bin/ls [eunhye@computer ~]$ which cd /usr/bin/cd [eunhye@computer ~]$ which ls /bin/ls ๋ช ๋ น์ด ๋์๋ง ๋ณด๊ธฐ [eunhye@computer ~]$ help cd #help | ์ฐพ๊ณ ์ถ์ ๋ช ๋ น์ด(๊ฐ๋จํ) cd: cd [-L|-P] [dir] Change the current directory to DIR. The variable $HOME is the defaul..
4. ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ ์กฐ์
์์ผ๋์นด๋ ์์ผ๋์นด๋ ๋งค์นญ ๋ฌธ์ * ๋ชจ๋ ๋ฌธ์ ? ๋ชจ๋ ํ๋์ ๋ฌธ์ [characters] characters ๋ฌธ์์ ์ ํฌํจ๋ ๋ฌธ์ [!characters] characters ๋ฌธ์์ ์ ํฌํจ๋์ง ์์ ๋ฌธ์ [[:class:]] ์ ์ฅ๋ ๋ฌธ์ ํด๋์ค์ ํฌํจ๋ ๋ฌธ์ ๋ฌธ์ ํด๋์ค ๋งค์นญ ๋ฌธ์ [:alnum:] ๋ชจ๋ ์ํ๋ฒณ๊ณผ ์ซ์ ๋ฌธ์ [:alpha:] ๋ชจ๋ ์ํ๋ฒณ ๋ฌธ์ [:digit:] ๋ชจ๋ ์ซ์ ๋ฌธ์ [:lower:] ๋ชจ๋ ์๋ฌธ์ [:upper:] ๋ชจ๋ ๋๋ฌธ์ ํจํด ๋งค์นญ ๋ฌธ์ * ๋ชจ๋ ํ์ผ g* g๋ก ์์ํ๋ ๋ชจ๋ ํ์ผ b*.txt b๋ก ์์ํ๋ txt ํ์ผ Data??? Data๋ก ์์ํ๋ฉด์ ๋ค์ ์ ํํ ์ธ ๊ฐ์ ๋ฌธ์๋ง ์๋ ํ์ผ [abc]* a, b, c๋ก ์์ํ๋ ๋ชจ๋ ํ์ผ BACKUP[0-9][0-9][..
3. ์์คํ ์ดํด๋ณด๊ธฐ
ls ๋ช ๋ น์ด ์ต์ ๊ณผ ๋ช ๋ น ์ธ์ - ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ๊ณผ ํ์ ๋๋ ํ ๋ฆฌ๋ค์ด ๋ชจ๋ ํ์ - ls -์ต์ ๋ช ๋ น์ธ์ ์ต์ long ์ต์ ์ค๋ช -a --all ์จ๊น ํ์ผ์ ํฌํจํ์ฌ ๋ชจ๋ ํ์ผ ๋ณด๊ธฐ -d --dirctory ๋๋ ํ ๋ฆฌ ๋ด์ฉ์ ํ์ธ ๊ฐ๋ฅ, ls -ld๋ก ์ฌ์ฉํ๋ฉด ๋๋ ํ ๋ฆฌ ๋ด์ฉ์ด ์๋ ๋๋ ํ ๋ฆฌ ์์ฒด ์ ๋ณด ํ์ธ ๊ฐ๋ฅ -F --classify ์ง์ ๋ฌธ์๋ฅผ ์ถ๊ฐ๋ก ํ์, /์ด ๋ถ์ -h --human-readable -lh๋ก ์ฌ์ฉํ๋ฉด ํ์ผ ํฌ๊ธฐ๋ฅผ ์ฌ๋์ด ์ธ์ํ๊ธฐ ์ฌ์ด ํํ๋ก ๋ณ๊ฒฝ -l ์ข ๋ ์์ธํ ์ ๋ณด ์ถ๋ ฅ -r --reserve ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์ญ์์ผ๋ก ํ์, ์ผ๋ฐ์ ์ผ๋ก๋ ์ํ๋ฒณ ์ค๋ฆ์ฐจ์์ผ๋ก ํ์๋จ -s ํ์ผ ํฌ๊ธฐ์์ผ๋ก ์ ๋ ฌ -t ํ์ผ ์์ ์๊ฐ์์ผ๋ก ์ ๋ ฌ long ํฌ๋งท์ผ๋ก ์ถ๋ ฅ ๊ฒฐ๊ณผ ๋ณด๊ธฐ [eu..
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 ..