Bash ์คํฌ๋ฆฝํธ: ์์
Bash ์คํฌ๋ฆฝํธ ํํธ 2: ๋ฃจํ
Bash ์คํฌ๋ฆฝํธ, 3๋ถ: ๋ช ๋ น์ค ์ต์ ๋ฐ ์ค์์น
Bash ์คํฌ๋ฆฝํธ 4๋ถ: ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ
Bash ์คํฌ๋ฆฝํธ, 5๋ถ: ์ ํธ, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ , ์คํฌ๋ฆฝํธ ๊ด๋ฆฌ
Bash ์คํฌ๋ฆฝํธ, 6๋ถ: ํจ์ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ
Bash ์คํฌ๋ฆฝํธ, 7๋ถ: sed ๋ฐ ์๋ ํ๋ก์ธ์ฑ
Bash ์คํฌ๋ฆฝํธ, 8๋ถ: awk ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ธ์ด
Bash ์คํฌ๋ฆฝํธ ํํธ 9: ์ ๊ท ํํ์
Bash ์คํฌ๋ฆฝํธ ํํธ 10: ์ค์ ์
Bash ์คํฌ๋ฆฝํธ, 11๋ถ: ๋ํํ ์ ํธ๋ฆฌํฐ ์์ ๋ฐ ์๋ํ
์ค๋์ bash ์คํฌ๋ฆฝํธ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ์ด๊ฒ -
๋ช
๋ น์ค ์คํฌ๋ฆฝํธ๋ ํค๋ณด๋์์ ์
๋ ฅํ ์ ์๊ณ , ํ์ผ๋ก ์์ง๋๊ณ , ๊ณตํต๋ ๋ชฉ์ ์ผ๋ก ํตํฉ๋ ์ ์๋ ๋์ผํ ๋ช
๋ น์ ๋ชจ์์
๋๋ค. ์ด ๊ฒฝ์ฐ ํ ์์
์ ๊ฒฐ๊ณผ๋ ๋
๋ฆฝ์ ์ธ ๊ฐ์น๋ฅผ ๊ฐ์ง๊ฑฐ๋ ๋ค๋ฅธ ํ์ ์
๋ ฅ ๋ฐ์ดํฐ๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์คํฌ๋ฆฝํธ๋ ์์ฃผ ์ํ๋๋ ์์
์ ์๋ํํ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์
๋๋ค.
๋ฐ๋ผ์ ๋ช ๋ น์ค์ ๋ํด ๋งํ๋ฉด ์ฌ๋ฌ ๋ช ๋ น์ ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ ๋ ฅํ์ฌ ํ ๋ฒ์ ์คํํ ์ ์์ต๋๋ค.
pwd ; whoami
์ค์ ๋ก ํฐ๋ฏธ๋์์ ์ด ์์
์ ์๋ํ๋ค๋ฉด ๋ ๊ฐ์ ๋ช
๋ น์ด ํฌํจ๋ ์ฒซ ๋ฒ์งธ bash ์คํฌ๋ฆฝํธ๊ฐ ์ด๋ฏธ ์์ฑ๋์ด ์์ ๊ฒ์
๋๋ค. ๊ทธ๊ฒ์ ์ด๋ ๊ฒ ์๋ํฉ๋๋ค. ํ ์ฐ์ pwd
ํ์ฌ ์์
๋๋ ํ ๋ฆฌ์ ๋ํ ์ ๋ณด๋ฅผ ํ์ํ ๋ค์ ๋ช
๋ น์ ํ์ํฉ๋๋ค. whoami
๋ก๊ทธ์ธํ ์ฌ์ฉ์์ ๋ํ ์ ๋ณด๋ฅผ ํ์ํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ํ ์ค์ ์ํ๋ ๋งํผ ๋ง์ ๋ช ๋ น์ ๊ฒฐํฉํ ์ ์์ผ๋ฉฐ, ์ ์ผํ ์ ํ์ ํ๋ก๊ทธ๋จ์ ์ ๋ฌํ ์ ์๋ ์ต๋ ์ธ์ ์์ ๋๋ค. ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ด ์ ํ์ ์ ์ํ ์ ์์ต๋๋ค.
getconf ARG_MAX
๋ช ๋ น์ค์ ํ๋ฅญํ ๋๊ตฌ์ด์ง๋ง ํ์ํ ๋๋ง๋ค ๋ช ๋ น์ ์ ๋ ฅํด์ผ ํฉ๋๋ค. ์ผ๋ จ์ ๋ช ๋ น์ ํ์ผ์ ์์ฑํ๊ณ ํด๋น ํ์ผ์ ํธ์ถํ์ฌ ์คํํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์ค์ ๋ก ์ฐ๋ฆฌ๊ฐ ๋งํ๋ ํ์ผ์ ๋ช ๋ น์ค ์คํฌ๋ฆฝํธ๋ผ๊ณ ํฉ๋๋ค.
Bash ์คํฌ๋ฆฝํธ ์๋ ๋ฐฉ์
๋ช
๋ น์ ์ฌ์ฉํ์ฌ ๋น ํ์ผ์ ๋ง๋ญ๋๋ค. touch
. ์ฒซ ๋ฒ์งธ ์ค์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ์์ ๋ํ๋ด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ด์ฌ์ด์๋ค bash
์ด๋ฏ๋ก ํ์ผ์ ์ฒซ ๋ฒ์งธ ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
#!/bin/bash
์ด ํ์ผ์ ๋ค๋ฅธ ํ์์๋ ํด์ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์ด ์ฒ๋ฆฌํ์ง ์๋ ์ฃผ์์ ๋ํ๋
๋๋ค. ๊ทธ๋ฌ๋ ์ฒซ ๋ฒ์งธ ์ค์ ํน๋ณํ ๊ฒฝ์ฐ์
๋๋ค. ํด์ ๋ค์ ๋๋ํ๊ฐ ์์ต๋๋ค(์ด ์ํ์ค๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ํธ์ถํฉ๋๋ค). bash
, ์คํฌ๋ฆฝํธ๊ฐ ํน๋ณํ ์์ฑ๋์์์ ์์คํ
์ ๋ํ๋
๋๋ค. bash
.
์ ๋ช ๋ น์ ์ค ๋ฐ๊ฟ์ผ๋ก ๊ตฌ๋ถ๋๊ณ , ์ฃผ์์ ํด์ ๊ธฐํธ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ ๋๋ค.
#!/bin/bash
# This is a comment
pwd
whoami
์ฌ๊ธฐ์์๋ ๋ช ๋ น์ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถํ์ฌ ํ ์ค์ ๋ช ๋ น์ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ ์ค์ ๋ช ๋ น์ ์์ฑํ๋ฉด ํ์ผ์ ๋ ์ฝ๊ฒ ์ฝ์ ์ ์์ต๋๋ค. ์ด๋ค ๊ฒฝ์ฐ๋ ์์ด ์ด๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
์คํฌ๋ฆฝํธ ํ์ผ ๊ถํ ์ค์
์ด๋ฆ์ ์ง์ ํ์ฌ ํ์ผ์ ์ ์ฅํฉ๋๋ค. myscript
, bash ์คํฌ๋ฆฝํธ ์์ฑ ์์
์ด ๊ฑฐ์ ์๋ฃ๋์์ต๋๋ค. ์ด์ ๋จ์ ๊ฒ์ ์ด ํ์ผ์ ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ฒ๋ฟ์
๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์คํํ๋ ค๊ณ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. Permission denied
.
์๋ชป ๊ตฌ์ฑ๋ ๊ถํ์ผ๋ก ์คํฌ๋ฆฝํธ ํ์ผ์ ์คํํ๋ ค๊ณ ํฉ๋๋ค.
ํ์ผ์ ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
chmod +x ./myscript
์ด์ ์คํํด ๋ณด๊ฒ ์ต๋๋ค.
./myscript
๊ถํ์ ์ค์ ํ ํ์๋ ๋ชจ๋ ๊ฒ์ด ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค.
Bash ์คํฌ๋ฆฝํธ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์คํํ์ต๋๋ค.
๋ฉ์์ง ์ถ๋ ฅ
Linux ์ฝ์์ ํ
์คํธ๋ฅผ ์ถ๋ ฅํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ญ์์ค. echo
. ์ด ์ฌ์ค์ ๋ํ ์ง์์ ํ์ฉํ๊ณ ์คํฌ๋ฆฝํธ๋ฅผ ํธ์งํ์ฌ ์ด๋ฏธ ํฌํจ๋ ๋ช
๋ น์ ์ํด ์ถ๋ ฅ๋๋ ๋ฐ์ดํฐ์ ์ค๋ช
์ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoami
์ ๋ฐ์ดํธ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ฉด ์ด๋ฐ ์ผ์ด ๋ฐ์ํฉ๋๋ค.
์คํฌ๋ฆฝํธ์์ ๋ฉ์์ง ์ถ๋ ฅ
์ด์ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์ค๋ช
๋ฉ๋ชจ๋ฅผ ํ์ํ ์ ์์ต๋๋ค. echo
. Linux ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ ํธ์งํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฑฐ๋ ์ด์ ์ ๋ช
๋ น์ ๋ณธ ์ ์ด ์๋ ๊ฒฝ์ฐ echo
, ๋ณด์ธ์
๋ณ์ ์ฌ์ฉ
๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ๋ช ๋ น์์ ์ฌ์ฉํ ์ ์๋๋ก ๋ช ๋ น ๊ฒฐ๊ณผ์ ๊ฐ์ ์ ๋ณด๋ฅผ ์คํฌ๋ฆฝํธ ํ์ผ์ ์ ์ฅํ ์ ์์ต๋๋ค.
๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ์ง ์๊ณ ๊ฐ๋ณ ๋ช ๋ น์ ์คํํ๋ ๋ฐ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์์ง๋ง ์ด ์ ๊ทผ ๋ฐฉ์์ ๊ธฐ๋ฅ์ด ์๋นํ ์ ํ๋ฉ๋๋ค.
Bash ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์๋ ๋ณ์์๋ ๋ ๊ฐ์ง ์ ํ์ด ์์ต๋๋ค.
- ํ๊ฒฝ ๋ณ์
- ์ฌ์ฉ์ ๋ณ์
ํ๊ฒฝ ๋ณ์
๋๋ก๋ ์ ๋ช ๋ น์ด ์ผ๋ถ ์์คํ ๋ฐ์ดํฐ์ ์๋ํด์ผ ํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ๋ค์์ ํ์ฌ ์ฌ์ฉ์์ ํ ๋๋ ํฐ๋ฆฌ๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ ๋๋ค.
#!/bin/bash
# display user home
echo "Home for the current user is: $HOME"
์์คํ
๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. $HOME
ํฐ๋ฐ์ดํ๋ก ๋ฌถ์ด๋ ์์คํ
์ด ์ด๋ฅผ ์ธ์ํ์ง ๋ชปํ๋ ๊ฒ์ ์๋๋๋ค. ์์ ์๋๋ฆฌ์ค๋ฅผ ์คํํ๋ฉด ์ป์ ์ ์๋ ๊ฒฐ๊ณผ์
๋๋ค.
์คํฌ๋ฆฝํธ์์ ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ
ํ๋ฉด์ ๋ฌ๋ฌ ๊ธฐํธ๋ฅผ ํ์ํด์ผ ํ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ์ด๊ฒ์ ์๋ํด ๋ด ์๋ค:
echo "I have $1 in my pocket"
์์คํ
์ ์ธ์ฉ๋ ๋ฌธ์์ด์์ ๋ฌ๋ฌ ๊ธฐํธ๋ฅผ ๊ฐ์งํ๊ณ ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์คํฌ๋ฆฝํธ๋ ์ ์๋์ง ์์ ๋ณ์์ ๊ฐ์ ํ์ํ๋ ค๊ณ ์๋ํฉ๋๋ค. $1
. ์ด๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ํ์ํ ๊ฒ์ด ์๋๋๋ค. ๋ฌด์์ ํด์ผ ํ ๊น์?
์ด ์ํฉ์์๋ ๋ฌ๋ฌ ๊ธฐํธ ์์ ์ด์ค์ผ์ดํ ๋ฌธ์์ธ ๋ฐฑ์ฌ๋์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋์์ด ๋ฉ๋๋ค.
echo "I have $1 in my pocket"
์ด์ ์คํฌ๋ฆฝํธ๋ ์์ํ ๋๋ก ์ ํํ๊ฒ ์ถ๋ ฅ๋ฉ๋๋ค.
์ด์ค์ผ์ดํ ์ํ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌ๋ฌ ๊ธฐํธ ์ธ์
์ฌ์ฉ์ ๋ณ์
ํ๊ฒฝ ๋ณ์ ์ธ์๋ bash ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์คํฌ๋ฆฝํธ์์ ๊ณ ์ ํ ๋ณ์๋ฅผ ์ ์ํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ณ์๋ ์คํฌ๋ฆฝํธ ์คํ์ด ์๋ฃ๋ ๋๊น์ง ๊ฐ์ ๋ณด์ ํฉ๋๋ค.
์์คํ
๋ณ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ์ฉ์ ๋ณ์๋ ๋ฌ๋ฌ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ก์ธ์คํ ์ ์์ต๋๋ค.
TNW-CUS-FMP - ์๋น์ค 10% ํ ์ธ์ ์ํ ํ๋ก๋ชจ์
์ฝ๋, 7์ผ ์ด๋ด์ ํ์ฑํ ๊ฐ๋ฅ
#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"
์ด๋ฌํ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ํ์๋ ์ด๋ฐ ์ผ์ด ๋ฐ์ํฉ๋๋ค.
์คํฌ๋ฆฝํธ์ ์ฌ์ฉ์ ์ ์ ๋ณ์
๋ช ๋ น ๋์ฒด
Bash ์คํฌ๋ฆฝํธ์ ๊ฐ์ฅ ์ ์ฉํ ๊ธฐ๋ฅ ์ค ํ๋๋ ๋ช ๋ น ์ถ๋ ฅ์์ โโ์ ๋ณด๋ฅผ ์ถ์ถํ์ฌ ๋ณ์์ ํ ๋นํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ฅผ ํตํด ์คํฌ๋ฆฝํธ ํ์ผ์ ์ด๋ ๊ณณ์์๋ ์ด ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ํํ ์ ์์ต๋๋ค.
- ๋ฐฑํฑ "`" ์ฌ์ฉ
- ๋์์ธ์ ์ํด
$()
์ฒซ ๋ฒ์งธ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ ๋ ๋ฐฑํฑ ๋์ ์์๋ฐ์ดํ๋ฅผ ํฌํจํ์ง ์๋๋ก ์ฃผ์ํ์ธ์. ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ ์์ด์ฝ์ผ๋ก ๋ฌถ์ฌ์ผ ํฉ๋๋ค.
mydir=`pwd`
๋ ๋ฒ์งธ ์ ๊ทผ ๋ฐฉ์์์๋ ๋์ผํ ๋ด์ฉ์ด ๋ค์๊ณผ ๊ฐ์ด ์์ฑ๋ฉ๋๋ค.
mydir=$(pwd)
๊ทธ๋ฆฌ๊ณ ์คํฌ๋ฆฝํธ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ผ ์ ์์ต๋๋ค.
#!/bin/bash
mydir=$(pwd)
echo $mydir
์๋ ์ค์ ๋ช
๋ น ์ถ๋ ฅ pwd
๋ณ์์ ์ ์ฅ๋ฉ๋๋ค mydir
, ๊ทธ ๋ด์ฉ์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ echo
, ์ฝ์๋ก ์ด๋ํฉ๋๋ค.
๋ช
๋ น์ ๊ฒฐ๊ณผ๋ฅผ ๋ณ์์ ์ ์ฅํ๋ ์คํฌ๋ฆฝํธ
์ํ ์ฐ์ฐ
์คํฌ๋ฆฝํธ ํ์ผ์์ ์ํ ์ฐ์ฐ์ ์ํํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. $((a+b))
:
#!/bin/bash
var1=$(( 5 + 5 ))
echo $var1
var2=$(( $var1 * 2 ))
echo $var2
์คํฌ๋ฆฝํธ์ ์ํ์ ์ฐ์ฐ
if-then ์ ์ด ๊ตฌ์ฑ
์ผ๋ถ ์๋๋ฆฌ์ค์์๋ ๋ช
๋ น ์คํ ํ๋ฆ์ ์ ์ดํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํน์ ๊ฐ์ด XNUMX๋ณด๋ค ํฌ๋ฉด ํ ๊ฐ์ง ์์
์ ์ํํด์ผ ํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค๋ฅธ ์์
์ ์ํํด์ผ ํฉ๋๋ค. ์ด๋ ๋ง์ ์ํฉ์ ์ ์ฉ ๊ฐ๋ฅํ๋ฉฐ ์ฌ๊ธฐ์ ์ ์ด ๊ตฌ์กฐ๋ ์ฐ๋ฆฌ์๊ฒ ๋์์ด ๋ ๊ฒ์
๋๋ค if-then
. ๊ฐ์ฅ ๊ฐ๋จํ ํํ๋ก ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
if ะบะพะผะฐะฝะดะฐ
then
ะบะพะผะฐะฝะดั
fi
์ค์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
#!/bin/bash
if pwd
then
echo "It works"
fi
์ด ๊ฒฝ์ฐ ๋ช
๋ น์ด ์คํ๋๋ฉด pwd
์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด "์๋ํฉ๋๋ค"๋ผ๋ ํ
์คํธ๊ฐ ์ฝ์์ ํ์๋ฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ์ง์์ ํ์ฉํ์ฌ ๋ ๋ณต์กํ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด ๋ด
์๋ค. ํน์ ์ฌ์ฉ์๋ฅผ ์ฐพ์์ผ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. /etc/passwd
, ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ฐพ์๋ค๋ฉด ๊ทธ๊ฒ์ด ์กด์ฌํ๋ค๊ณ ๋ณด๊ณ ํ์ญ์์ค.
#!/bin/bash
user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi
์ด ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ํ์๋ ์ด๋ฐ ์ผ์ด ๋ฐ์ํฉ๋๋ค.
์ฌ์ฉ์ ๊ฒ์
์ฌ๊ธฐ์๋ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ต๋๋ค. grep
ํ์ผ์์ ์ฌ์ฉ์๋ฅผ ๊ฒ์ํ๋ ค๋ฉด /etc/passwd
. ํ์ ๊ฒฝ์ฐ grep
๋น์ ์๊ฒ ์์ํ ์ค๋ช
์ ์ฐพ์ ์ ์์ต๋๋ค
์ด ์์์ ์ฌ์ฉ์๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ์คํฌ๋ฆฝํธ๋ ํด๋น ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค. ์ฌ์ฉ์๋ฅผ ์ฐพ์ ์ ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์? ์ด ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ๋ ์๋ฌด ๊ฒ๋ ์๋ ค์ฃผ์ง ์๊ณ ๋จ์ํ ์คํ์ ์๋ฃํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฐ ์ด๊ฒ์ ๋ํด์๋ ์ฐ๋ฆฌ์๊ฒ ๋งํด์ฃผ๊ธธ ๋ฐ๋ผ๋ฉฐ ์ฝ๋๋ฅผ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
if-then-else ์ ์ด ๊ตฌ์ฑ
ํ๋ก๊ทธ๋จ์ด ์ฑ๊ณต์ ์ธ ๊ฒ์ ๊ฒฐ๊ณผ์ ์คํจ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ ๋ณด๊ณ ํ ์ ์๋๋ก ๋ค์ ๊ตฌ์ฑ์ ์ฌ์ฉํฉ๋๋ค. if-then-else
. ์๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
if ะบะพะผะฐะฝะดะฐ
then
ะบะพะผะฐะฝะดั
else
ะบะพะผะฐะฝะดั
fi
์ฒซ ๋ฒ์งธ ๋ช
๋ น์ด XNUMX์ ๋ฐํํ๋ฉด(์ฑ๊ณต์ ์ผ๋ก ์คํ๋์์์ ์๋ฏธ) ์กฐ๊ฑด์ true๊ฐ ๋๋ฉฐ ์คํ์ ๋ถ๊ธฐ๋ฅผ ๋ฐ๋ผ ์งํ๋์ง ์์ต๋๋ค. else
. ๊ทธ๋ ์ง ์๊ณ ์คํจ ๋๋ ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ XNUMX ์ด์ธ์ ๊ฐ์ด ๋ฐํ๋๋ฉด ๋ค์ ๋ช
๋ น์ else
.
๋ค์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesnโt exist"
fi
๊ทธ์ ์ฒํ์ ์ํฌ๋ก ๋์๊ฐ๋ค else
.
if-then-else ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํธ ์คํ
์ด์ ์ข ๋ ๋ณต์กํ ์กฐ๊ฑด์ ๋ํด ์๋ฌธํด ๋ณด๊ฒ ์ต๋๋ค. ํ๋์ ์กฐ๊ฑด์ด ์๋ ์ฌ๋ฌ ์กฐ๊ฑด์ ํ์ธํด์ผ ํ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ์๋ฅผ ๋ค์ด, ์ํ๋ ์ฌ์ฉ์๋ฅผ ์ฐพ์ผ๋ฉด ํ๋์ ๋ฉ์์ง๊ฐ ํ์๋์ด์ผ ํ๊ณ , ๋ค๋ฅธ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๋ฉด ๋ค๋ฅธ ๋ฉ์์ง๊ฐ ํ์๋์ด์ผ ํ๋ ์์ ๋๋ค. ์ด๋ฌํ ์ํฉ์์๋ ์ค์ฒฉ๋ ์กฐ๊ฑด์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค. ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
if ะบะพะผะฐะฝะดะฐ1
then
ะบะพะผะฐะฝะดั
elif ะบะพะผะฐะฝะดะฐ2
then
ะบะพะผะฐะฝะดั
fi
์ฒซ ๋ฒ์งธ ๋ช
๋ น์ด ์ฑ๊ณต์ ์ธ ์คํ์ ๋ํ๋ด๋ XNUMX์ ๋ฐํํ๋ฉด ์ฒซ ๋ฒ์งธ ๋ธ๋ก์ ๋ช
๋ น์ด ์คํ๋ฉ๋๋ค. then
, ๊ทธ๋ ์ง ์๊ณ ์ฒซ ๋ฒ์งธ ์กฐ๊ฑด์ด false์ด๊ณ ๋ ๋ฒ์งธ ๋ช
๋ น์ด XNUMX์ ๋ฐํํ๋ฉด ๋ ๋ฒ์งธ ์ฝ๋ ๋ธ๋ก์ด ์คํ๋ฉ๋๋ค.
#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
elif ls /home
then
echo "The user doesnโt exist but anyway there is a directory under /home"
fi
์ด๋ฌํ ์คํฌ๋ฆฝํธ์์๋ ์๋ฅผ ๋ค์ด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์ ์ฌ์ฉ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. useradd
, ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์ ๊ฒฝ์ฐ ๋๋ ๋ค๋ฅธ ์ ์ฉํ ์์
์ ์ํํฉ๋๋ค.
์ซ์์ ๋น๊ต
์คํฌ๋ฆฝํธ์์ ์ซ์ ๊ฐ์ ๋น๊ตํ ์ ์์ต๋๋ค. ๋ค์์ ๊ด๋ จ ๋ช ๋ น ๋ชฉ๋ก์ ๋๋ค.
n1 -eq n2
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํฉ๋๋ค.n1
๊ฐ์n2
.
n1 -ge n2
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํฉ๋๋ค.n1
๊ทธ ์ด์ ๋๋ ๊ฐ์n2
.
n1 -gt n2
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํฉ๋๋ค.n1
~ ์ด์n2
.
n1 -le n2
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํฉ๋๋ค.n1
์๊ฑฐ๋ ๊ฐ์n2
.
n1 -lt n2
n1์ด ๋ค์๋ณด๋ค ์์ผ๋ฉด true๋ฅผ ๋ฐํํฉ๋๋ค.n2
.
n1 -ne n2
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํฉ๋๋ค.n1
๊ฐ์ง ์์n2
.
์๋ฅผ ๋ค์ด ๋น๊ต ์ฐ์ฐ์ ์ค ํ๋๋ฅผ ์ฌ์ฉํด ๋ณด๊ฒ ์ต๋๋ค. ํํ์์ ๋๊ดํธ๋ก ๋ฌถ์ฌ ์์ต๋๋ค.
#!/bin/bash
val1=6
if [ $val1 -gt 5 ]
then
echo "The test value $val1 is greater than 5"
else
echo "The test value $val1 is not greater than 5"
fi
์ด๊ฒ์ด ์ด ๋ช ๋ น์ด ์ถ๋ ฅํ๋ ๋ด์ฉ์ ๋๋ค.
์คํฌ๋ฆฝํธ์ ์ซ์ ๋น๊ต
๋ณ์ ๊ฐ val1
5๋ณด๋ค ํฌ๋ฉด ๋ถ๊ธฐ๊ฐ ์คํ๋ฉ๋๋ค. then
๋น๊ต ์ฐ์ฐ์์ ํด๋น ๋ฉ์์ง๊ฐ ์ฝ์์ ํ์๋ฉ๋๋ค.
๋ฌธ์์ด ๋น๊ต
์คํฌ๋ฆฝํธ๋ ๋ฌธ์์ด ๊ฐ์ ๋น๊ตํ ์๋ ์์ต๋๋ค. ๋น๊ต ์ฐ์ฐ์๋ ๋งค์ฐ ๊ฐ๋จํด ๋ณด์ด์ง๋ง ๋ฌธ์์ด ๋น๊ต ์ฐ์ฐ์๋ ํน์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ด์ ๋ํด์๋ ์๋์์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ๋ค์์ ์ด์์ ๋ชฉ๋ก์ ๋๋ค.
str1 = str2
๋ฌธ์์ด์ด ๊ฐ์์ง ํ ์คํธํ๊ณ , ๋ฌธ์์ด์ด ๋์ผํ๋ฉด true๋ฅผ ๋ฐํํฉ๋๋ค.
str1 != str2
๋ฌธ์์ด์ด ๋์ผํ์ง ์์ผ๋ฉด true๋ฅผ ๋ฐํํฉ๋๋ค.
str1 < str2
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํฉ๋๋ค.str1
๋ฏธ๋งstr2
.
str1 > str2
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํฉ๋๋ค.str1
์ด์str2
.
-n str1
๊ธธ์ด๊ฐ ๊ธธ๋ฉด true๋ฅผ ๋ฐํํฉ๋๋ค.str1
XNUMX๋ณด๋ค ๋์ต๋๋ค.
-z str1
๊ธธ์ด๊ฐ ๊ธธ๋ฉด true๋ฅผ ๋ฐํํฉ๋๋ค.str1
XNUMX๊ณผ ๊ฐ์ต๋๋ค.
๋ค์์ ์คํฌ๋ฆฝํธ์์ ๋ฌธ์์ด์ ๋น๊ตํ๋ ์์ ๋๋ค.
#!/bin/bash
user ="likegeeks"
if [$user = $USER]
then
echo "The user $user is the current logged in user"
fi
์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ๊ฒฐ๊ณผ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค.
์คํฌ๋ฆฝํธ์ ๋ฌธ์์ด ๋น๊ต
๋ค์์ ์ธ๊ธํ ๊ฐ์น๊ฐ ์๋ ๋ฌธ์์ด ๋น๊ต ๊ธฐ๋ฅ ์ค ํ๋์ ๋๋ค. ์ฆ, ">" ๋ฐ "<" ์ฐ์ฐ์๋ ๋ฐฑ์ฌ๋์๋ก ์ด์ค์ผ์ดํํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ํ๋์ง ์๋๋ผ๋ ์คํฌ๋ฆฝํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ์ง ์์ต๋๋ค. ์คํฌ๋ฆฝํธ๋ ">" ๊ธฐํธ๋ฅผ ์ถ๋ ฅ ๋ฆฌ๋๋ ์ ๋ช ๋ น์ผ๋ก ํด์ํฉ๋๋ค.
์ฝ๋์์ ์ด๋ฌํ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
#!/bin/bash
val1=text
val2="another text"
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi
๋ค์์ ์คํฌ๋ฆฝํธ ๊ฒฐ๊ณผ์ ๋๋ค.
๋ฌธ์์ด ๋น๊ต, ๊ฒฝ๊ณ ์ ๊ณต
์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋๋ผ๋ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ๋ค๋ ์ ์ ์ ์ํ์ธ์.
./myscript: line 5: [: too many arguments
์ด ๊ฒฝ๊ณ ๋ฅผ ์์ ๊ธฐ ์ํด ๊ฒฐ๋ก ์ ๋ด๋ฆฝ๋๋ค. $val2
ํฐ๋ฐ์ดํ๋ก ๋ฌถ์:
#!/bin/bash
val1=text
val2="another text"
if [ $val1 > "$val2" ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi
์ด์ ๋ชจ๋ ๊ฒ์ด ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค.
๋ฌธ์์ด ๋น๊ต
">" ๋ฐ "<" ์ฐ์ฐ์์ ๋ ๋ค๋ฅธ ํน์ง์ ๋๋ฌธ์์ ์๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ดํดํ๊ธฐ ์ํด ๋ค์ ๋ด์ฉ์ด ํฌํจ๋ ํ ์คํธ ํ์ผ์ ์ค๋นํ๊ฒ ์ต๋๋ค.
Likegeeks
likegeeks
์ด๋ฆ์ ๋ถ์ฌ์ ์ ์ฅํ์ myfile
, ํฐ๋ฏธ๋์์ ๋ค์ ๋ช
๋ น์ ์คํํฉ๋๋ค.
sort myfile
๋ค์๊ณผ ๊ฐ์ด ํ์ผ์ ํ์ ์ ๋ ฌํฉ๋๋ค.
likegeeks
Likegeeks
ํ sort
๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌธ์์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํฉ๋๋ค. ์ฆ, ์ด ์์์ ์๋ฌธ์๋ ๋๋ฌธ์๋ณด๋ค ์์ต๋๋ค. ์ด์ ๋์ผํ ๋ฌธ์์ด์ ๋น๊ตํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ค๋นํด ๋ณด๊ฒ ์ต๋๋ค.
#!/bin/bash
val1=Likegeeks
val2=likegeeks
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi
์คํํ๋ฉด ๋ชจ๋ ๊ฒ์ด ๋ฐ๋์ธ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ด์ ์๋ฌธ์๊ฐ ๋๋ฌธ์๋ณด๋ค ํฝ๋๋ค.
์ ๋ ฌ ๋ช
๋ น ๋ฐ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ฌธ์์ด ๋น๊ต
๋น๊ต ๋ช ๋ น์์๋ ๋๋ฌธ์๊ฐ ์๋ฌธ์๋ณด๋ค ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ฌธ์์ด ๋น๊ต๋ ๋ฌธ์์ ASCII ์ฝ๋๋ฅผ ๋น๊ตํ์ฌ ์ํ๋๋ฏ๋ก ์ ๋ ฌ ์์๋ ๋ฌธ์ ์ฝ๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
ํ sort
, ์์คํ
์ธ์ด ์ค์ ์ ์ง์ ๋ ์ ๋ ฌ ์์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํ์ผ ํ์ธ
์๋ง๋ ๋ค์ ๋ช ๋ น์ bash ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ํ์ผ๊ณผ ๊ด๋ จ๋ ๋ค์ํ ์กฐ๊ฑด์ ํ์ธํ ์ ์์ต๋๋ค. ๋ค์์ ์ด๋ฌํ ๋ช ๋ น์ ๋ชฉ๋ก์ ๋๋ค.
-d file
ํ์ผ์ด ์กด์ฌํ๊ณ ๋๋ ํฐ๋ฆฌ์ธ์ง ํ์ธํฉ๋๋ค.
-e file
ํ์ผ์ด ์กด์ฌํ๋์ง ํ์ธํฉ๋๋ค.
-f file
ํ์ผ์ด ์กด์ฌํ๊ณ ํ์ผ์ธ์ง ํ์ธํฉ๋๋ค.
-r file
ํ์ผ์ด ์กด์ฌํ๊ณ ์ฝ์ ์ ์๋์ง ํ์ธํฉ๋๋ค.
-s file ะ
ํ์ผ์ด ์กด์ฌํ๊ณ ๋น์ด ์์ง ์์์ง ํ์ธํฉ๋๋ค.
-w file
ํ์ผ์ด ์กด์ฌํ๊ณ ์ฐ๊ธฐ ๊ฐ๋ฅํ์ง ํ์ธํฉ๋๋ค.
-x file
ํ์ผ์ด ์กด์ฌํ๊ณ ์คํ ๊ฐ๋ฅํ์ง ํ์ธํฉ๋๋ค.
file1 -nt file2
์ต์ ์ธ์ง ํ์ธfile1
~๋ณด๋คfile2
.
file1 -ot file2
๋์ด๊ฐ ์๋์ง ํ์ธfile1
~๋ณด๋คfile2
.
-O file
ํ์ผ์ด ์กด์ฌํ๊ณ ํ์ฌ ์ฌ์ฉ์๊ฐ ์์ ํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
-G file
ํ์ผ์ด ์กด์ฌํ๋์ง, ํ์ผ์ ๊ทธ๋ฃน ID๊ฐ ํ์ฌ ์ฌ์ฉ์์ ๊ทธ๋ฃน ID์ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค.
์ค๋ ๋ ผ์๋ ๋ค๋ฅธ ๋ง์ ๋ช ๋ น๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๋ฌํ ๋ช ๋ น์ ๊ธฐ์ตํ๊ธฐ ์ฝ์ต๋๋ค. ๋ค์ํ ๋จ์ด์ ์ฝ์ด์ธ ์ด๋ฆ์ ๊ทธ๋ค์ด ์ํํ๋ ๊ฒ์ฌ๋ฅผ ์ง์ ์ ์ผ๋ก ๋ํ๋ ๋๋ค.
์ค์ ๋ก ๋ค์ ๋ช ๋ น ์ค ํ๋๋ฅผ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
#!/bin/bash
mydir=/home/likegeeks
if [ -d $mydir ]
then
echo "The $mydir directory exists"
cd $ mydir
ls
else
echo "The $mydir directory does not exist"
fi
๊ธฐ์กด ๋๋ ํฐ๋ฆฌ์ ๋ํ ์ด ์คํฌ๋ฆฝํธ๋ ํด๋น ๋ด์ฉ์ ํ์ํฉ๋๋ค.
๋๋ ํ ๋ฆฌ์ ๋ด์ฉ ๋์ด
์ฐ๋ฆฌ๋ ๋๋จธ์ง ๋ช ๋ น์ ์ง์ ์คํํด ๋ณผ ์ ์๋ค๊ณ ๋ฏฟ์ผ๋ฉฐ ๋ชจ๋ ๋์ผํ ์๋ฆฌ์ ๋ฐ๋ผ ์ฌ์ฉ๋ฉ๋๋ค.
๊ฒฐ๊ณผ
์ค๋ ์ฐ๋ฆฌ๋ bash ์คํฌ๋ฆฝํธ ์์ฑ์ ์์ํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ช ๊ฐ์ง ๊ธฐ๋ณธ์ ์ธ ์ฌํญ์ ๋ค๋ฃจ์์ต๋๋ค. ์ฌ์ค, bash ํ๋ก๊ทธ๋๋ฐ์ ์ฃผ์ ๋ ์์ฒญ๋ฉ๋๋ค. ์ด ๊ธฐ์ฌ๋ 11๊ฐ ์๋ฃ๋ก ๊ตฌ์ฑ๋ ๋๊ท๋ชจ ์๋ฆฌ์ฆ์ ์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ ๋ฒ์ญํ ๊ฒ์ ๋๋ค. ์ง๊ธ ๋ฐ๋ก ๊ณ์ํ๋ ค๋ฉด ๋ค์ ์๋ฃ์ ์๋ณธ ๋ชฉ๋ก์ ์ฐธ์กฐํ์ธ์. ํธ์๋ฅผ ์ํด ๋ฐฉ๊ธ ์ฝ์ ๋ฒ์ญ์ด ์ฌ๊ธฐ์ ํฌํจ๋์ด ์์ต๋๋ค.
Bash ์คํฌ๋ฆฝํธ ๋จ๊ณ๋ณ โ ์ฌ๊ธฐ์๋ bash ์คํฌ๋ฆฝํธ ์์ฑ์ ์์ํ๋ ๋ฐฉ๋ฒ, ๋ณ์ ์ฌ์ฉ์ ๊ณ ๋ คํ๋ ๋ฐฉ๋ฒ, ์กฐ๊ฑด๋ถ ๊ตฌ์กฐ, ๊ณ์ฐ, ์ซ์ ๋น๊ต, ๋ฌธ์์ด ๋ฐ ํ์ผ์ ๋ํ ์ ๋ณด ์ฐพ๊ธฐ์ ๋ํด ์ค๋ช ํฉ๋๋ค.Bash ์คํฌ๋ฆฝํ 2๋ถ, ๋ฉ์ง Bash โ ์ฌ๊ธฐ์์๋ for ๋ฐ while ๋ฃจํ ์์ ๊ธฐ๋ฅ์ด ๊ณต๊ฐ๋ฉ๋๋ค.Bash ์คํฌ๋ฆฝํ 3๋ถ, ๋งค๊ฐ๋ณ์ ๋ฐ ์ต์ โ ์ด ์๋ฃ๋ ์คํฌ๋ฆฝํธ์ ์ ๋ฌํ ์ ์๋ ๋ช ๋ น์ค ๋งค๊ฐ๋ณ์์ ํค, ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๊ณ ํ์ผ์์ ์ฝ์ ์ ์๋ ๋ฐ์ดํฐ๋ก ์์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.Bash ์คํฌ๋ฆฝํ 4๋ถ, ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ - ์ฌ๊ธฐ์๋ ํ์ผ ์ค๋ช ์ ๋ฐ ์์ , ์ ๋ ฅ, ์ถ๋ ฅ, ์ค๋ฅ ์คํธ๋ฆผ ๋ฐ ์ถ๋ ฅ ๋ฆฌ๋๋ ์ ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค.Bash ์คํฌ๋ฆฝํ 5๋ถ, Sighals & Jobs โ ์ด ์๋ฃ๋ Linux ์ ํธ, ์คํฌ๋ฆฝํธ ์ฒ๋ฆฌ ๋ฐ ์ผ์ ์ ๋ฐ๋ฅธ ์คํฌ๋ฆฝํธ ์คํ์ ๋ํด ๋ค๋ฃน๋๋ค.Bash ์คํฌ๋ฆฝํ 6๋ถ, ํจ์ โ ์ฌ๊ธฐ์์๋ ์คํฌ๋ฆฝํธ์์ ํจ์๋ฅผ ์์ฑํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์์ต๋๋ค.Bash ์คํฌ๋ฆฝํ 7๋ถ, sed ์ฌ์ฉ โ ์ด ๊ธฐ์ฌ๋ sed ์คํธ๋ฆฌ๋ฐ ํ ์คํธ ํธ์ง๊ธฐ ์์ ์ ๋ํด ๋ค๋ฃน๋๋ค.Bash ์คํฌ๋ฆฝํ 8๋ถ, awk ์ฌ์ฉ โ ์ด ์๋ฃ๋ awk ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ธ์ด๋ก ํ๋ก๊ทธ๋๋ฐํ๋ ๋ฐ ์ ๋ ํฉ๋๋ค.Bash ์คํฌ๋ฆฝํ 9๋ถ, ์ ๊ท ํํ์ โ ์ฌ๊ธฐ์์ bash ์คํฌ๋ฆฝํธ์์ ์ ๊ท์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฝ์ ์ ์์ต๋๋ค.Bash ์คํฌ๋ฆฝํ 10๋ถ, ์ค์ ์ โ ์ฌ์ฉ์์๊ฒ ๋ณด๋ผ ์ ์๋ ๋ฉ์์ง ์์ ๊ธฐ์ ๊ณผ ๋์คํฌ ๋ชจ๋ํฐ๋ง ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.Bash ์คํฌ๋ฆฝํ 11๋ถ, ๋ช ๋ น ์์ โ ์ด ์๋ฃ๋ ๋ํํ ์ ํธ๋ฆฌํฐ์์ ์ํธ ์์ฉ์ ์๋ํํ ์ ์๋ Expect ๋๊ตฌ ์ ์ฉ์ ๋๋ค. ํนํ, ์์ ์คํฌ๋ฆฝํธ์ bash ์คํฌ๋ฆฝํธ ๋ฐ ๊ธฐํ ํ๋ก๊ทธ๋จ๊ณผ์ ์ํธ ์์ฉ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ด ๊ธฐ์ฌ ์๋ฆฌ์ฆ์ ๊ท์คํ ํน์ง ์ค ํ๋๊ฐ ๋ชจ๋ ์์ค์ ์ฌ์ฉ์์๊ฒ ์ ํฉํ ๊ฐ์ฅ ๊ฐ๋จํ ๊ฒ๋ถํฐ ์์ํ์ฌ ์ ์ฐจ ๋งค์ฐ ์ฌ๊ฐํ ์ฃผ์ ๋ก ์ด์ด์ ธ ๋ชจ๋ ์ฌ๋์๊ฒ Linux ๋ช ๋ น์ค ์คํฌ๋ฆฝํธ ์์ฑ์ ๋ฐ์ ์ํฌ ์ ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํ๋ค๋ ๊ฒ์ ๋๋ค. .
์น์ ํ๋ ๋ ์ ์ฌ๋ฌ๋ถ! ์ฐ๋ฆฌ๋ bash ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ๊ฐ๋ค์๊ฒ ๊ทธ๋ค์ด ์ด๋ป๊ฒ ์๋ฌ์ ์ ์ ์ ๋๋ฌํ๋์ง์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ๊ทธ๋ค์ ๋น๋ฐ์ ๊ณต์ ํ๋๋ก ์์ฒญํ๋ฉฐ, ๋ฐฉ๊ธ ์ฒซ ๋ฒ์งธ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ ์ฌ๋๋ค๋ก๋ถํฐ ์ธ์์ ๋ฐ๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
๋ฑ๋ก๋ ์ฌ์ฉ์๋ง ์ค๋ฌธ ์กฐ์ฌ์ ์ฐธ์ฌํ ์ ์์ต๋๋ค.
๋๋จธ์ง ์๋ฆฌ์ฆ ๊ธฐ์ฌ๋ ๋ฒ์ญํด์ผ ํ๋์?
-
๋ค!
-
ํ์์์ด์
1030๋ช
์ ์ฌ์ฉ์๊ฐ ํฌํํ์ต๋๋ค. 106๋ช
์ ์ฌ์ฉ์๊ฐ ๊ธฐ๊ถํ์ต๋๋ค.
์ถ์ฒ : habr.com