Skip to main content

04A. Bash ์ตํžˆ๊ธฐ

About 2 minDevOpsDockercrashcoursepyrasis.comdockerdevops

04A. Bash ์ตํžˆ๊ธฐ ๊ด€๋ จ

๋ชฉ์ฐจ

์–ธ์ œ๋‚˜ ์ตœ์‹  Docker

04. Docker ์ด๋ฏธ์ง€ ์ƒ์„ฑํ•˜๊ธฐ
์–ธ์ œ๋‚˜ ์ตœ์‹  Docker

Docker๊ฐ€ ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ๋•Œ Bash(Bourne-again shell)๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” Bash ๋ฌธ๋ฒ•์„ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


>

์ถœ๋ ฅ ๋ฆฌ๋‹ค์ด๋ ‰์…˜. ๋ช…๋ น ์‹คํ–‰์˜ ํ‘œ์ค€ ์ถœ๋ ฅ(stdout)์„ ํŒŒ์ผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์œ ๋‹‰์Šค๊ณ„์—ด ์šด์˜์ฒด์ œ๋Š” ์žฅ์น˜๋„ ํŒŒ์ผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ช…๋ น ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํŠน์ • ์žฅ์น˜๋กœ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

echo "hello" > ./hello.txt
echo "hello" > /dev/null

<

์ž…๋ ฅ ๋ฆฌ๋‹ค์ด๋ ‰์…˜. ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ฝ์–ด ๋ช…๋ น์˜ ํ‘œ์ค€ ์ž…๋ ฅ(stdin)์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

cat < ./hello.txt

>>

๋ช…๋ น ์‹คํ–‰์˜ ํ‘œ์ค€ ์ถœ๋ ฅ(stdout)์„ ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. >๋Š” ์ด๋ฏธ ์žˆ๋Š” ํŒŒ์ผ์— ๋‚ด์šฉ์„ ๋ฎ์–ด์“ฐ์ง€๋งŒ >>๋Š” ํŒŒ์ผ ๋’ท๋ถ€๋ถ„์— ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

echo "world" >> ./hello.txt

2>

๋ช…๋ น ์‹คํ–‰์˜ ํ‘œ์ค€ ์—๋Ÿฌ(stderr)๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.


2>>

๋ช…๋ น ์‹คํ–‰์˜ ํ‘œ์ค€ ์—๋Ÿฌ(stderr)๋ฅผ ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.


&>

ํ‘œ์ค€ ์ถœ๋ ฅ๊ณผ ํ‘œ์ค€ ์—๋Ÿฌ๋ฅผ ๋ชจ๋‘ ํŒŒ์ผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.


1>&2

ํ‘œ์ค€ ์ถœ๋ ฅ์„ ํ‘œ์ค€ ์—๋Ÿฌ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. echo ๋ช…๋ น์œผ๋กœ ๋ฌธ์ž์—ด์„ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ์ถœ๋ ฅํ–ˆ์ง€๋งŒ ํ‘œ์ค€ ์—๋Ÿฌ๋กœ ๋ณด๋ƒˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜์—๋Š” ๋ฌธ์ž์—ด์ด ๋“ค์–ด๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

hello=$(echo "Hello World" 1>&2)
echo $hello

2>&1

ํ‘œ์ค€ ์—๋Ÿฌ๋ฅผ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. abcd๋ผ๋Š” ๋ช…๋ น์€ ์—†์œผ๋ฏ€๋กœ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ ์—๋Ÿฌ๋ฅผ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ๋ณด๋‚ธ ๋’ค ๋‹ค์‹œ /dev/null๋กœ ๋ณด๋ƒˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๊ฒƒ๋„ ์ถœ๋ ฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

abcd > /dev/null 2>&1

|

ํŒŒ์ดํ”„. ๋ช…๋ น ์‹คํ–‰์˜ ํ‘œ์ค€ ์ถœ๋ ฅ์„ ๋‹ค๋ฅธ ๋ช…๋ น์˜ ํ‘œ์ค€ ์ž…๋ ฅ์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ฆ‰ ์ฒซ ๋ฒˆ์งธ ๋ช…๋ น์˜ ์ถœ๋ ฅ ๊ฐ’์„ ๋‘ ๋ฒˆ์งธ ๋ช…๋ น์—์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ls -al | grep .txt

$

Bash์˜ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ๋Š” $๋ฅผ ๋ถ™์ด์ง€ ์•Š๊ณ , ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ๋‹ค ์“ธ ๋•Œ๋งŒ $๋ฅผ ๋ถ™์ž…๋‹ˆ๋‹ค.

hello="Hello World"
echo $hello
#
# Hello World

$()

๋ช…๋ น ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€์ˆ˜ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ช…๋ น์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋„˜๊ฒจ์ค„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ๋ฌธ์ž์—ด์•ˆ์— ๋ช…๋ น์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋„ฃ์„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

sudo docker rm $(docker ps -aq)
echo $(date)
#
# Tue Sep 9 21:24:30 KST 2014

$()๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ช…๋ น ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€์ˆ˜ํ™”ํ•ฉ๋‹ˆ๋‹ค.

sudo docker rm `docker ps -aq`
echo `date`
#
# Tue Sep 9 21:24:30 KST 2014

&&

ํ•œ ์ค„์—์„œ ๋ช…๋ น์„ ์—ฌ๋Ÿฌ ๊ฐœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ ์•ž์— ์žˆ๋Š” ๋ช…๋ น์ด ์—๋Ÿฌ ์—†์ด ์‹คํ–‰๋˜์–ด์•ผ ๋’ค์— ์˜ค๋Š” ๋ช…๋ น์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

make && make install

;

ํ•œ ์ค„์—์„œ ๋ช…๋ น์„ ์—ฌ๋Ÿฌ ๊ฐœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์•ž์— ์žˆ๋Š” ๋ช…๋ น์ด ์‹คํŒจ๋ฅผ ํ•ด๋„ ๋’ค์— ์˜ค๋Š” ๋ช…๋ น์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

false; echo "Hello"
Hello

' '

๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ' '์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๋ณ€์ˆ˜๋Š” ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๊ณ  ๋ณ€์ˆ˜๋ช… ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์™€ $()๋„ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

echo '$USER'
SER

$USER๊ฐ€ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.


" "

๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ๋ช…๋ น์— ๋ฌธ์ž์—ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ๋ณ€์ˆ˜์— ์ €์žฅํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ' '์™€๋Š” ๋‹ฌ๋ฆฌ " "์•ˆ์— ๋ณ€์ˆ˜๊ฐ€ ๋“ค์–ด์žˆ์œผ๋ฉด ๋ณ€์ˆ˜์˜ ๋‚ด์šฉ์œผ๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค. ๋˜ํ•œ ์™€ $()๋„ ์‹คํ–‰ ๊ฒฐ๊ณผ ๊ฐ’์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

echo "Hello World"
Hello World
echo "$USER"
# 
# pyrasis
echo "Host name is $(hostname)"
# 
# Host name is ubuntu
echo "Time: `date`"
# 
# Time: Tue Sep  9 21:28:10 KST 2014

" ' ' "

" "์•ˆ์— ' '๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น ์•ˆ์—์„œ ๋‹ค์‹œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

bash -c "/bin/echo Hello 'World'"
# 
# Hello World

\$hello

' '์•ˆ์—์„œ "๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” "์ฒ˜๋Ÿผ ์•ž์— \๋ฅผ ๋ถ™์—ฌ์ค๋‹ˆ๋‹ค.

bash -c "/bin/echo '{ \"user\": \"$USER\" }'"
# 
# { "user": "pyrasis" }

" "์•ˆ์—์„œ ", $, ๋“ฑ์˜ ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์•ž์—`๋ฅผ ๋ถ™์—ฌ์ค๋‹ˆ๋‹ค.

echo "\$hello \" \`"
# 
# $hello " `

${}

๋ณ€์ˆ˜ ์น˜ํ™˜(substitution)์ž…๋‹ˆ๋‹ค. " " ๋ฌธ์ž์—ด ์•ˆ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ${} ๋Œ€์‹  $๋งŒ ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

str="World"
echo "Hello ${str}"
Hello World

์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ ๊ฐ’์„ ์„ค์ •ํ•  ๋•Œ๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ HELLO ๋ณ€์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๋ณ€์ˆ˜๊ฐ€ ์—†์œผ๋ฉด ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ abcd๋ฅผ ๋Œ€์ž…ํ•ฉ๋‹ˆ๋‹ค.

HELLO=
HELLO=${HELLO-"abcd"}
echo $HELLO

๊ฐ’์ด NULL์ธ HELLO ๋ณ€์ˆ˜๊ฐ€ ์ด๋ฏธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ๊ฐ’์„ ๋Œ€์ž…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋ณ€์ˆ˜์— ๊ฐ’์ด ์žˆ์œผ๋ฉด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ , ๊ฐ’์ด NULL์ด๋ฉด ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ abcd๋ฅผ ๋Œ€์ž…ํ•ฉ๋‹ˆ๋‹ค.

WORLD=
WORLD=${WORLD:-"abcd"}
echo $WORLD
abcd

๋ณ€์ˆ˜์— ๊ฐ’์ด NULL์ด๋ฏ€๋กœ ๊ธฐ๋ณธ ๊ฐ’์„ ๋Œ€์ž…ํ•ฉ๋‹ˆ๋‹ค.


\

ํ•œ ์ค„๋กœ๋œ ๋ช…๋ น์„ ์—ฌ๋Ÿฌ ์ค„๋กœ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

sudo docker run -d --name hello busybox:latest
sudo docker run -d \
  --name hello \
  busybox:latest

{1..10}

์—ฐ์†๋œ ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. {์‹œ์ž‘ ์ˆซ์ž..๋ ์ˆซ์ž} ํ˜•์‹์ž…๋‹ˆ๋‹ค.

echo {1..10}
# 
# 1 2 3 4 5 6 7 8 9 10

{๋ฌธ์ž์—ด1,๋ฌธ์ž์—ด2}

{}์•ˆ์— ๋ฌธ์ž์—ด์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์ •ํ•˜์—ฌ ๋ช…๋ น ์‹คํ–‰ ํšŸ์ˆ˜๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ hello.txt, world.txt ๋‘ ํŒŒ์ผ์„ ํ•œ๋ฒˆ์— hello-dir ๋””๋ ‰ํ„ฐ๋ฆฌ ์•„๋ž˜์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

cp ./{hello.txt,world.txt} hello-dir/

if

if ์กฐ๊ฑด๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์™€ ๋ณ€์ˆ˜๋ผ๋ฆฌ ๋˜๋Š” ๋ฌธ์ž์—ด๊ณผ ๋น„๊ตํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

if [ $a <span class="token parameter variable">-eq $b ]; then
  echo $a
fi

์ˆซ์ž ๋น„๊ต

  • -eq: ๊ฐ™๋‹ค
  • -ne: ๊ฐ™์ง€ ์•Š๋‹ค
  • -gt: ์ดˆ๊ณผ
  • -ge: ์ด์ƒ
  • -lt: ๋ฏธ๋งŒ
  • -le: ์ดํ•˜

๋ฌธ์ž์—ด ๋น„๊ต

  • =, ==: ๊ฐ™๋‹ค
  • !=: ๊ฐ™์ง€ ์•Š๋‹ค
  • -z: ๋ฌธ์ž์—ด์ด NULL์ผ ๋•Œ
  • -n: ๋ฌธ์ž์—ด์ด NULL์ด ์•„๋‹ ๋•Œ

for

for ๋ฐ˜๋ณต๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์•ˆ์— ์žˆ๋Š” ๊ฐ’์„ ๋ฐ˜๋ณตํ•˜๊ฑฐ๋‚˜ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

for i in $(ls)
do
  echo $i
done

for (( i=0; i < 10; i++ ))
do
  echo $i
done

NUM=(1 2 3)
for i in ${NUM[@]}
do
  echo $i
done

while

while ๋ฐ˜๋ณต๋ฌธ์ž…๋‹ˆ๋‹ค.

while :
do
  echo "Hello World";
  sleep 1;
done

<<<

๋ฌธ์ž์—ด์„ ๋ช…๋ น(ํ”„๋กœ์„ธ์Šค)์˜ ํ‘œ์ค€ ์ž…๋ ฅ์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

cat <<< "User name is $USER"
# 
# User name is pyrasis

<<EOF ... EOF

์—ฌ๋Ÿฌ ์ค„์˜ ๋ฌธ์ž์—ด์„ ๋ช…๋ น(ํ”„๋กœ์„ธ์Šค)์˜ ํ‘œ์ค€ ์ž…๋ ฅ์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

cat > ./hello.txt <<EOF
# 
# Hello World
# Host name is $(hostname)
# User name is $(USER)
# EOF

cat์€ ํŒŒ์ผ์ด๋‚˜ ํ‘œ์ค€ ์ž…๋ ฅ์˜ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•˜๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค. cat์˜ ํ‘œ์ค€ ์ถœ๋ ฅ์„ ./hello.txt๋กœ ์ €์žฅํ•˜๊ณ , <<EOF๋กœ ๋ฌธ์ž์—ด์„ cat์˜ ํ‘œ์ค€ ์ž…๋ ฅ์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฌธ์ž์—ด 3์ค„์ด ./hello.txt ํŒŒ์ผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.


export

์„ค์ •ํ•œ ๊ฐ’์„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. export <๋ณ€์ˆ˜>=<๊ฐ’> ํ˜•์‹์ž…๋‹ˆ๋‹ค.

export HELLO=world

printf

์ง€์ •ํ•œ ํ˜•์‹๋Œ€๋กœ ๊ฐ’์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ดํ”„์™€ ์—ฐ๋™ํ•˜์—ฌ ๋ช…๋ น(ํ”„๋กœ์„ธ์Šค)์— ๊ฐ’์„ ์ž…๋ ฅํ•˜๋Š” ํšจ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

printf 80\\nexampleuser\\ny | example-config
# 
# Port: 80
# User: exampleuser
# Save Configuration (y/n): y

์˜ˆ๋ฅผ ๋“ค์–ด example-config๋Š” Port, User, Save Configuration์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž…๋ ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. printf๋กœ ๋ฏธ๋ฆฌ ๊ฐ’์„ ์„ค์ •ํ•˜์—ฌ ํŒŒ์ดํ”„๋กœ example-config์— ๋„˜๊ฒจ์ฃผ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ ๊ฐ’์ด ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค. ์ค„๋ฐ”๊ฟˆ(๊ฐœํ–‰)์€ \n์œผ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.


sed

ํ…์ŠคํŠธ ํŒŒ์ผ์—์„œ ๋ฌธ์ž์—ด์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. hello.txt ํŒŒ์ผ์˜ ๋‚ด์šฉ ์ค‘์—์„œ hello๋ผ๋Š” ๋ฌธ์ž์—ด์„ ์ฐพ์•„์„œ world ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

sed -i "s/hello/world/g" hello.txt

sed -i "s/<์ฐพ์„ ๋ฌธ์ž์—ด>/<๋ฐ”๊ฟ€ ๋ฌธ์ž์—ด>/g" <ํŒŒ์ผ๋ช…> ํ˜•์‹์ž…๋‹ˆ๋‹ค. /์™€ ๊ฐ™์€ ํŠน์ˆ˜ ๋ฌธ์ž๋Š” ์•ž์— \๋ฅผ ๋ถ™์—ฌ /๋กœ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.


#

์ฃผ์„์ž…๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ์— ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ๋ช…๋ น์ด ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

# echo "Hello World"

์ด์ฐฌํฌ (MarkiiimarK)
Never Stop Learning.