Chapter 05 쉘과 명령어 사용
1. 쉘 소개
1) 개념 : 쉘은 사용자와 운영체제 사이에 창구 역할을 하는 소프트웨어로 사용자로부터 명령어를 입력받아 이를 해석하여 실행시키는 명령어 처리기 역할을 수행한다.
2) 쉘의 종류
본 쉘 | /bin/sh |
콘 쉘 | /bin/ksh |
c 쉘 | /bin/csh |
bash 쉘 | /bin/bash |
tcsh 쉘 | /bin/tcsh |
- 로그인 쉘 : 로그인 하면 자동으로 실행되는 쉘(/etc/passwd파일과 함께 저장)
2. 쉘의 기능
- 명령어 처리 : 사용자가 입력한 명령어를 해석하고 해당하는 프로그램을 찾아 실행
- 시작파일 : 시작파일을 이용하여 사용자의 사용 환경을 설정할 수 있음
- 스크립트 : 자체 내에 프로그래밍 기능을 제공함
1) 쉘의 실행 절차
ⓐ 시작 파일을 읽고 실행함
ⓑ 프롬프트를 출력하고 사용자 명령을 기다림
ⓒ 사용자 명령을 실행함
2) 쉘의 환경 변수
- 환경변수 : 사용자 환경 설정을 위한 변수
$ 환경변수명=문자열 //환경변수가 문자열로 설정됨
3) 쉘의 시작 파일
- 각 쉘마다 쉘이 시작될 때 자동으로 실행되는 고유의 시작 파일을 가짐
- 시작파일은 주로 환경변수, 명령어 경로 등을 설정한다.
① 시스템 시작파일 : 주로 /etc 디렉터리에 있으며, 시스템 관리자가 관리한다.
- 본쉘은 /etc/profile 에 있음
② 사용자 시작파일 : 사용자의 홈 디렉터리에 있으며, 사용자가 관리한다.
- 본 쉘은 ~/.profile 에 있음(적용 : $. .profile)
3. 전면 처리와 후면 처리
1) 전면 처리와 후면 처리
- 전면 처리 : 명령어를 입력하면 명령어가 전면에서 실행되며, 명령어 실행이 끝날 때 까지 쉘이 기다림
- 후면 처리 : 명령어가 후면에서 실행됨 => 쉘이 명령어 실행이 끝나기를 기다리지 않는다.
$ 명령어 &
- 후면 작업 확인 : 후면에서 실행되고 있는 작업들을 리스트 한다.
$ jobs [%작업번호]
- 후면 작업을 전면 작업으로 전환
$ fg %작업번호
4. 입출력 재지정
1) 출력 재지정 : 명령어의 표준출력 내용을 모니터에 출력하는 대신에 파일에 저장할 수 있다.
- 파일이 존재하지 않으면 생성되고, 기존 파일이 있으면 덮어쓰기 된다.
$ 명령어 > 파일
$ who > names.txt
2) 출력 재지정을 이용한 파일 만들기
$ cat > 파일
표준입력 내용을 모두 파일에 저장한다. 파일이 없으면 새로 만든다.
$ cat 파일1 파일2 > 파일3
파일1과 파일2의 내용을 붙여서 새로운 파일3을 만들어준다.
3) 출력 추가
$ 명령어 >> 파일
$ date >> list.txt
date의 결과를 list파일 끝부분에 추가함
4) 입력 재지정 : 명령어를 실행할 때 표준 입력 대신에 파일에서 입력받는 것
$ 명령어 < 파일
$ wc < list1.txt
wc는 list1.txt파일로부터 표준입력을 받아 단어수를 출력한다.
5) 문서 내 입력
- 명령어의 표준입력을 키보드 대신 단어와 단어 사이의 입력으로 받는다.
$ 명령어 << 단어
...
단어
6) 오류 재지정
- 표준 출력 : 정상적인 실행의 출력
- 표준 오류 : 오류 메시지 출력
- 표준 오류 재지정 : 명령어의 표준 오류 내용을 모니터에 출력하는 대신 파일에 저장
$ 명령어 2> 파일
7) 파이프
- 파이프를 이용하면 한 명령어의 표준 출력을 다른 명령어의 표준 입력으로 받을 수 있음
$ 명령어1 | 명령어2
// 명령어1의 표준출력이 파이프를 통해 명령어2의 표준 입력이 된다.
5. 여러 개 명령어 사용하기
1) 명령어 열
$ 명령어1;...;명령어n
나열된 명령어를 순차적으로 실행함
2) 명령어 그룹
$ (명령어1;...;명령어n)
나열된 명령어들을 하나의 그룹으로 묶어 순차적으로 실행
3) 조건 명령어 열
$ 명령어1 && 명령어2
명령어1이 성공적으로 실행되면 명령어 2가 실행됨. 실패하면 실행안됨
$ 명령어1 || 명령어2
명령어1이 실패하면 명령어 2가 실행, 그렇지 않으면 명령어2 실행안됨
6. 파일 이름 대치와 명령어 대치
1) 파일 이름 대치
대표 문자 | 의미 |
* | 빈 문자열을 포함하여 임의의 문자열을 의미 |
? | 임의의 한 문자를 나타냄 |
[..] | 대괄호 사이의 문자 중 하나를 나타내면 부분범위 가능 |
2) 명령어 대치
- 어떤 명령어를 실행할 때 다른 명령어의 실행 결과를 이용할 수 있음
- 역따옴표(`)로 명령어를 묶는다.
$ echo 현재 시간은 `date`
현재 시간은 2021.10.15 (금) 16:35:30 KST
3) 따옴표 사용
- 따옴표를 사용하면 대치기능을 제한할 수 있다.
$ ECHO "3*4=12"
3 * 4 = 12
- 작은 따옴표는 대표문다 대치, 변수 대치, 명령어 대치를 모두 제한한다.
- 큰 따옴표는 대표문자 대치만 제한한다.
- 따옴표가 중첩되면 바깥에 있는 따옴표가 효력을 갖는다.
< 유닉스 프로그래밍 >
1. 시스템 호출 : 응용프로그램을 작성하는데 유닉스 커널이 제공하는 서비스에 대한 프로그래밍 인터페이스
=> 유닉스에서 제공하는 시스템 호출을 이용해 프로그램을 작성하는 것이 유닉스 프로그래밍
- 시스템 호출 : 커널의 해당 서비스 모듈을 직접 호출하여 작업하고 결과를 리턴
- 라이브러리 함수 : 일반적으로 커널 모듈을 직접 호출 안함
- 오류 처리 방법
- 시스템 호출 : 성공하면 0 리턴, 실패하면 -1을 리턴 , 전역변수 errno에 오류코드 저장
- 라이브러리 함수 : 오류가 발생하면 null 리턴, int형이면 -1리턴 errno에 오류코드 저장
< 연습문제 >
5.1
④ 프로세스 생성
5.2
② chsh
5.3
쉘은 사용자와 (운영체제) 사이에 ~~ 해석하여 실행시키는 (명령어 해석기) 역할을 수행
5.4
출력 재지정은 (표준출력) 내용을 파일에 저장하고 입력 재지정은 (표준 입력)을 파일에서 받는다.
5.5
파이프를 이용하면 한 명령어의 (표준출력)을 다른 명령어의 (표준입력)으로 바로 받을 수 있다.
5.6
/etc/profile
~./bash_profile
~/.bashrc
/etc/bashrc
사용자 환경(환경변수, 명령어 경로 등)을 설정하는 역할을 한다
5.7
출력 재지정은 표준 출력 내용을 파일에 저장하는 것이고, 오류 재지정은 오류의 결과를 파일에 저장하는 것이다.
5.8
출력 재지정은 표준 출력내용을 파일에 저장하는 것이고, 파이프는 명령어의 출력결과를 다른 명령어의 표ㅜㄴ 입력으로 바로 받을 수 있다.
5.9
명령어의 전면처리는 명령어를 입력하면 명령어가 전면에서 실행되며, 명령어 실행이 끝날 때 까지 쉘이 기다리지만 후면 처리는 명령어가 후면에서 실행되기 때문에 쉘이 명령어 실행이 끝나기를 기다리지 않는다.
5.10
1) 명령어 열로 나열된 명령어들을 순차적으로 실행한다.
2) 명령어 그룹으로 나열된 명령어들을 하나의 그룹으로 묶어 순차적으로 실행한다.
3) 명령어 1의 표준출력이 파이프를 통해 명령어 2의 표준 입력으로 들어간다.
4) 명령어 1이 성공적으로 실행되면 명령어 2는 실행되지 않는다(반대는 반대)
4) 명령어 1이 성공적으로 실행되면 명령어 2가 실행된다.
5.11
$ ls *.pdf | wc -l
5.12
환경변수 | 역할 |
TERM | 사용하는 터미널 타입 설정 |
SHELL | 사용하고 있는 쉘 |
USER | 사용자 이름 |
HOME | 홈 디렉터리 위치 |
PATH | 쉘이 입력된 명령어를 찾기 위한 디렉터리 경로 저장 |
'Major > Linux' 카테고리의 다른 글
[리눅스 시스템 원리와 실제] 13장 개념/연습문제 (0) | 2021.12.02 |
---|---|
[리눅스 시스템 원리와 실제] 6장 개념/연습문제 (1) | 2021.10.15 |
[리눅스 시스템 원리와 실제] 4장 개념/연습문제 (0) | 2021.10.14 |
[리눅스 시스템 원리와 실제] 3장 개념/연습문제 (0) | 2021.10.13 |
[리눅스 시스템 원리와 실제] 1장 개념/연습문제 (0) | 2021.10.09 |