본문 바로가기
정리/Linux

[LINUX] 쉘과 명령어

by 멘멘 2023. 5. 7.

쉘(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

댓글