Shell

진주찬·2023년 6월 13일
0

Linux

목록 보기
9/11

리눅스 프로그램의 계층
User <-> Shell <-> Kernel

Kernel 및 User Program

  • 커널 : 컴퓨터 시스템의 모든 리소스 초기화 및 제어
    (프로세스 관리, 메모리 관리, 파일 관리, 디바이스 관리)
  • 유저 프로그램 : 일반 사용자가 일반적으로 사용하는 모든 프로그램
    머신의 리소스를 사용

: 시스템 커널 동작과 유저 프로그램 사이의 인터페이스를 제공
커맨드 해독기 또는 그래픽 유저 인터페이스이다.
기본적으로 Unix/Linux 쉘은 명령어 라인 인터페이스이다. (CLIs)

Bash Shell

: 리눅스에서 가장 많이 사용되는 명령어

  • 프롬프트를 표시하고 다음 입력할 명령어를 기다린다.
  • 대체 쉘 -> tcsh

쉘 커맨드

  • 첫번째 단어는 실행할 "명령어" (일부 명령어는 셸에 내장)
  • 그 후속 단어는 다음에 대한 "옵션 또는 인수"이다.

Shell은 프로그램이다.
새로운 셸을 호출하면 새로운 프로세스가 생성된다(자식 프로세스)
이전 셸을 새로운 셸의 부모 프로세스가 된다. -> PPID

커맨드 라인 인수 : 커맨드 이름 뒤의 단어
일반적으로 "-" 또는 "--"로 시작하는 옵션 : 작동하는 파일이름, 디렉토리

  • 옵션 구문
    "-"로 시작하는 단일 문자 옵션
    "--"로 시작하는 전체 단어 또는 구문은 덜 모호한 옵션
    일부 옵션은 인수(=다음 작업)를 취한다.

Redirection

  • Standard I/O
    -stdin : 표준 입력(키보드), 0으로 설명
    -stdout : 표준 출력(콘솔), 1로 설명
    -stderr : 에러 출력(콘솔), 2로 설명
  • Redirection 기호
    -"<" : "a<b"는 b의 내용을 a의 표준 입력으로 읽는 것 의미
    -">" : "a>b"는 a의 결과를 표준 출력으로 b에 쓰는 것을 의미
    * b가 비어있지 않으면 내용이 잘리기 때문에 ">>"을 통해 결과를 추가할 수 있다.

";" : 명령을 순차적으로 실행
"&" : 명령을 동시에 실행

Pipe

: 직렬에서 여러개의 명령어를 사용할 때 이전 명령의 결과를 현재 명령의 표준 입력으로 순차적으로 처리

쉘 변수

: 임시 문자열 값을 저장한다.
ex) files="notes.text report.text"
"="앞 뒤에 공백이 없어야한다.
달러 마크($)와 함께 쉘 변수 값을 사용한다.

환경 변수 : 특별한 유형의 쉘 변수는 쉘에서 실행되는 프로그램에 전달 됨
"env" 명령어는 환경 변수를 나열한다.

"PS1"의 쉘 변수 설정

쉘 프롬프트를 변경하는 것은 현재 쉘에서만 적용되고 새 쉘을 시작하면 재설정된다.

영구적으로 설정하기 위해서는 구성파일을 사용한다.

구성 파일

  • "/etc/profile" : 전반적인 시스템 환경
  • "~/.bash_profile" 또는 "~/.bash_login" 또는 "~/.profile" : 파일 중 먼저 찾은 파일을 호출한다.
  • 로그인 중에 bash 시작하기 위해서는 "~/.bashrc" 사용
  • 로그아웃의 경우는 "~/.bash_logout"을 사용

".bashrc"를 vi를 이용하여 편집하고 명령을 작성할 수 있다. 그러나 현재 쉘에 바로 적용되지는 않기 때문에 "source.vashrc"를 통해 현재 쉘에 변경 사항을 적용 시킬 수 있다.

alias : 다른 명령의 별칭 만들기
ex) alias lf=“ls –F”
alias ls=“ls –l”
alias rm=“rm –i”
alias mv=“mv –i”
alias cp=“cp –i”
unalias : 별칭 삭제

쉘 프로그래밍

: 실행가능한 쉘 파일을 "쉘 스크립트 파일" 이라고 한다.

  • 생성방법 : 첫번째 줄에 "#!/bin/bash"라고 명시하고 변수 및 명령을 나열한다.

  • 실행방법 : chmod를 사용하여 파일에 실행가능 권한을 부여한 후 실행한다.

  • 변수 : 스크립트 파일은 변수를 가질 수 있다.
    -쉘 변수와 동일, 유형이 없다, 문자열만 가능, 변수 이름은 숫자나 특수 문자로 시작할 수 없다, "$"로 다양한 옵션으로 확장이 가능하다.

변수에 대한 따옴표
'문자열' : 문자열 의미
"문자열" : 문자열이지만 ,, 는동작한다.문자열:명령어,다른방법>,`,\ 는 동작한다. `문자열` : 명령어, 다른 방법 ->명령어

연산자 : +,-,*,/,%를 수행, 정수 기반, 연산자 앞뒤에 공백이 필요하다.


범위에 대한 표현 : {시작..끝}, {시작..끝..증가}

while문 : 조건이 참인동안 명령 수행 <-> until문 : 조건이 거짓인 동안 명령 수행

  • select 문

    쉘은 주어진 변수들 중 선택하고, 선택한 변수로 명령이 수행된다.
    break 문으로 select문을 종료할 수 있다.

  • function
    : 사용자는 명시적 기능을 정의할 수 있다.
    함수(){
    상태
    반환 값
    }

  • exec 명령
    exec fd<file : 파일 설명자 fd로 입력 파일을 열기
    exec fd>file : 파일 설명자 fd로 출력 파일 열기

0개의 댓글