linux ์‚ฌ์šฉํ•˜๊ธฐ

Park Jae Hongยท2022๋…„ 7์›” 19์ผ
0

๐Ÿšฉ linux ๊ฐ€์ƒ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•œ ์ด์œ 

  • ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋ฉด ์—ฌ๋Ÿฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋ฉด ๊ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๋ผ๋ฆฌ ์ถฉ๋Œ์„ ์ผ์œผํ‚ค๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฝค ์žˆ๋‹ค. ๋˜๋Š”, ํŠน์ • ๋ฒ„์ „๊ณผ ํ˜ธํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ฒจ์„œ ์ตœ์‹  ๋ฒ„์ „๊ณผ ์ด์ „ ๋ฒ„์ „ ์ค‘ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒ๋˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ๋œ ๊ฒฝ์šฐ์— ์žˆ์–ด์„œ ์ž˜๋ชปํ•˜๋ฉด ์ „๋ถ€ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
    ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ”„๋กœ์ ํŠธ ๋‹จ์œ„๋กœ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ด์„œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์„œ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋ฉด ํ›จ์”ฌ ์ž‘์—…์ด ํŽธํ•ด์ง‘๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ ํ˜น์€ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ ๋™์ผ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ฌ ๋•Œ, ์ž‘์—… ํ™˜๊ฒฝ์„ ๊ณ ์ •์‹œ์ผฐ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ๊ตฌ์„ฑํ•˜๋ฉด, ์ž‘์—…ํ™˜๊ฒฝ๊ณผ ๋ฒ„์ „ ๋ฌธ์ œ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์ฆ‰, ๋…๋ฆฝ์ ์ธ ์ž‘์—…ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋‹ค.

(์ฐธ์กฐ : https://chancoding.tistory.com/85)


์‰˜(Shell) ์ด๋ž€ ?

  • Shell(์‰˜)์€ ์šด์˜์ฒด์ œ์ƒ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๋ช…๋ น์„ ์ฝ๊ณ  ํ•ด์„ํ•˜์—ฌ ๋Œ€์‹  ์‹คํ–‰ํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.
    ์ฆ‰ ๋‹ค์‹œ๋งํ•ด์„œ, ์šด์˜์ฒด์ œ์˜ ์ปค๋„๊ณผ ์‚ฌ์šฉ์ž ์‚ฌ์ด๋ฅผ ์ด์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ ์‚ฌ์šฉ์ž์˜ ๋ช…๋ น์–ด๋ฅผ ํ•ด์„ํ•˜๊ณ  ์šด์˜์ฒด์ œ๊ฐ€ ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ช…๋ น์–ด ํ•ด์„๊ธฐ์ด๋‹ค.
    Linux์—์„œ ์‚ฌ์šฉํ•˜๋Š” Shell์˜ ์ข…๋ฅ˜๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ๋‹ค
bash : Bourne-Again Shell(ํ”„๋กฌํ”„ํŠธ : #, ๊ฒฝ๋กœ : /bin/bash). ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์œผ๋กœ ์‚ฌ์šฉ.
sh : Bourne Shell(ํ”„๋กฌํ”„ํŠธ : $, ๊ฒฝ๋กœ : /bin/sh)
csh : C Shell(ํ”„๋กฌํ”„ํŠธ : %, ๊ฒฝ๋กœ : /bin/csh)
ksh : Kron Shell(ํ”„๋กฌํ”„ํŠธ : $, ๊ฒฝ๋กœ : /bin/ksh)
tcsh : TENEX C Shell(ํ”„๋กฌํ”„ํŠธ : >, ๊ฒฝ๋กœ : /bin/tcsh)

์‰˜ ์Šคํฌ๋ฆฝํŠธ(Shell Script) ๋ž€ ?

  • Shell Script(์‰˜ ์Šคํฌ๋ฆฝํŠธ)๋ž€ Shell(์‰˜)์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋“ค์˜ ์กฐํ•ฉ์„ ๋ชจ์•„์„œ ๋งŒ๋“  ๋ฐฐ์น˜(batch)ํŒŒ์ผ์ด๋‹ค.
    ์ฆ‰, ์šด์˜์ฒด์ œ์˜ Shell์„ ์ด์šฉํ•˜์—ฌ ํ•œ์ค„์”ฉ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ์œผ๋ฉด์„œ ๋ช…๋ น์–ด๋“ค์„ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์˜ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.
    Shell Script๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌถ์–ด์ง„ ๋ช…๋ น์–ด ์กฐํ•ฉ์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๋ฐ˜๋ณต์ ์ธ ๋ช…๋ น์–ด๋ฅผ ๋‹จ์ผ ๋ช…๋ น์œผ๋กœ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Shell Script ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

: ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜์–ด, ์„œ๋ฒ„ ์ €์žฅ๊ณต๊ฐ„์ด ํ•˜๋‚˜๋„ ๋‚จ์•„ ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ, ๋กœ๊ทธ ํŒŒ์ผ์ด ์—…๋ฐ์ดํŠธ๊ฐ€ ์•ˆ๋˜์–ด ๊ด€๋ จ ํ”„๋กœ๊ทธ๋žจ์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ ๋˜์—ˆ์„ ๊ฒฝ์šฐ ์ด๋Ÿด ๊ฒฝ์šฐ ๊ฐ„๋‹จํ•œ ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ ๋ฐ ์ฃผ๊ธฐ์  ์‹คํ–‰์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ๋ฒ•

  • echo : ํ™”๋ฉด์— ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด

  • ๋ณ€์ˆ˜ ์„ ์–ธ : ๋ณ€์ˆ˜๋ช… = value ( ํƒ€์ž…์„ ๋”ฐ๋กœ ์„ ์–ธํ•  ํ•„์š”๋Š” ์—†๊ณ , int ๋ฅผ ์ œ์™ธํ•œ ๊ฐ’์„์€ ''๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.)

  • ๋ฆฌ์ŠคํŠธ ๋ณ€์ˆ˜ ์„ ์–ธ : ๋ณ€์ˆ˜๋ช…=(๋ฐ์ดํ„ฐ1๋ฐ์ดํ„ฐ2๋ฐ์ดํ„ฐ3...)

  • ๋ฆฌ์ŠคํŠธ ๋ณ€์ˆ˜ ์‚ฌ์šฉ : ${๋ณ€์ˆ˜๋ช…[์ธ๋ฑ์Šค๋ฒˆํ˜ธ]}

#!/bin/bash

arr = ("a" "b" "c")     // ๋ณ€์ˆ˜ ์„ ์–ธ
echo ${arr[1]}          // $arr ๋ฐฐ์—ด์˜ ๋‘ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” myspld ์ถœ๋ ฅ
echo ${arr[@]}          // $arr ๋ฐฐ์—ด์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
echo ${arr[*]}          // $arr ๋ฐฐ์—ด์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
echo ${#arr[@]}         // $arr ๋ฐฐ์—ด์˜ ๋ฐฐ์—ด ํฌ๊ธฐ ์ถœ๋ ฅ

filelist=( $(ls) )      // ํ•ด๋‹น ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŒŒ์ผ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ
echo ${filelist[*]}     // $filelist ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
  • ์‚ฌ์ „์— ์ •์˜๋œ ์ง€์—ญ ๋ณ€์ˆ˜
$$ : ์‰˜์˜ ํ”„๋กœ์„ธ์Šค ๋ฒˆํ˜ธ (pid)
$0 : ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„
$1~$9 : ๋ช…๋ น์ค„ ์ธ์ˆ˜
$* : ๋ชจ๋“  ๋ช…๋ น์ค„ ์ธ์ˆ˜ ๋ฆฌ์ŠคํŠธ
$# : ์ธ์ˆ˜์˜ ๊ฐœ์ˆ˜
$? : ์ตœ๊ทผ ์‹คํ–‰ํ•œ ๋ช…๋ น์–ด์˜ ์ข…๋ฃŒ ๊ฐ’
  • ์—ฐ์‚ฐ์ž
expr : ์ˆซ์ž ๊ณ„์‚ฐ
1. expr ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์—ญ ์ž‘์€ ๋”ฐ์˜ดํ‘œ (`) ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. ` ` ` ` ` ` ` 
2. ์—ฐ์‚ฐ์ž * ์™€ ๊ด„ํ˜ธ ( ) ์•ž์—๋Š” ์—ญ ์Šฌ๋ž˜์‹œ๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. \ \ \ \ \ \ (๋ถ™์—ฌ ์“ด๋‹ค.)
3. ์—ฐ์‚ฐ์ž์™€ ์ˆซ์ž, ๋ณ€์ˆ˜, ๊ธฐํ˜ธ ์‚ฌ์ด์—๋Š” space๋ฅผ ๋„ฃ์–ด์•ผํ•œ๋‹ค
  • ์กฐ๊ฑด๋ฌธ
    : ์กฐ๊ฑด ์ž‘์„ฑ์ด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ๋‹ฌ๋ฆฌ ๊ฐ€๋…์„ฑ์ด ํ˜„์ €ํžˆ ๋–จ์–ด์ง„๋‹ค. ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ฐธ์กฐํ•˜๋ฉด ๋จ!
  • ๊ธฐ๋ณธ if/else ๊ตฌ๋ฌธ
if [ ์กฐ๊ฑด ] 
then
     ๋ช…๋ น๋ฌธ      // ์ด ๋ช…๋ น๋ฌธ์—๋Š” ์ฐธ์ผ ๋•Œ
else  
     ๋ช…๋ น๋ฌธ      // ์ด ๋ช…๋ น๋ฌธ์—๋Š” ๊ฑฐ์ง“์ผ ๋•Œ
fi
  • ์กฐ๊ฑด
๋ฌธ์ž1 == ๋ฌธ์ž2    // ๋ฌธ์ž 1๊ณผ ๋ฌธ์ž 2๊ฐ€ ์ผ์น˜
๋ฌธ์ž1 !=  ๋ฌธ์ž2    // ๋ฌธ์ž 1๊ณผ ๋ฌธ์ž 2๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.
-z ๋ฌธ์ž               // ๋ฌธ์ž๊ฐ€ null ์ด๋ฉด ์ฐธ(๊ฐ’์ด ์—†์œผ๋ฉด true)
-n ๋ฌธ์ž               // ๋ฌธ์ž๊ฐ€ null ์ด ์•„๋‹ˆ๋ฉด ์ฐธ
  • ์ˆ˜์น˜ ๋น„๊ต
<, > ๋Š” if ์กฐ๊ฑด ์‹œ [[]]๋ฅผ ๋„ฃ๋Š” ๊ฒฝ์šฐ ์ •์ƒ ์ž‘๋™ํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

๊ฐ’1 -eq ๊ฐ’2       //๊ฐ’์ด ๊ฐ™์Œ(equal)
๊ฐ’1 -ne ๊ฐ’2       //๊ฐ’์ด ๊ฐ™์ง€ ์•Š์Œ(not equal)
๊ฐ’1 -lt ๊ฐ’2        //๊ฐ’1์ด ๊ฐ’2๋ณด๋‹ค ์ž‘์Œ(less than)
๊ฐ’1 -le ๊ฐ’2        //๊ฐ’1์ด ๊ฐ’2๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์Œ(less or equal)
๊ฐ’1 -gt ๊ฐ’2       //๊ฐ’1์ด ๊ฐ’2๋ณด๋‹ค ํผ(greater than)
๊ฐ’1 -ge ๊ฐ’2       //๊ฐ’1์ด ๊ฐ’2๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์Œ(greater or equal)
  • ํŒŒ์ผ ๊ฒ€์‚ฌ

-e ํŒŒ์ผ๋ช…   //ํŒŒ์ผ์ด ์กด์žฌํ•˜๋ฉด ์ฐธ
-d ํŒŒ์ผ๋ช…   //ํŒŒ์ผ์ด ๋””๋ ‰ํ† ๋ฆฌ๋ฉด ์ฐธ
-h ํŒŒ์ผ๋ช…   //ํŒŒ์ผ์ด ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ํŒŒ์ผ์ด๋ฉด ์ฐธ
-f ํŒŒ์ผ๋ช…   //ํŒŒ์ผ์ด ์ผ๋ฐ˜ํŒŒ์ผ์ด๋ฉด ์ฐธ
-r ํŒŒ์ผ๋ช…   //ํŒŒ์ผ์ด ์ฝ๊ธฐ ๊ฐ€๋Šฅํ•˜๋ฉด ์ฐธ
-s ํŒŒ์ผ๋ช…   //ํŒŒ์ผํฌ๊ธฐ๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด ์ฐธ
-u ํŒŒ์ผ๋ช…   //ํŒŒ์ผ์ด set-user-id๊ฐ€ ์„ค์ •๋˜๋ฉด ์ฐธ
-w ํŒŒ์ผ๋ช…   //ํŒŒ์ผ์ด ์“ฐ๊ธฐ ๊ฐ€๋Šฅ์ด๋ฉด ์ฐธ
-x ํŒŒ์ผ๋ช…   //ํŒŒ์ผ์ด ์‹คํ–‰ ๊ฐ€๋Šฅ์ด๋ฉด ์ฐธ
  • ping : ๋ฒ„์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ปดํ“จํ„ฐ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์„ ๋•Œ
    ์—ฐ๊ฒฐ๋œ ํŠน์ • ์ปดํ“จํ„ฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์ง€,๊บผ์ ธ ์žˆ๋Š”์ง€, ๋น„์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด

  • ๋ฐ˜๋ณต๋ฌธ for ๊ธฐ๋ณธ ๊ตฌ๋ฌธ

for ๋ณ€์ˆ˜ in ๋ณ€์ˆ˜๊ฐ’1 ๋ณ€์ˆ˜๊ฐ’2 ....
do 
    ๋ช…๋ น๋ฌธ
done
  • ๋ฐ˜๋ณต๋ฌธ while ๊ธฐ๋ณธ ๊ตฌ๋ฌธ
while [ ์กฐ๊ฑด๋ฌธ ]  
do 
     ๋ช…๋ น๋ฌธ 
done 

์ฐธ๊ณ  : https://probe29.tistory.com/47

profile
The people who are crazy enough to think they can change the world are the ones who do. -Steve Jobs-

0๊ฐœ์˜ ๋Œ“๊ธ€