본문 바로가기
Back-end/리눅스 개념

5장 쉘과 명령어 사용

by 안녕주 2020. 12. 30.

(1) 쉘 소개

-1. (shell)은 무엇인가?

           -쉘의 역할

             - 쉘은 사용자와 운영체제 사이에 창구 역할을 하는 소프트웨어

             - 명령어 처리기(command processor)

             - 사용자로부터 명령어를 입력 받아 이를 처리한다

-2. 쉘의 종류

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

쉘의 종류

쉘 실행 파일

본 쉘

/bin/sh

콘 쉘

/bin/ksh

C

/bin/csh

Bash

/bin/bash

tcsh

/bin/tcsh

 

           - 본 쉘(Bourne shell)

             - 벨 연구소의 스티븐 본에 의해 개발 됨

             - 유닉스에서 기본 쉘로 사용됨

           - 콘 쉘(Korn shell)

             -1980년대에는 역시 벨연구소에서 본 쉘을 확장해서 만듬

           - Bash(Bourne again shell)

             -GNU에서 본 쉘을 확장하여 개발한 쉘

             - 리눅스 및 맥 OS X에서 기본 쉘로 사용되면서 널리 보급됨

             - Bash 명령어의 구문은 본 쉘 명령어 구문을 확장함

           - C (C shell)

             - 버클리 대학의 빌 조이

             -쉘의 핵신 기능 위에 C언어의 특징을 많이 포하함

             -BSD 계열의 유닉스에서 많이 사용됨

             -최근에 이를 개선한 tcsh이 개발되어 사용됨

-3. 로그인 쉘(login shell)

           - 로그인하면 자동으로 실행되는 쉘

           - 보통 시스템 관리자가 계정을 만들 깨 로그인 쉘 지장

/etc/passwd … root:x:0:1:Super-User:/:/bin/bash ...  Lee:x:109:101:hj lee:/user/faculty/Lee:/bin/csh

-4. 로그인 쉘 변경

           - 쉘 변경 : $csh… %... %exit… $

           - 로그인 쉘 변경 : $chsh … $logout … %

 

(2) 쉘의 기능

-1. 쉘의 중요 기능

           - 명령어 처리

             - 사용자가 입력한 명령을 해석하고 적절한 프로그램을 실행

           - 시작파일

             - 로그인할 때 실행되어 사용자별로 맞춤형 사용 환경 설정

           - 스크립트

             -쉘자체 내의 프로그래밍 기능

 

-2. 쉘의 실행 절차

 

 

-3. 쉘의 환경 변수

           - 환경변수 설정법 : $ 환경변수 명 = 문자열  ($TERM =xterm …$echo $ TERM)

             - 환경변수의 값을 문자열로 설정한다

           - 환경변수 보기 ($env)

           - 사용자 정의 환경 변수 ($MESSAGE = hello … $ export MESSAGE)

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

           - 시작 파일

             - 쉘마다 시작될 때 자동으로 실행되는 고유의 시작 파일

             - 주로 사용자 환경을 설정하는 역할을 하며

             - 환경설정을 위해서 환경변수에 적절한 값을 설정한다.

           - 시스템 시작파일

             - 시스템의 모든 사용자에게 적용되는 공통적인 설정

             - 환경변수 설정, 명령어 경로 설정, 환영 메시지 출력,…

           - 사용자 시작 파일

             - 사용자 홈 디렉터리에 있으며 각 사용자에게 적용되는 설정

             - 환경변수 설정, 프롬프트 설정, 명령어 경로 설정, 명령어 이면 설정,…

-5. 시작 파일(start-up file)

           - 본쉘

             - 시스템 시작파일       /etc/profile        로그인

             - 사용자 시작파일       ~/.profile           로그인

           - bash

             - 시스템 시작파일       /etc/profile        로그인

             - 사용자 시작파일       ~/.bash_profile   로그임

             - 사용자 시작파일       ~/.bashrc/etc/bashrc가 존재하면 호출하다.     로그인,서브쉘

           - C

             - 시스템 시작파일       /etc/.login          로그인

             - 사용자 시작파일       ~/.login             로그인

             - 사용자 시작파일       ~/.cshrc            로그인, 서브쉘

             - 사용자 시작파일       ~/.logout           로그아웃

-6.시작 파일 예

           - profile

             -PATH=$PATH:/usr/local/bin:/etc

              TERM=vt100

              export PATH TERM

              Sty erase ^H

           -시작 파일 바로 적용

             -$..profile

 

(3) 전면 처리와 후면 처리

-1. 전면 처리 vs 후면 처리

           - 전면 처리 : 명령어를 입력하면 명령어가 전면에서 실행되며 명령어 실행이 끝날 때까

           지 쉘이 기다려 준다.   ($명령어)

           - 후면 처리 :  명령어들을 후면에서 처리하고 전면에서는 동시에 여러 작업을 수행 할

           수 있다.    ($명령어 &)

-2. 후면 처리 예

           -$ (sleep 100; echo done) & [1] 8320

           -$ find . –name test.c –print & [2] 8325

-3. 후면 작업 확인

           - 사용법 : $jobs [%작업번호]   ($jobs , $jobs % 1)

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

 리스트한다.

-4. 후면 작업을 전면 작업으로 전환

           - 사용법 : $fg % 작업번호   ($ (sleep 100; echo DONE) &  , $ fg %1)

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

 

(4) 입출력 재지정

-1. 출력 재지정(output redirection)

           - 사용법 : $ 명령어 > 파일 ($ who> names.txt , $ cat names.txt , $ls /> list.txt)

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

-2. 출력 재지정 이용: 간단한 파일 만들기

           - 사용법 :  $ cat 파일 ($cat > list1.txt)

             - 표준입력 내용을 모두 파일에 저장한다. 파일이 없으면 새로 만든다.

-3. 두 개의 파일을 붙여서 새로운 파일 만들기

           - 사용법 : $ cat 파일1 파일2 > 파일3 ($ cat list.txt1 list2.txt > list3.txt)           

             - 파일 1 과 파일2의 내용을  붙여서 새로운 파일3을 만들어 준다.

-4. 출력 추가

           - 사용법 : $명령어 >> 파일  ($date >> list1.txt )

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

-5. 입력 재지정(input redirection)

           - 사용법 :  $명령어 < 파일  ($ wc < list1.txt )

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

-6. 문서 내 입력(here document)

           - 사용법 :  $ 명령어 << 단어단어 ($wc << END)

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

-7. 오류 재지정

           - 사용법 : $ 명령어 2>& 파일 ($ls – l /bin/esr 2> err.txt)

             -명령어의 표준 오류를 모니터 대신에 파일에 저장한다.

           - 명령어의 실행 경과

             - 표준 출력(standard output) : 정상적인 실행의 출력

             - 표준 오류(standard error) : 오류 메시지 출력

-8. 파이프

           -로그인 된 사용자들을 정렬해서 보여주기 ($who > names.txt)

           - 사용법 : $ 명령어1 | 명령어2 ($who | sort)

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

           - : 로그인 된 사용자 이름 출력 ($ who | sort)

           - : 로그인 된 사용자 수 출력 ($who | wc –l)

           - : 특정 디렉터리 내의 파일의 개수를 출력 ($ls 디렉터리 | wc –w)

-9. 입출력 재지정 관련 명령어 요약

명령어 사용법

의미

명령어 > 파일

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

명령어 >> 파일

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

명령어 < 파일

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

명령어 << 단어 단어

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

명령어2 >파일

명령어의 표준오류을 모니터 대신에 파일에 저장한다.

명령어1 | 명령어2

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

cat 파일1 파일2 > 파일3

파일1과 파일2의 내용을 붙여서 새로운 파일3을 만들어 준다.

 

(5) 여러 개 명령어 사용하기

-1. 명령어 열(command sequence)

           - 나열된 명령어들을 순차적으로 실행한다.

           - 사용법 : $ 명령어1; …; 명령어n :  ($ date; pwd; ls)

             - 나열된 명령어들을 순차적으로 실행한다.

-2. 명령어 그룹(command group)

           -나열된 명령어들을 하나의 그룹으로 묶어 순차적으로 실행한다.

           - 사용법 : $(명령어1; …;명령어n)  ($date; pwd; ls > out1.txt)

             - 나열된 명령어들을 하나의 그룹으로 묶어 순차적으로 실행한다.

-3. 조건 명령어 열(conditional command sequence)

           - 첫 번째 명령어 실행 결과에 따라 다음 명령어 실행을 결정할 수 있다.

           - 사용법 : $ 명령어1 && 명령어2 ($ gcc myprog.c && a.out)

             - 명령어1이 성공적으로 실행되면 명령어2가 실행되고, 그렇지 않으면 명령어2

실행되지 않는다.

- 사용법 : $ 명령어1 || 명령어2  ($gcc myprog.c || echo 컴파일 실패)

  - 명령어1이 실패하면 명령어2가 실행되고, 그렇지 않으면 명령어2가 실행되지 않는다.

-4. 여러 개 명령어 사용: 요약

명령어 사용법

의미

명령어1; …;명령어n

나열된 명령어들을 순차적으로 실행한다.

(명령어1; …;명령어n)

나열된 명령어들을 하나의 그룹으로 묶어 순차적으로 실행한다.

명령어1 && 명령어2

명령어1이 성공적으로 실행되면 명령어2가 실행되고, 그렇지 않으면 명령어2가 실행되지 않는다.

명령어1 || 명령어2

명령어1이 실패하면 명령어2가 실행되고, 그렇지 않으면 명령어2가 실행되지 않는다.

 

(6) 파일 이름 대치와 명령어 대치

-1. 파일 이름 대치

           - 대표문자를 이용한 파일 이름 대치

             - 대표문자를 이용하여 한 번에 여러 파일들을 나타냄

             - 명령어 실행 전에 대표문자가 나타내는 파일 이름들로 먼저 대치하고 실행

대표 문자

의미

*

빈 스트링을 포함하여 임의의 스트링을 나타냄

?

임의의 한 문자를 나타냄

[..]

대괄호 사이의 문자 중 하나를 나타내며 부분범위 사용 가능함.

           ($ gcc *.c   , $gcc a.c b.c test.c , $ls *.txt , $ls [ac]*)

-2. 명령어 대치(command substitution)

           - 명령어를 실행할 때 다른 명령어의 실행 결과를 이용

             -역따옴표(’)로 에워싼 다른 명령어 부분은 그 명령어의 실행결과로 대치된후 실행

           - : $ echo 현재 시간은 ‘date‘   ( ‘는 역따옴표)

-3. 따옴표 사용

           - 따옴표를 이용하여 대치 기능을 제한

- 정리

             -1 작은 따옴표(‘)는 파일이름 대치,변수 대치, 명령어 대치를 모두 제한한다.

             -2. 큰따옴표(“)는 파일이름 대치만 제한한다.

             -3. 따옴표가 중첩되면 밖에 따옴표가 효력을 갖는다.

 

 

핵심개념

- 쉘은 사용자와 운영체제 사이에 창구역할을 하는 소프트웨어로 사용자로부터 명령어를 입력 받아 이를 처리하는 명령어처리기 역할을 한다.

- 입력재지정은 명령어의 표준입력을 키보드 대신에 파일에서 받게 한다. 출력 재지정은 명령어의 표준 출력을 모니터 대신에 파일에 하게한다.

- 파이프를 이용하면 명령어의 표준출력을 다른 명령어의 표준입력으로 바로 받을 있다.

 

 

리눅스 스터디 3주차.docx
0.34MB

 

 

'Back-end > 리눅스 개념' 카테고리의 다른 글

8장 파일 유틸리티  (0) 2020.12.30
6장 프로세스  (0) 2020.12.30
4장 파일사용  (0) 2020.12.30
3장 유닉스 기본 명령어  (0) 2020.12.30
유닉스 / 리눅스 소개  (0) 2020.10.16

댓글