■ 셸의 기능과 종류
셸이란? 사용자와 리눅스 커널 사이에서 중간자 역할을 수행하는 것.
- 셸의 기능
1. 명령어 해석기 : 가장 기본적인 기능, 사용자와 커널 사이에서 명령을 해석하고 전달.
2. 프로그래밍 : 자체에 프로그래밍 기능이 내장되어있다. 만들어진 셸 프로그램은 셸 스크립트.
3. 사용자 환경 설정 : 사용자 환경 설정할 수 있도록 초기화 파일 기능을 제공.
- 셸의 종류
1. 본셸(sh) : 최초의 셸, 단순하고 빠르다. 다양한 기능을 제공하지 못해 다른 셸들이 등장.
1. 본셸(sh) : 콘셸이나 베시셸로 심볼릭 링크가 되어있다.
2. C셸(csh) : 본셸의 기능을 확장. 구문 형식이 C 언어와 같아서 C셸이라고 부른다.
3. 콘셸(ksb) : 본셸의 호환성을 유지하고 C셸의 특징도 모두 제공하면서 처리 속도가 빠르다.
4. 배시셸(bash) : 본셸의 호환성을 유지하면서 C셸과 콘셸의 편리한 기능을 포함한다. 리눅스의 기본 셸
■ 셸 기본 사용법
- 셸 지정 및 변경
셸 종류 확인하기 → $ 프롬프트 : 본셸, 콘셸, 배시셸 / % 프롬프트 : C셸
명령어로 확인하기 → grep user1 /etc/passwd
chsh [옵션] [사용자명] : 사용자 로그인 셸 바꾸기
-s shell : 지정한 셸로 로그인 셸 바꾸기 (절대경로)
-l : /etc/shells/ 파일에 지정된 셸을 출력
- 셸 내장 명령
셸은 자체적으로 내장 명령을 가지고 있다! (ex. cd)
- 출력 명령
echo [-n] [문자열] : 화면에 한 줄의 문자열 출력
-n : 줄 바꿈을 하지 않는다.
printf [형식] [인수] : 자료를 형식화하여 화면에 출력
-C 언어의 printf 함수 형식
- 특수문자 사용 방법
* : 임의의 문자열을 나타냄. 0개 이상의 문자 (ex. ls * : 모든 파일과 서브 디렉터리를 나열)
?, [ ] : 하나의 문자를 나타냄. []은 범위를 지정할 수 있다. (ex. ls t?.txt, ls [0-9]*)
~, - : 디렉터리를 나타냄. ~은 홈 디렉터리, -은 직전의 디렉터리 (ex. cp *.txt ~/tmp, cd -)
; , | : 명령을 연결. ;은 왼쪽부터 실행, |은 왼쪽 명령의 결과를 오른쪽 명령의 입력으로 전달
' ', " " : 문자열로 만든다. ' '은 모든 특수문자 기능을, " "은 $, `, \ 을 제외한 특수문자 기능을 없앤다.
` : ` `로 감싼 문자열을 명령으로 해석.
\ : 다음에 오는 특수문자의 기능을 없앤다.
>, <. ≫ : 입출력의 방향을 바꿈.
■ 입출력 방향 변경
- 표준 입출력 장치
리눅스는 장치도 파일로 관리 → 필요한 파일에 일련번호를 붙여서 관리 : 파일 디스크럽터
표준 I/O 장치도 파일 디스크럽터가 붙어있다!
여기서 리다이렉션이란? 표준 I/O 장치를 파일로 바꾸는 것
- 출력 리다이렉션
> : 파일 리다이렉션(덮어쓰기)
- [명령] > [파일] (파일이 없다면 생성)
>> : 파일에 내용을 추가
- [명령] >> [파일] (파일이 없다면 생성)
- 오류 리다이렉션
2> : 표준 오류 메시지를 파일에 저장
- [명령] 2> [파일]
한 파일에 표준 출력과 표준 오류를 리다이렉션 할 때는 [명령] > [명령] 2>&1 의 형식을 사용한다.
- 입력 리다이렉션
< : 표준 입력을 바꾼다.
- [명령] < [파일]
■ 배시셸 환경 설정
- 셸 변수와 환경 변수
셸 변수 : 현재 셸에서만 사용 가능 (지역 변수)
환경 변수 : 서브 셸까지도 사용 가능 (전역 변수)
※ 주요 환경 변수
환경변수 | 의미 | 환경변수 | 의미 |
HISTSIZE | 히스토리 저장 크기 | PATH | 명령 탐색 경로 |
HOME | user 홈의 절대 경로 | PWD | 작업 디렉터리의 절대 경로 |
LANG | 사용 언어 | SHELL | 로그인 셸 |
LOGNAME | 사용자 계정 이름 |
- 셸 변수와 환경 변수 출력
set, env : 전체 변수 출력
echo : 특정 변수 출력 (echo $변수)
- 셸 변수와 환경 변수 설정
[변수]=[문자열] : 셸 변수 정의 (변수명과 문자열 사이 공백 X)
export [옵션] [셀 변수] : 셸 변수를 환경 변수로 변경
-n : 환경 변수를 셸 변수로
- 변수 해제
unset [변수] : 지정한 변수를 해제
■ 앨리어스와 히스토리
- 앨리어스
별명을 뜻하는 앨리어스는 기존 명령을 대신해서 별칭을 붙이는 것! 앨리어스에 인자를 전달하는 기능은 배시셸에 없다
alias (이름='명령') : 설정된 별칭 목록 출력 / 앨리어스를 생성 unalias 앨리어스 : 앨리어스 삭제
- 히스토리
history : 히스토리(명령 입력 기록)를 출력
명령 재실행 : 특수문자 !를 사용
- !! : 직전의 명령 재실행
- !번호 : 히스토리에서 번호의 명령 재실행
- !문자열 : 히스토리에서 문자열로 시작하는 마지막 명령 재실행
■ 환경 설정 파일
설정한 앨리어스, 프롬프트 등은 로그아웃하면 사라지므로 로그인할 때마다 자동으로 실행되는 환경 설정 파일이 필요!
사용자 환경을 초기화하므로 초기화 파일이라고도 한다.
- 시스템 환경 설정 파일
/etc/profile : 시스템 공통 적용되는 환경 변수 설정 (ex. PATH, LOGNAME 등)
/etc/bashsrc : 시스템 공통 적용되는 함수와 앨리어스 그리고 기본 프롬프트, 서브 셸 명령 경로, 기본 접근 권한 설정
/etc/profile.d/*.sh : 언어나 명령 별로 필요한 환경 설정
- 사용자 환경 설정 파일
~/.bash_profile : .bashrc 파일이 있으면 실행. 경로 추가 등 사용자가 정의하는 환경 설정 파일
~/.bashrc : /etc/bashrc 파일이 있으면 실행. 사용자 정의 앨리어스나 함수 등을 설정
~/.bash_logout : 로그아웃 시 실행할 필요가 있는 함수 등을 설정
사용자 환경 설정 파일을 수정했을 때 적용하려면 로그아웃 후 로그인하거나 . .bashrc (source .bashrc) 명령 실행
'개인 공부 > Linux (CentOS 리눅스)' 카테고리의 다른 글
CentOS 리눅스 : 파일 접근 권한 관리 (5장) (0) | 2022.05.04 |
---|---|
CentOS 리눅스 : 연습문제 해답 (4장) (2) | 2022.05.03 |
CentOS 리눅스 : 연습문제 해답 (3장) (0) | 2022.05.02 |
CentOS 리눅스 : 문서 편집 (3장) (0) | 2022.05.02 |
CentOS 리눅스 : 연습문제 해답 (2장) (0) | 2022.04.28 |
댓글