RangA 2023. 5. 31. 07:48

01. 운영체제의 개념

03. 운영체제의 기본 명령어

1) UNIX/Linux 계열 운영체제의 기본 명령어

1. 쉘(Shell) 주요 기능

  • Shell은 컴퓨터 내부를 관리하는 커널과 사용자 간을 연결하는 Command 창
  • 세션별 변수를 설정, 운영체제를 사용자가 원하는 상태로 설정하도록 지원함
  • 사용자 요청에 기반을 둔 명령어를 작성함
  • 백그라운드 처리, 서브 Shell을 생성함
  • 일련의 명령어를 묶어 처리하는 스크립트 기능 지원 등이 있음
  • UNIX/Linux는 최상위 유저를 CLI 환경에서 #으로, 일반 유저를 $로 표시함
  • 명령어는 파일 및 디렉터리 관리, 유저 관리, 권한 관리, 프로세스 관리, 통신 관련 등으로 구분될 수 있음

2. UNIX의 주요 명령어

  • 프로세스 관련 명령어
  명령어     역할  
  fork     시스템 콜 중에서 새로운 프로세스를 생성, 복제하는 기능  
  exit     프로세스를 끝마침  
  getpid     프로세스명, 그룹명, 부프로세스(getppid)의 정보를 얻음  
  exec     새로운 프로그램을 수행시키기 위한 시스템 호출  
  sleep n     n초 동안 대기함  
  ps     현재 실행 중인 작업 프로세스를 출력함  
  who     현재 시스템에 접속한 사용자를 출력함  
  &     백그라운드 작업을 지시함  
  |     결과 값을 다음 명령으로 연결함  

  • 파일 관련 명령어
  명령어     역할  
  chmod     파일의 속성 및 Protection을 변경함  
  grep     특정 문자열을 찾음  
  find     특정 파일을 찾음  
  fsck     파일 시스템을 일관성 있게 검사하고 대화식으로 복구하는 명령  
  mkfs     파일 시스템을 구성함  
  >     앞의 명령 결과를 파일로 저장함  
  mount     새로운 파일 시스템을 서브 디렉터리에 연결할 때 사용함  
  ls     파일의 목록을 보여줌  
  cat     파일의 내용을 화면에 출력함  
  cp     파일을 복사함  
  ln     파일이나 디렉터리를 링크함  
  mkdir(md)     디렉터리를 생성함  
  pwd     현재 디렉터리를 출력함  
  uname     유닉스/리눅스 버전을 확인함  
  chdir(cd)     현재 디렉터리를 변경함  
  rmdir     디렉터리를 제거함  

2) UNIX/Linux 계열 운영체제의 쉘 스크립트(Shell Scripts)

1. 쉘 스크립트

  • 운영체제의 제어 프로그램을 통제할 수 있는 인터프리터 방식의 프로그램
  • 쉘 스크립트를 사용하면 여러 제어 명령어를 자동으로 연속 실행시킬 수 있음
  • 쉘 스크립트는 일반 사용자보다는 시스템 관리자, 루트 권한 사용자에 의해 UNIX/Linux 운영체제의 다양한 제어 방식이나 권한은 통제하는 데 사용됨

2. sh(Bourne Shell)

  • sh 파일은 루트 사용자가 실행할 수 있는 모든 쉘 스크립트를 수행할 수 있도록 하는 파일(파일 위치는 /bin/sh 또는 /bin/bash)
  • sh는 가장 기본이 되는 UNIX 쉘로 다양한 쉘 스크립트를 해석하여 실행해주는 명령어
  • 공격자의 집중 공격 대상이 되는 파일이며, 이 파일이 공격자에 의해 실행되면 공격자는 운영 체제의 시스템을 자신의 것으로 만들 수 있음
  • bash는 Bourne-again shell을 줄여서 사용하는 용어로, sh가 새롭게 다시 태어났다는 말로 sh의 업그레이드된 버전이라고 볼 수 있음
  • bash 쉘 스크립트는 C언어를 기반으로 하고 있기 때문에 C언어의 문법과 유사함

3. 제어문

  • 관계 연산자
  연산자     C언어 연산자     의미  
  -eq     ==     equal  
  -ne     !=     not equal  
  -ge     >=     greater or equal  
  -gt     >     greater  
  -le     <=     little or equal  
  -lt     <     little  

  • 선택문 if
// 문법
if [조건]; then
    명령문
else
    명령문
fi

---

// 예시
read a
if [${a} -ge 90]; then
    echo "합격"
else
    echo "불합격"

  • 다중 if문
// 문법
if [조건]; then
    명령문
elif [조건]; then
    명령문
elif [조건]; then
    명령문
else
fi

---

// 예시
read a
if [${a} -ge 90]; then
    echo "A 학점"
elif [${a} -ge 80]; then
    echo "B 학점"
else
    echo "C 학점"
fi

  • 다중 선택문 CASE
// 문법
case [문자열] in
    경우 1) 명령문;;
    경우 2) 명령문;;
    경우 3) 명령문;;
    *) 명령문;;
esac

---

// 예시
case $a in
    A) echo "A 기억";;
    B) echo "B 기억";;
    C) echo "C 기억";;
    *) echo "A B C 외 기억";;
esac

  • for 반복문
// 문법
for 변수 in [옵션]
do
    명령문
done

---

// 예시
for a in "seq 1 5"
do
    echo $a
done

  • while 반복문
// 문법
while [조건]
do
    명령문
done

---

// 예시
a = 1
while [ $a -lt 5 ]
do
    echo $a
    a = $(($a-1))
done

  • until 반복문
// 문법
until [조건]
do
    명령문
done

---

// 예시
a = 5
until [ $a -eq 0]
do
    echo $a
    a = $(($a-1))
done

4. 환경 설정

  • 환경 설정 변수
  변수     설명  
  $PATH     실행 파일을 찾을 경로  
  $HOME     현재 로그인한 사용자의 홈 디렉터리 경로  
  $LANG     쉘에서 사용하는 언어  
  $SHELL     로그인 시 쉘의 실행 파일 경로  
  $HISTFILE     히스토리 파일 경로  
  $TMOUT     세션 유지 시간  

  • 환경 설정 명령
  변수     명령  
  env     전역 변수 설정 및 출력(조회)  
  set     사용자 환경 변수 설정  
  export     환경 변수를 설정  
  echo     환경 변수들을 출력(조회)  
  setenv     사용자 환경 변수 출력(조회)  
  printenv     현재 설정되어 있는 환경 변수들을 출력(조회)  
  unset     환경 변수를 해제  

  • 쉘 스크립트 예시
until who | grep wow
do
sleep 5
done

5, export(환경 설정 변수)

  • export가 매개 변수 없이 쓰일 경우 현재 설정된 환경 변수들을 확인할 수 있음

  • 사용자가 생성하는 변수는 export 명령어로 표시하지 않는 한 현재 쉘에 국한됨

  • 변수를 export시키면 전역 변수처럼 되어 끝까지 기억됨


  • 환경 변수 임시 적용

$ export 환경_변수명=값

  • 환경 변수 영구 적용 파일

    • /etc/bash.bashrc
  • 환경 변수 해제

$ unset 환경_변수명