๐ก ๋ณธ ๋ฌธ์๋ '์(Shell) ๊ธฐ๋ณธ ๋ฌธ๋ฒ: bash shell'์ ๋ํด ์ ๋ฆฌํด๋์ ๊ธ์ ๋๋ค.
์ด ์คํฌ๋ฆฝํธ ์์ฑ์ ํ์ํ shell ๊ธฐ๋ณธ ๋ฌธ๋ฒ ๋ฐ ์ด ์ค์ ํ๊น์ง ์ ๋ฆฌํ์์ผ๋ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
1. ์(Shell) ๊ธฐ๋ณธ ๋ฌธ๋ฒ: bash shell
Shell์ ์ธํฐ๋ ํฐ๋ธํ๊ฒ ๋ํ์์ผ๋ก CMD์์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ ์ฌ์ฉํ๊ธฐ๋ ํ์ง๋ง, ํ๋ก๊ทธ๋๋ฐํ์ฌ *.sh ์คํํ์ผ์ ์์ฑํ์ฌ ๋ ผ ์ธํฐ๋ ํฐ๋ธํ๊ฒ ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค.
1. ์ต์๋จ์ #!/bin/bash ์ถ๊ฐ
- shํ์ผ์ ์์ฑํ ๋๋ ๋ฐ๋์ ์ต์๋จ์ #!/bin/bash ๊ธฐ๋กํด์ค์ผ ํด๋น Shell์ ํตํด ์คํํ๋ค.
2. Shell ํ์ผ ์คํ ๋ฐฉ๋ฒ ( ./ )
- sh / source / . ๋ฑ์ ์ด์ฉํด์ ์คํํ๋ฉด ๊ถํ์ด ์์ด๋ ์ํ์ด ๊ฐ๋ฅํ์ง๋ง, ./ ๋ก๋ ๊ถํ์์ด ์ํ์ด ๋ถ๊ฐํ๋ค
sh ํ์ผ๋ช
.sh
. ํ์ผ๋ช
.sh
source ํ์ผ๋ช
.sh
./ํ์ผ๋ช
.sh # ๊ธฐ๋ณธ์ ์ผ๋ก ๊ถํ์ด ์๋ ํ์ผ์ ์ํ์ํฌ์ ์๋ค.
3. ์ฃผ์์ #์ ์ด์ฉํ๋ค.
4. ์ถ๋ ฅ์ echo, printf, read(C์์ Scanf์ ๊ฐ์, ์ ๋ ฅ์ ๊ธฐ๋ค๋ฆผ) ๋ฑ์ ์ด์ฉํ๋ค
#!/bin/bash
a=10
echo "hi echo ์๋๊ฐํ์ด๋๋๊ตฌ๋$a"
printf "hi printf ๊ฐํ์ ํด์ค์ผํ๋๊ตฌ๋ %d\n" $a
5. if ๋ธ๋ก์ fi๋ก ๋๋๋ค.
#!/bin/bash
num=7
if (( ${num} == 7 )); then
echo "equal!"
else
echo "non equal"
fi
๋น๊ต ์ฐ์ฐ์ | ์๋ฏธ |
-eq | ๊ฐ์ |
-ne | ๊ฐ์ง ์์ |
-gt | ๋ ํผ |
-ge | ํฌ๊ฑฐ๋ ๊ฐ์ |
-lt | ๋ ์์ |
-le | ๋ ์๊ฑฐ๋ ๊ฐ์ |
-z | ๋ฌธ์์ด์ด null์ธ๊ฐ? |
-n | ๋ฌธ์์ด์ด null์ด ์๋ |
-a | ๋ ผ๋ฆฌ and |
-o | ๋ ผ๋ฆฌ or |
6. for๋ฌธ์ do ๋ฐ๋ณต์ํ๋ฌธ, done์ผ๋ก ๋๋๋ค
arr=("a" "b" "c" "ddd") # ๋ฐฐ์ด๋ณ์ ์ ์ธ , ๋์ด์ฐ๊ธฐ ์ฃผ์
for x in ${arr[@]}; do # arr์ @๋ ๋ชจ๋ ์์๋ฅผ ์๋ฏธ, i๋ก ๋ฐ์์ด
echo $x
done
7. ๋ณ์์ ํ์ ์ ์์ผ๋ฉฐ, ์ ์ธ์ ์ ์ธํ๊ณ ์ฌ์ฉ์ $๋ฅผ ๋ถ์ธ๋ค.
8. ๊ธฐ๋ณธ๋ณ์๋ $$ (ํ๋ก์ธ์คID),$0 (์คํ ํ์ผ๋ช ), $# (ํ๋ผ๋ฏธํฐ ๊ฐฏ์)๊ฐ ์์ต๋๋ค.
#!/bin/bash
echo "๊ธฐ๋ณธ๋ณ์ "
echo "\$$ : " $$
echo "\$0 : " $0
echo "\$# : " $#
9. ์คํ์ ๋งค๊ฐ๋ณ์๋ ๋ค์ด์จ ์์๋๋ก $1 ~ $999 ๊น์ง ์ฌ์ฉ๊ฐ๋ฅํ๋ฉฐ, $* , $@์ ํตํด ํ๋ฒ์ ๋ฐ์์ ์์ต๋๋ค.
10. ์ฐ์ ์ฐ์ฐ์๋ expr ๋ค์ ํํํ๋ฉฐ, `๋ก ๊ฐ์ธ์ค์ผ ํฉ๋๋ค.
#!/bin/bash
a=$1
b=$2
c=$3
echo $1
echo b + c = `expr $b + $c` # `์ด๊ฑฐ๋ก ๊ฐ์ธ์ค์ผ ์ฐ์ฐ์ด ๋จ
echo "\$@ :"$@
echo "\$* :"$*
2. ์(Shell) ํ๋กฌํํธ ์ค์ : bash shell
ํ๋กฌํํธ๋ ์ปค๋ฉ๋์์์ ์ ๋ ฅ์ค์ ํ์๋๋ ๊ธฐ๋ณธ์ ๋ณด ๋ถ๋ถ์ ๊ฐ๋ฆฌํต๋๋ค.
- ์ค์ ์ ์ฌ์ฉ์๋ณ๋ก ~/.bashrc์์ $PS1 , $PS2() ๋ณ์์ ์ง์ ํ์ฌ ์ฌ์ฉํ๋๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค.
- ๋ชจ๋ ๊ณ์ ์ ๋ํ ์ค์ ์ /etc/bashrc ๋๋ /etc/profile.d/prompt.sh ํ์ผ์ ์์ ํ์ฌ ์ค์ ํฉ๋๋ค.
- ํ๋กฌํํธ์ ์ฌ์ฉํ๋ ์ต์ ์ ์๋์ ๊ฐ๋ค.
2.1 ํ๋กฌํํธ ์ต์
\t | 24์๊ฐ์ ๋จ์๋ก ํ์ฌ์๊ฐ์ HH:MM:SS ๋ก ํ์ |
\T | 12์๊ฐ์ ๋จ์๋ก ํ์ฌ์๊ฐ์ HH:MM:SS ๋ก ํ์ |
\@ | 12์๊ฐ์ ๋จ์๋ก ํ์ฌ์๊ฐ์ ์ค์ /์คํ ๋ก ํ์ |
\d | ํ์ฌ ๋ ์ง๋ฅผ ๋ํ๋. ์์ผ, ์, ์ผ ํ์์ผ๋ก |
\s | ํ์ฌ ์ฌ์ฉ์ค์ธ ์์ ์ด๋ฆ์ ๋ํ๋ (C์์ด๋ฉด /bin/csh, bash์์ด๋ฉด /bin/bash) |
\w | ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์ ์ฒด ์ ๋๊ฒฝ๋ก๋ฅผ ๋ชจ๋ ํ์ํจ |
\W | ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์ ์ฒด ์ ๋๊ฒฝ๋ก๋ช ์ค ๋ง์ง๋ง ๋๋ ํ ๋ฆฌ๋ช ๋ง์ ํ์ํจ. ์ฆ ํ์ฌ๋๋ ํ ๋ฆฌ๋ง ํ์ํจ |
\u | ์ฌ์ฉ์๋ช ์ ํ์ํจ |
\h | ์๋ฒ์ ํธ์คํธ๋ช ์ ํ์ํจ (www.uzuro.com์์ www ๋ถ๋ถ) |
\H | ์๋ฒ์ ๋๋ฉ์ธ๋ช ์ ํ์ํจ (www.uzuro.com์์ uzuro.com ๋ถ๋ถ) |
\# | ์ ์ํ ์๊ฐ๋ถํฐ ์ฌ์ฉํ ๋ช ๋ น์ด์ ๋ฒํธ๋ฅผ 1๋ฒ๋ถํฐ ์ฐจ๋ก๋๋ก ํ์ํจ |
\! | ์ฌ์ฉํ ๋ช ๋ น์ด์ history ๋ฒํธ๋ฅผ ํ์ํจ |
\\$ | ํ์ฌ ์ฌ์ฉ์๊ฐ root(uid ๊ฐ 0 )์ด๋ฉด # ์ ํ์ํ๊ณ ์๋๋ฉด $ ๋ฅผ ํ์ํจ |
\\ | '\' ๋ฌธ์ ์์ฒด๋ฅผ ํ์ํจ |
\a | ASCII ์ข ์๋ฆฌ ๋ฌธ์ (07) |
\e | ASCII ์ escape ๋ฌธ์ (033) |
\n | ๊ฐํ๋ฌธ์ (์ค๋ฐ๊ฟ) |
\v | ์ฌ์ฉ์ค์ธ bash ์ ๋ฒ์ |
\V | ์ฌ์ฉ์ค์ธ bash ์ ๋ฐฐํฌ, ๋ฒ์ +ํจ์น์์ค์ผ๋ก ๋ฒ์ ์ ์์ธํ ํ์ํจ |
\r | Carrage retrun |
\nnn | 8์ง์ nnn ์ ํด๋นํ๋ ๋ฌธ์ |
์ฌ์ฉ์์ด๋ฆ(\u), @ ํ์ฌ ๋๋ ํ ๋ฆฌ(\W) ๋ง ๋ณด์ฌ์ฃผ๊ณ ์ถ์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ๋ฉด ๋ฉ๋๋ค.
export PS1="\u@\h@\W $ "
<์ฌ์ฉ์๋ช
>@<์๋ฒํธ์คํธ๋ช
>@<ํ์ฌ๋๋ ํ ๋ฆฌ> $
2.2 ํ๋กฌํํธ ์์ ์ค์
2.2.1 ํ๋กฌํํธ ์์ ์ฝ๋
2.2.2 ํ๋กฌํํธ ๋ณ์ ์ค์ ์์
// Cyan, Green, Yellow ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฅ ํ๋ฉด์์๋ ํฐ์์ ์ํด 0์ผ๋ก ์ค์ ํด์ฃผ์๋ค.
export PS1="\[\e[36;1m\]\u@\[\e[32;1m\]\h@\[\e[33;1m\]\W >\[\e[0m\]"
์ฐธ๊ณ
- [Linux] Bash Shell ์ค์ ๊ณผ ๋ฌธ๋ฒ์ ๋ฆฌ: https://bangu4.tistory.com/242