본문 바로가기
학교 수업/UNIX

[UNIX] SHELL

by five-sun 2021. 12. 22.
728x90

SHELL이란? 일종의 프로그램

명령어 해석기 역할 1.프롬프트($)출력 2. 명령어 입력 대기 3. 사용자 명령어 입력 4. 명령어 실행

 

SHELL의 종류

Bourne Shell - sh; script로 많이 사용 Korn Shell ksh

C Shell - csh, tcsh ; 사용자로 환경으로 인기 Bourne Again Shell bash

사용자는 SHELL을 통해서 명령을 실행시킴

sh - Bourne shell (Steve Bourne) (프롬프트 문자 : $)

가장 오래된 shell. 대부분의 UNIX 시스템에서 이용 가능.

shell programming 또는 command file에 많이 이용.

csh - C shell (Berkeley에서 Bill Joy) (프롬프트 문자 : %)

대화형 사용으로 가장 인기 있는 shell. job controlhistory 기능 (Bourne shell에는 없다).

shell programming에는 문제 있다고 알려져 있음.

ksh - Korn shell (David Korn) (프롬프트 문자 : $)

Bourne shell 과 호환. C shell 기능들 수용. history editing 기능 (C shell에는 없다).

bash - “Bourne-again” shell (Free Software Foundation) (프롬프트 문자 : $)

Korn shell과 유사. 많은 C shell 기능들 포함. history editing, 내장 help 명령

tcsh - C shell 확장 버전 (프롬프트 문자 : $)

original C shell처럼 동작. 더 많은 기능들 포함.

 

메타문자

[!]는 나열된 문자열을 제외한 문자와 매치(!대신 ^사용 가능)

Escaping 백슬래쉬 \문자를 메타문자 앞에 붙인다.

Quoting(인용부호 사용) 위에 참고.

 

표준 입출력

>표준 출력을 파일로 대체 < 표준 입력을 파일로 대체

>> 표준 출력을 파일로 대체하되 파일이 이미 존재하면 뒤에 추가

표준 입출력이 3개의 숫자로 표현됨 (0-표준입력, 1-표준출력, 2-표준에러)

(1>&2 표준출력을 표준에러가 가는곳으로 보냄) (2>&1 표준에러를 표준출력이 가는곳으로 보냄)

 

C언어의 입출력

vi 편집기를 통해 c 프로그램 소스 입력

gcc o add(실행시킬 때 사용할 이름) add.c(컴파일할 소스 파일) 로 컴파일

./add(실행시킬 때 사용할 이름)

 

C언어의 파일입출력

*fpin*fpout을 선언

fpin = fopen(“input.txt”, “r”); (cat > input.txt 명령을 통해 내용 지정)

fpout = fopen(“output.txt”, “w”); (자동으로 output.txt.가 생성되고 저장됨)

fscanf(fpin, “%d %d”, &a, &b);

fprintf(fpout, “%d\n”, a + b);

 

C언어의 표준입출력

표준입력 stdin, 표준출력 stdout, 표준에러 stderr를 사용한다.

리디렉션을 이용하여 실행시킬 수 있다.

 

프로세스란? 실행중인 프로그램

pipe : 한프로그램의 출력을 다른 프로그램의 입력으로 연결하는 방법

사용 예시 : who | sort, who | wc l, ls | wc l, who | grep *

tee : 입력을 두 개로 복사하여 하나는 화면 출력 하나는 파일 정장하는 명령

예시 : who | tee user.txt

 

명령 수행결과 치환

명령을 수행한 결과를 그대로 삽입할 수 있는 유용한 기능

역 따옴표 사용 (` `), * $( )도 동일한 기능.

예시 : $ echo Today is `date +%m/%d` > Today is 04/05

$ echo Today is $(date +%m/%d) > Today is 04/05

 

alias [별칭 = 명령] unalias 별칭

명령어 대신 다른이름을 정의하여 사용

현재 설정된 값들을 보려면 alias

앨리어스 설정 : alias 별칭=“명령

앨리어스 해제 : unalias 별칭

 

Bash 변수

변수 : 시스템이나 사용자에 의해 사용되는 정보를 저장하기 위한 저장소,

쉘 변수 관례적으로 대문자 사용

쉘변수 : 현재의 쉘에서만 사용 가능한 변수 (확인 명령 : set)

환경 변수 : 모든 쉘에서 사용 가능한 변수 (확인 명령 : env)

변수 정의 : 쉘 변수 변수=(띄어쓰기x)

환경 변수 변수=값 후 export 변수명을 통해 환경 변수 선언 or export변수=

변수 값 확인 : set | grep 변수명 또는 echo $변수명

변수 정의 해제 : unset 변수명

 

미리 지정된 변수들도 존재

- HOME 홈 디렉토리 경로명 SHELL - shell 종류 (경로명) - LOGNAME 사용자의 login-id

- PATH - 실행 파일들의 경로명들

(/bin/ls 대신 ls 만으로도 실행 가능한 이유? path 변수에 /bin 이 들어 있음. )

- HISTSIZE 과거에 사용했던 명령들을 몇개까지 저장

ignoreeof Ctrl-D 문자를 쳤을 때 logout 여부

- PS1 - 프롬프트 문자

% SAVE=$PS1 (현재 프롬프트 문자를 변수 SAVE 에 저장)

% PS1="$ ” (프롬프트 문자를 $ )

$ PS1=$SAVE (프롬프트 문자를 이전 것으로 복원)

 

명령구분 분석시 우선순위가 존재한다.

예시 : shell| ;보다 우선적으로 해석함. ( )를 사용하여 해결.

 

특수문자의 해석

특수문자를 명령어의 인자로 사용하고 싶다면 “ ” 사용하기

${변수}

{ }를 통해 쉘변수의 범위를 명확하게 한다.

 

히스토리

history n : 명령을 기억

fc 옵션 : 사용자가 입력한 명령을 기록, 재사용할 수 있도록 하는 명령

-l -x y : 히스토리 목록에서 지정한 행이나 범위의 명령 출력

-r : 히스토리 목록을 역순으로 출력

-n : 히스토리에서 행번호를 제외하고 출력

-e : 히스토리 목록을 편집기로 읽어들임

-s : 최근 명령을 재실행

명령재실행

!! : 마지막 명령 실해

!n : n번째 명령 실행

!-n : 현재 명령에서 뒤로 n번째 명령

!문자열 : 주어진 문자열로 시작하는 명령중 마지막 명령

!명령의일부분:p : 명령을 실행하지 않고 화면에 출력

!?문자열? : 주어진 문자열을 포함하는 명령 중 마지막 명령 실행

^문자열1^문자열2 : 마지막 명령의 문자열을 대체하여 다시 실행

 

환경설정 파일

초기화 파일 : 로그인 할 때 실행

시스템 초기화 파일 : /etc에서 위치 (/etc/profile, /etc/bash.bashrc)

사용자 초기화 파일 : 홈디렉토리에 위치($HOME/.profile. $HOME/.bashrc)(프롬프트,경로,앨리어스)

 

환경 설정 파일 실행

vi를 통해 초기화파일을 수정한다.

source ~/.profile or . ~/.profile (logout하지 않고 수정된 활경 설정 파일 적용하려면 수행하는 명령)

 

원본 사용자 초기화 파일은 /etc/skel/에 위치 홈디렉토리에 복사하여 초기화

 

 

 
728x90

'학교 수업 > UNIX' 카테고리의 다른 글

[UNIX] 중간고사 요점정리  (0) 2021.12.22