혜랑's STORY

[2020-2학기 리눅스 3주차] : 이론 본문

2020 SISS 21기 활동/2학기 리눅스

[2020-2학기 리눅스 3주차] : 이론

hyerang0125 2020. 9. 27. 19:42

# 쉘과 명령어 사용

- 쉘(shell)이란 무엇인가?

 쉘은 사용자와 운영체제 사이에 창구 역할을 하는 소프트웨어로 사용자로부터 명령어를 입력 받아 이를 처리하여 명령어 처리기(command processor)(command processor)라고도 불린다.

- 쉘의 종류; 유닉스/리눅스에서 사용 가능한 쉘의 종류

쉘의 종류 쉘 실행 파일 설명
본쉘 /bin/sh 벨연구소에서 유닉스에서 기본 쉘로 사용됨
콘 쉘 /bin/ksh 벨연구소에서 본 쉘을 확장하여 만듬
C 쉘 /bin/csh GNU에서 본쉘을 확장하여 개발한 쉘
리눅스 및 맥 OS X에서 기본 쉘로 사용됨
Bash 명령어의 구문은 본 쉘 명령어 구문을 확장함
Bash /bin/bash 쉘의 핵심 기능 위에 C언어의 특징을 많이 포함함
tcsh /bin/tcsh C 쉘을 개선한 쉘이다
로그인 쉘(login shell) /bin/csh 로그인하면 자동으로 실행되는 쉘

 

- 쉘의 주요 기능

  • 명령어 처리; 사용자가 입력한 명령을 해석하고 적절한 프로그램을 실행
  • 시작 파일; 로그린할 때 실행되어 사용자별로 맞춤형 사용 환경 설정
  • 스크립트; 쉘 자체 내의 프로그래밍 기능

- 쉘의 실행 절차

- 쉘의 환경 변수

환경변수 설정법

$ 환경변수명 = 문자열
-> 환경변수의 삾을 문자열로 설정한다.

- 쉘의 시작파일(start-up file)

  • 시작 파일; 쉘마다 시작될 떄 자동으로 실행되는 고유의 시작 파일
  • 시스템 시작 파일; 시스템의 모든 사용자에게 적용되는 공통적인 설정
  • 사용자 시작 파일; 사용자 홈 디렉터리에 있으며 각 사용자에게 적용되는 설정

- 전면처리 vs 후면처리

전면처리 후면처리
명령어를 입력하면 명령어가 전면에서 실행되며 명령어 실행이 끝날때까지 쉘이 기다려 준다. 명령어들을 후면에서 처리하고 전면에서는 동시에 여러 작업을 수행할 수 있다.
$ 명령어 $ 명령어 &

+) 후면 작업 확인

$ jobs [%작업번호]
-> 후면에서 실행되고 있는 작업들을 리스트한다. 작업 번호를 명시하면 해당 작업만 리스트한다.

+) 후면 작업을 전면 작업으로 전환

$ fg %작업번호
-> 작업번호에 해당하는 후면작업을 전면작업으로 전환시킨다.

 

- 출력 재지정(output redirection)

$ 명령어 > 파일
-> 명령어의 표준출력을 모니터 대신에 파일에 저장한다.
$ 명령어 >> 파일
-> 명령어의 표준출력을 모니터 대신 파일에 추가한다.

- 입력 재지정(input redirection)

$ 명령어 < 파일
-> 명령어의 표준입력을 키보드 대신에 파일에서 받는다.

- 문서 내 입력(here document)

$ 명령어 << 단어
  . . .
  단어
-> 명령어의 표준입력을 키보드 대신에 단어와 단어 사이의 입력 내용으로 받는다.

- 오류 재지정

$ 명령어 2>& 파일
-> 명령어의 표준 오류를 모니터 대신에 파일에 저장한다.
  • 표준출력(standard output) : 정산적인 실행의 출력
  • 표준오류(standard error) : 오류메시지 출력

- 파이프

 

$ 명령어1 | 명령어2
-> 명령어1의 표준출력이 파이프를 통해 명령어2의 표준입력이 된다.

+) 입출력 재지정 관련 명령어 요약

명령어 사용법 의미
명령어 > 파일 명령어의 표준출력을 모니터 대신에 파일에 추가한다.
명령어 >> 파일 명령어의 표준출력을 모니터 대신에 파일에 추가한다.
명령어 < 파일 명령어의 표준입력을 키보드 대신에 파일에서 받는다.
명령어 << 단어
. . .
단어
표준입력을 키보드 대신에 단어와 단어 사이의 입력 내
용으로 받는다
명령어2 > 파일 명령어의 표준오류를 모니터 대신에 파일에 저장한다.
명령어1 | 명령어2 명령어1의 표준출력이 파이프를 통해 명령어2의 표준입
력이 된다
cat 파일1 파일2 > 파일3 파일1과 파일2의 내용을 붙여서 새로운 파일3을 만들어
준다.

 

- 여러개의 명령어 사용하기

  • 명령어 열(command sequence); 나열된 명령어들을 순차적으로 실행한다.
$ 명령어1; ... ; 명령어n
-> 나열된 명령어들을 순차적으로 실행한다.
  • 명령어 그룹(command group); 나열된 명령어들을 하나의 그룹으로 묶어 순차적으로 실행한다.
$ (명령어1; ... ; 명령어n)
-> 나열된 명령어들을 하나의 그룹으로 묶어 순차적으로 실행한다.
  • 조건 명령어 열(conditional command sequence)
$ 명령어1 && 명령어2
-> 명령어1이 성공적으로 실행되면 명령어2가 실행되고, 그렇지 않으면 명령어2가 실행되지 않는다.
$ 명령어1 || 명령어2
-> 명령어1이 실패하면 명령어2가 실행되고, 그렇지 않으면 명령어2가 시랭되지 않는다.