๊ด€๋ฆฌ ๋ฉ”๋‰ด

IT’s Portfolio

[Lecture] Operating System with Ubuntu - Day 5 ๋ณธ๋ฌธ

Development Study

[Lecture] Operating System with Ubuntu - Day 5

f1r3_r41n 2023. 4. 17. 15:28
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ–ฅ Operating System - Day 5

๐Ÿ‘‰๐Ÿป [Extra Chapter] ์…ธ ์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • C ์–ธ์–ด์™€ ์œ ์‚ฌํ•˜๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅ
  • ๋ณ„๋„๋กœ ์ปดํŒŒ์ผ์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ…์ŠคํŠธ ํŒŒ์ผ ํ˜•ํƒœ๋กœ ๋ฐ”๋กœ ์‹คํ–‰

๐Ÿ‘€ ์…ธ ์Šคํฌ๋ฆฝํŠธ์˜ ์ž‘์„ฑ๊ณผ ์‹คํ–‰

  • ์…ธ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ํ™•์žฅ๋ช…์€ ๋˜๋„๋ก *.sh ๋กœ ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹์Œ
  • ์…ธ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ /usr/local/bin/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋ณต์‚ฌํ•˜๊ณ , ์†์„ฑ์„ 755 ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ณด์•ˆ ์ƒ root ๋งŒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ
  • sh <script_file> ๋กœ ์‹คํ–‰
  • chmod +x <script_file>
    • ์‹คํ–‰ ๊ฐ€๋Šฅ ์†์„ฑ์œผ๋กœ ๋ณ€๊ฒฝ
    • ./<script_file> ๋กœ ์‹คํ–‰

๐Ÿ‘€ ๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ

# ์ž˜๋ชป๋œ ๋ณ€์ˆ˜ ๋Œ€์ž…
testval = hello

# ์˜ฌ๋ฐ”๋ฅธ ๋ณ€์ˆ˜ ๋Œ€์ž…
testval=hello

# ๋ณ€์ˆ˜ ๋Œ€์ž… ํ›„ ์ถœ๋ ฅ๋ฌธ
# echo ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ธ์ž๋กœ $๋ฅผ ๋ถ™์ธ ๋ณ€์ˆ˜๋ฅผ ์ฃผ๋ฉด ๋จ
echo $testval
# Result: hello

# ๊ณต๋ฐฑ์ด ํฌํ•จ๋œ ๊ฐ’์„ ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•  ์‹œ
# testval ๋ณ€์ˆ˜์—๋Š” Yes๋ผ๋Š” ๊ฐ’์ด ๋Œ€์ž…๋˜๋ฉฐ Sir์€ ๋ช…๋ น์–ด ์ทจ๊ธ‰์„ ๋ฐ›๊ฒŒ ๋จ
testval=Yes Sir

# ๊ณต๋ฐฑ์ด ํฌํ•จ๋œ ๊ฐ’์€ ์Œ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด์ฃผ์–ด์•ผ ํ•จ
testval="Yes Sir"

# ์ˆซ์ž ์—ฐ์‚ฐ์‹์„ ๋ณ€์ˆ˜์— ๊ทธ๋ƒฅ ๋Œ€์ž… ์‹œ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ๋˜์–ด ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋จ
testval=7+5
echo $testval
# Result: 7+5

๐Ÿ‘€ ๋ณ€์ˆ˜์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ

#!/bin/bash
myvar="hello world!"
echo $myvar
echo "$myvar"
echo '$myvar'
echo \$myvar
printf "Input: " 
read myvar
echo '$myvar' = $myvar
exit 0
# Result
# hello world!
# hello world!
# $myvar
# $myvar
# Input: i
# $myvar = i

๐Ÿ‘€ ์ˆซ์ž ๊ณ„์‚ฐ

#!/bin/bash
n1=100
n2=$n1+200
echo $n2
n3=`expr $n1 + 200`
add=`expr $n1 + $n3`
sub=`expr $n1 - $n3`
mul=`expr $n1 \* $n3`
div=`expr $n1 / $n3`
echo "$n1 + $n3 = $add"
echo "$n1 - $n3 = $sub"
echo "$n1 * $n3 = $mul"
echo "$n1 / $n3 = $div"
exit 0
# Result
# 100+200
# 100 + 300 = 400
# 100 - 300 = -200
# 100 * 300 = 30000
# 100 / 300 = 0
  • ๋ณ€์ˆ˜์— ๋Œ€์ž…๋œ ๊ฐ’์€ ๋ชจ๋‘ ๋ฌธ์ž์—ด๋กœ ์ทจ๊ธ‰๋˜๋Š” ๊ฒƒ์„ n2=$n1+200 ๊ตฌ๋ฌธ์—์„œ ์•Œ ์ˆ˜ ์žˆ์Œ
  • ๋ณ€์ˆ˜์— ๋“ค์–ด ์žˆ๋Š” ๊ฐ’์„ ์ˆซ์ž๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ์—ฐ์‚ฐํ•˜๋ ค๋ฉด expr ๊ณผ ํ•จ๊ป˜ `๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ
  • ์ˆ˜์‹์— ๊ด„ํ˜ธ ๋˜๋Š” * ๋Š” ์•ž์— ๊ผญ \ ๋ฅผ ๋ถ™์—ฌ์•ผ ํ•จ

๐Ÿ‘€ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜

  • ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜๋Š” $0, $1, $2 ... ์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง
  • ์ „์ฒด ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜๋Š” $* ๋กœ ํ‘œํ˜„ํ•จ

๐Ÿ‘€ if ๋ฌธ

#!/bin/bash
if [ "hello world" = "hello world" ]
then
    echo "hello world!!"
fi
exit 0
# Result
# "hello world!!"
  • if ๋ฌธ์˜ ๊ธฐ๋ณธ ํ˜•์‹
  • ์ฐธ๊ณผ ๊ฑฐ์ง“์˜ ๋‘ ๊ฒฝ์šฐ๋งŒ ์‚ฌ์šฉ
    • ์ด์ค‘๋ถ„๊ธฐ
  • [ conditional_expression ] ์—์„œ ์ธ์ž๋“ค๊ณผ ์—ฐ์‚ฐ์ž ์‚ฌ์ด๋Š” ๊ณต๋ฐฑ ์ฒ˜๋ฆฌ ํ•ด์ฃผ์–ด์•ผ ํ•จ
#!/bin/bash
printf "Input: "
read input
if [ $input == "hello" ] 
then
    echo "correct!"
else
    echo "wrong.."
fi
exit 0
# Result
# Input: hello
# correct!
  • if~else ๋ฌธ์˜ ํ˜•์‹

๐Ÿ‘€ ์กฐ๊ฑด๋ฌธ์— ๋“ค์–ด๊ฐ€๋Š” ๋น„๊ต ์—ฐ์‚ฐ์ž

๐Ÿค” ๋ฌธ์ž์—ด ๋น„๊ต

  • "string1"="string2" : ๋‘ ๋ฌธ์ž์—ด์ด ๊ฐ™์œผ๋ฉด ์ฐธ
  • "string1"!="string2" : ๋‘ ๋ฌธ์ž์—ด์ด ๊ฐ™์ง€ ์•Š์œผ๋ฉด ์ฐธ
  • -n "string" : ๋ฌธ์ž์—ด์ด NULL์ด ์•„๋‹ˆ๋ฉด ์ฐธ
  • -z "string" : ๋ฌธ์ž์—ด์ด NULL์ด๋ฉด ์ฐธ

๐Ÿค” ์‚ฐ์ˆ  ๋น„๊ต

  • expression1 -eq expression2 : ๋‘ ์ˆ˜์‹(๋˜๋Š” ๋ณ€์ˆ˜)์ด ๊ฐ™์œผ๋ฉด ์ฐธ
  • expression1 -ne expression2 : ๋‘ ์ˆ˜์‹(๋˜๋Š” ๋ณ€์ˆ˜)์ด ๊ฐ™์ง€ ์•Š์œผ๋ฉด ์ฐธ
  • expression1 -gt expression2 : ์ˆ˜์‹1์ด ํฌ๋‹ค๋ฉด ์ฐธ
  • expression1 -ge expression2 : ์ˆ˜์‹1์ด ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์ฐธ
  • expression1 -lt expression2 : ์ˆ˜์‹1์ด ์ž‘์œผ๋ฉด ์ฐธ
  • expression1 -le expression2 : ์ˆ˜์‹1์ด ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์ฐธ
  • !expression : ์ˆ˜์‹์ด ๊ฑฐ์ง“์ด๋ฉด ์ฐธ

๐Ÿ‘€ ํŒŒ์ผ ๊ด€๋ จ ์กฐ๊ฑด

#!/bin/bash
f=/lib/systemd/system/cron.service
if [ -f $f ]
then
    head -5 $f
else
    echo "Not Found cron.."
fi
exit 0
# Result
# Not Found cron..
  • -d : ํŒŒ์ผ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฉด ์ฐธ
  • -e : ํŒŒ์ผ์ด ์กด์žฌํ•˜๋ฉด ์ฐธ
  • -f : ํŒŒ์ผ์ด ์ผ๋ฐ˜ ํŒŒ์ผ์ด๋ฉด ์ฐธ
  • -g : ํŒŒ์ผ์— set-group-id ๊ฐ€ ์„ค์ •๋˜๋ฉด ์ฐธ
  • -r : ํŒŒ์ผ์ด ์ฝ๊ธฐ ๊ฐ€๋Šฅ์ด๋ฉด ์ฐธ
  • -s : ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด ์ฐธ
  • -u : ํŒŒ์ผ์— set-user-id ๊ฐ€ ์„ค์ •๋˜๋ฉด ์ฐธ
  • -w : ํŒŒ์ผ์ด ์“ฐ๊ธฐ ๊ฐ€๋Šฅ ์ƒํƒœ๋ฉด ์ฐธ
  • -x : ํŒŒ์ผ์ด ์‹คํ–‰ ๊ฐ€๋Šฅ ์ƒํƒœ๋ฉด ์ฐธ

๐Ÿ‘€ case~esac ๋ฌธ

#!/bin/bash
case "$1" in
    start)
    echo "start!";;
    stop)
    echo "stop!";;
    restart)
    echo "restart!";;
    *)
    echo "idontno!";;
esac
exit 0
# Result
# Input: sh case.sh start
# Output: start!
# Input: sh case.sh
# Output: idontno!
#!/bin/bash
printf "Are you man? (y/n) >> "
read a
case $a in
    yes | y | Y | Yes | YES)
        echo "Male!";;
    [nN]*)
        echo "Female!";;
    *)
        echo "y or n"
        exit 1;;
esac
exit 0
# Result
# Are you man? (y/n) >> n
# Female!
  • case~esac ๋ฌธ์˜ ํ˜•์‹
  • ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์žˆ์„ ๋•Œ ์‚ฌ์šฉ
    • ๋‹ค์ค‘๋ถ„๊ธฐ

๐Ÿ‘€ AND, OR ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž

#!/bin/bash
echo "Input the File name: "
read f
# -f : ํŒŒ์ผ์ด ์ •๊ทœ ํŒŒ์ผ์ด๋ฉด ์ฐธ
# -s : ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ 0๋ณด๋‹ค ํฌ๋ฉด ์ฐธ
if [ -f $f ] && [ -s $f ] ; then
    head -5 $f
else
    echo "FilefoundError!"
fi
exit 0
  • AND๋Š” -a ํ˜น์€ &&
  • OR์€ -o ํ˜น์€ ||

๐Ÿ‘€ ๋ฐ˜๋ณต๋ฌธ

๐Ÿค” for~in ๋ฌธ

#!/bin/bash
hap=0
for i in `seq 1 10` # for i in {1..10}
do
    hap=`expr $hap + $i`
done
echo "Sum{1..10}: "$hap
exit 0
  • for ๋ฌธ์˜ ํ˜•์‹
#!/bin/bash
for f in $(ls *.sh)
do
    echo "-----------${f}-----------"
    head -5 $f
done
exit 0
  • ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ์…ธ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ํŒŒ์ผ๋ช…๊ณผ ์•ž 5์ค„์„ ์ถœ๋ ฅํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ

๐Ÿค” while ๋ฌธ

#!/bin/bash
while [ 1 ]
do
    echo "loop.."
done
exit 0
  • while ๋ฌธ์˜ ํ˜•์‹
  • ์กฐ๊ฑด์‹์ด [ 1 ] ๋˜๋Š” [ : ] ์ผ ๊ฒฝ์šฐ ํ•ญ์ƒ ์ฐธ
#!/bin/bash
hap=0
i=1
while [ $i -le 10 ]    # until [ $i -gt 10]
do
    hap=`expr $hap + $i`
    i=`expr $i + 1`
done
echo "SUM{1..10} = ${hap}"
exit 0
# Result
# SUM{1..10} = 55
  • until ๋ฌธ
    • while ๋ฌธ๊ณผ ์šฉ๋„๋Š” ๊ฑฐ์˜ ๊ฐ™์ง€๋งŒ, ์กฐ๊ฑด์‹์ด ์ฐธ์ผ ๋•Œ๊นŒ์ง€(=๊ฑฐ์ง“์ธ ๋™์•ˆ) ๊ณ„์† ๋ฐ˜๋ณต
#!/bin/bash
mypass="1234"
read input
while [ $mypass != $input ]
do
    printf "wrong passwd. try again.. >> "
    read input
done
printf "correct passwd!!\nyour passwd: %s\n" $mypass
exit 0
# Result
# 3333
# wrong passwd. try again.. >> 2312
# wrong passwd. try again.. >> 1234
# correct passwd!!
# your passwd: 1234
  • ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž์„ ๋•Œ๊นŒ์ง€ ๊ณ„์† ๋ฐ˜๋ณตํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ

๐Ÿ‘€ break, continue, exit, return ๋ฌธ

#!/bin/bash
printf "Loop Start!(b: break, c: continue, e: exit)"
while [ 1 ] ;
do
    printf " >> "
    read input
    case $input in
        b | B)
            break;;
        c | C)
            echo "Loop Continue!!"
            continue;;
        e | E)
            echo "Program Down.."
            exit 1;;
    esac
done
echo "Loop Break!!"
exit 0;
  • break : ์ฃผ๋กœ ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ ์‹œ ์‚ฌ์šฉ
  • continue : ๋ฐ˜๋ณต๋ฌธ์˜ ์กฐ๊ฑด์‹์œผ๋กœ ๋Œ์•„๊ฐ€๊ฒŒ ํ•จ
  • exit : ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์„ ์™„์ „ํžˆ ์ข…๋ฃŒ
  • return : ํ•จ์ˆ˜ ๋‚ด์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ณณ์œผ๋กœ ๋Œ์•„๊ฐ€๊ฒŒ ํ•จ

๐Ÿ‘€ ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜

#!/bin/bash
myFunction () {
    echo "myFuncion()"
    return
}
echo "start"
myFunction
echo "exit.."
exit 0
  • ์‚ฌ์šฉ์ž๊ฐ€ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ์˜ ํ˜•์‹

๐Ÿ‘€ ํŒŒ๋ผ๋ฏธํ„ฐ ํ•จ์ˆ˜

#!/bin/bash
hap() {
    printf "%d\n" `expr $1 + $2`
}
printf "15+40 = "
hap 15 40
exit 0;
# Result
# 15+40 = 55
  • ํ•จ์ˆ˜ ์ •์˜์˜ ๊ธฐ๋ณธ ํ˜•์‹
  • $0 ์€ ์‹คํ–‰ํ•œ ์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„
  • ๊ทธ ์ดํ›„๋Š” ์ „๋‹ฌ๋ฐ›์€ ์ธ์ž ๊ฐ’๋“ค
    • $1, $2 ...

๐Ÿ‘€ eval

#!/bin/bash
str="ls -l eval.sh"
echo $str
eval $str
exit 0
  • ๋ฌธ์ž์—ด์„ ๋ช…๋ น๋ฌธ์œผ๋กœ ์ธ์‹ํ•˜๊ณ  ์‹คํ–‰ํ•จ

๐Ÿ‘€ export

# exp1.sh
#!/bin/bash
echo $v1
echo $v2
exit 0

# exp2.sh
#!/bin/bash
v1="local variable"
export v2="outer variable"
sh exp1.sh
exit 0
# Result
# 
# outer variable
  • ์™ธ๋ถ€ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•ด์ฃผ๋Š” export
  • exp2.sh ์—์„œ ์™ธ๋ถ€ ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋˜์ง€ ์•Š์€ v1์€ ์ถœ๋ ฅ์ด ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ

๐Ÿ‘€ echo์™€ printf

  • printf ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด C ์–ธ์–ด์˜ printf() ํ•จ์ˆ˜์™€ ๋น„์Šทํ•˜๊ฒŒ ํ˜•์‹์„ ์ง€์ •ํ•ด์„œ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Œ
  • echo ๋Š” ๊ฐœํ–‰๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์–ด ์ถœ๋ ฅ๋˜์ง€๋งŒ printf ๋Š” ๊ฐœํ–‰๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์Œ

๐Ÿ‘€ set๊ณผ $(๋ช…๋ น์–ด)

#!/bin/bash
echo "Today: $(date)"
set $(date)
echo "Today's $4"
exit 0
# Result
# Today's 2023๋…„ 4์›” 17์ผ ์›”์š”์ผ 15์‹œ 19๋ถ„ 25์ดˆ KST
# Today's ์›”์š”์ผ
  • $(๋ช…๋ น์–ด) : ๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์–ด๋ฅผ ๊ฒฐ๊ณผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ
  • set : ๊ฒฐ๊ณผ๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ

๐Ÿ‘€ shift

#!/bin/bash
myfunc() {
    str=""
    while [ "$1" != "" ] ; do
        echo $1
        str="$str $1"
        shift
    done
    echo $str
}
myfunc aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk
exit 0
# Result
# aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk
  • ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ์™ผ์ชฝ์œผ๋กœ ํ•œ ๋‹จ๊ณ„์”ฉ ์•„๋ž˜๋กœ ์‰ฌํ”„ํŠธ์‹œํ‚ด
728x90
๋ฐ˜์‘ํ˜•

'Development Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Lecture] Operating System with Ubuntu - Day 6  (0) 2023.04.23
[Lecture] DataBase - Mid Summary  (0) 2023.04.22
[Lecture] DataBase - SQL Assignment  (0) 2023.04.16
[Lecture] Data Communication - Mid Summary  (1) 2023.04.14
[Lecture] Data Communication - Day 7  (0) 2023.04.13
Comments