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 control과 history 기능 (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/에 위치 홈디렉토리에 복사하여 초기화
'학교 수업 > UNIX' 카테고리의 다른 글
[UNIX] 중간고사 요점정리 (0) | 2021.12.22 |
---|