본문 바로가기
개인 공부/Linux (CentOS 리눅스)

CentOS 리눅스 : 셸 사용법 (4장)

by 희조당 2022. 5. 3.
728x90

■ 셸의 기능과 종류

 셸이란? 사용자와 리눅스 커널 사이에서 중간자 역할을 수행하는 것.

 

 - 셸의 기능

 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) 명령 실행

댓글