์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ๋ฌ์คํธ ์์
- ์๋ฐ ๊ธฐ์ด
- ๋ฐฑ์ค ๋ฌ์คํธ
- ํ์ด์ฌ
- ubuntu
- Database
- Rust
- Reversing
- Python
- java
- C
- ์ด์์ฒด์
- ์ค๋ผํดDB
- Python challenge
- ๋ฌ์คํธ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ํ์ด์ฌ ์ฑ๋ฆฐ์ง
- ๋ฌ์คํธ ํ๋ก๊ทธ๋๋ฐ ๊ณต์ ๊ฐ์ด๋
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฐ์ดํฐ ํต์
- ์ค๋ผํด
- ์๋ฐ
- ์๋ฐ ๊ฐ๋
- ๋ฐฑ์ค
- Operating System
- ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ
- OS
- ์ฐ๋ถํฌ
- data communication
- ํ์ด์ฌ ์ฒผ๋ฆฐ์ง
Archives
- Today
- Total
IT’s Portfolio
[Lecture] Operating System with Ubuntu - Day 5 ๋ณธ๋ฌธ
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