쉘
쉘(shell)
사용자와 운영체제 사이의 창구 역할을 하는 소프트웨어
명령어 처리기(command processor) : 사용자로부터 명령어를 입력받아 이를 처리
쉘의 종류 | 쉘 실행파일 | 설명 |
본 쉘 (Bourne shell) | /bin/sh | - 벨 연구소의 스트븐 본에 의해 개발 - 유닉스에서의 기본 쉘 |
콘 쉘 (Korn shell) | /bin/ksh | - 1980년대 벨 연구소에서 본 쉘을 확장하여 만듬 |
Bash (Bourne again shell) | /bin/bash | - GNU에서 본 쉘을 확장하여 개발한 쉘 - 리눅스 및 맥 OS X에서 기본 쉘로 사용되며 널리 보급 - Bash 명령어의 구문은 본 쉘 명령어 구문을 확장 |
C 쉘 (C shell) | /bin/csh | - 빌 조이가 개발 - 쉘의 핵심 기능 위 c언어의 특징을 많이 포함 - BSD 계열의 유닉스에서 많이 사용 |
tcsh | /bin/tcsh | - c 쉘을 개선 |
로그인 쉘 (Login shell)
- 로그인하면 자동으로 실행되는 쉘. 보통 시스템관리자가 계정을 만들 때 로그인 쉘 지정
쉘의 기능
쉘의 기능
- 명령어 처리
사용자가 입력한 명령을 해석하고 적절한 프로그램 실행
- 시작 파일
로그인할 때 실행되어 사용자별로 맞춤형 사용환경 설정
- 스크립트
쉘 자체 내의 프로그래밍 기능
실행절차
쉘의 환경 변수
$ 환경변수명 = 문자열
환경변수의 값을 문자열로 설정
$ env
환경변수 보기
$ MESSAGE=hello
$ export MESSAGE
사용자 정의 환경 변수
쉘의 시작파일 (start-up file)
시작 파일
쉘마다 시작될 때 자동으로 실행되는 고유의 시작 파일
주로 사용자 환경을 설정하는 역할을 하며 환경설정을 위해 환경변수에 적절한 값 설정
시스템 시작 파일
시스템의 모든 사용자에게 적용되는 공통적인 설정
환경변수 설정, 명령어 경로 설정, 환영 메시지 출력 등
사용자 시작 파일
사용자 홈 디렉터리에 있으며 각 사용자에게 적용되는 설정
환경변수 설정, 프롬프트 설정, 명령어 경로 설정, 명령어 이명 설정 등
쉘의 종류 | 시작파일 종류 | 시작파일 이름 | 실행시기 |
본 쉘 | 시스템 시작파일 | /etc/profile | 로그인 |
사용자 시작파일 | ~/.profile | 로그인 | |
Bash 쉘 | 시스템 시작파일 | /etc/profile | 로그인 |
사용자 시작파일 | ~/.bash_profile | 로그인 | |
사용자 시작파일 | ~/.bashrc | 로그인 | |
시스템 시작파일 | /etc/bashrc | 로그인 | |
c 쉘 | 시스템 시작파일 | /etc/.login | 로그인 |
사용자 시작파일 | ~/.login | 로그인 | |
사용자 시작파일 | ~/.cshrc | 로그인, 서브쉘 | |
사용자 시작파일 | ~/.logout | 로그아웃 |
전면처리와 후면처리
전면처리
입력된 명령어를 전면에서 실행하고 쉘은 명령어 실행이 끝날때까지 기다림
$ 명령어
후면처리
명령어를 후면에서 실행하고 전면에서는 다른 작업을 실행하여 동시에 여러 작업을 수행할 수 있음
$ 명령어 &
후면 작업 확인
$ jobs [%작업번호]
후면에서 실행되고 있는 작업들을 리스트. 작업 번호 명시 시 해당 작업만 리스트.
후면 작업을 전면 작읍으로 전환
$ fg %작업번호
작업번호에 해당하는 후면 작업을 전면 작업으로 전환
입출력 재지정
출력 재지정(output redirection)
$ 명령어 > 파일
명령어의 표준출력을 모니터 대신에 파일에 저장
출력 재지정을 이용하여 간단한 파일 만들기
$ cat > 파일
표준입력 내용을 모두 파일에 저장. 파일이 없으면 새로 생성
두 개의 파일을 붙여 새 파일 만들기
$ cat 파일1 파일2 > 파일3
파일1+파일2 => 파일3 생성
출력 추가
$ 명령어 >> 파일
명령어의 표준출력을 모니터 대신에 파일로 추가
입력 재지정(input redirection)
$ 명령어 < 파일
명령어의 표준입력을 키보드 대신에 파일에서 받음
문서 내 입력(here document)
$ 명령어 << 단어
...
단어
명령어의 표준입력을 키보드 대신에 단어와 단어 사이의 입력 내용으로 받음
오류 재지정
$ 명령어 2> 파일
명령어의 표준오류를 모니터 대신 파일에 저장
실행결과
-표준출력(standard output) : 정상적인 범위의 출력
-표준오류(standard error) :오류 메시지 출력
파이프
$ 명령어1 | 명령어2
명령어1의 표준출력이 파이프를 통해 명령어2의 표준입력이 됨
현재 디렉터리 내의 파일 이름들을 내림차순 정렬해서 보여주기
$ ls > ls.txt
$ sort-r < ls.txt
ex) $ ls | sort -r
여러 명령어 실행
명령어 열(command sequence)
나열된 명령어들을 순차적으로 실행
$ 명령어1; ...; 명령어n
명령어 그룹(command group)
나열된 명령어들을 하나의 그룹으로 묶어 순차적으로 실행
$(명령어1; ...; 명령어n)
조건 명령어 열(conditional command sequence)
첫 번째 명령어 실행 결과에 따라 다음 명령어 실행을 결정
$ 명령어1 && 명령어2
명령어1 성공 -> 명령어2 실행
$ 명령어1 && 명령어2
명령어1 실패 -> 명령어2 실행
파일 이름 대치와 명령어 대치
파일 이름 대치
대표 문자를 이용한 파일 이름 대치
-대표문자를 이용하여 한 번에 여러 파일을 나타냄
-명령어 실행 전 대표문자가 나타나는 파일 이름들로 먼저 대치하고 실행
대표문자 | 의미 |
* | 빈 스트링을 포함하여 임의의 스트링을 나타냄 |
? | 임의의 한 문자를 나타냄 |
[..] | 대괄호 사이의 문자 중 하나를 나타내며 부분범위 사용 가능 |
명령어 대치(Command substitution)
명령어를 실행할 때 다른 명령어의 실행 결과를 이용 -> '명령어' 부분은 그 명령어의 실행결과로 대치 후 실행
따옴표 사용
- 작은따옴표(') : 파일이름 대치, 변수 대치, 명령어 대치 모두 제한
- 큰따옴표(") : 파일이름대치만 제한
- 중첩 사용 -> 밖의 따옴표가 효력을 지님
'정리 > Linux' 카테고리의 다른 글
[LINUX] 유틸리티 (0) | 2023.05.21 |
---|---|
[LINUX] 인터넷과 원격 접속, 파일 유틸리티 (0) | 2023.05.14 |
[LINUX] 파일 사용 (0) | 2023.04.09 |
[LINUX] 기본 명령어 (0) | 2023.04.02 |
[LINUX] x 윈도우와 데스크톱 환경 (0) | 2023.03.26 |
댓글