Computer Science/유닉스프로그래밍

[유닉스 이론과 실습] ch05. 배시쉘 활용하기

계속지나가기 2020. 9. 23. 12:06
반응형

(본 강의 노트는 한빛 미디어의 <유닉스 이론과 실습> 책을 기반으로 하고 있습니다)

ch05. 배시쉘 활용하기

학습목표

  • 배시 쉘이 제공하는 다양한 기능을 이해하고 활용한다
  • 환경변수를 이용해 작업의 효율을 높이는 환경을 설정하는 방법을 익힌다
  • 환경 설정 파일을 이용해 자신만의 환경을 설정하는 방법을 익힌다

목차

  1. 쉘 기본 사용법 익히기
  2. 입출력 방향 변경
  3. 배시쉘의 환경 설정
  4. 명령 다루기
  5. 프롬프트 설정하기
  6. 환경 설정파일 설정하기

01. 쉘 기본 사용법 익히기

Shell의 종류와 변경

  1. Shell이란?
  • 사용자와 커널 사이의 중간 역할
  • 사용자가 입력한 명령을 처리하고 실행 결과를 알려줌
  • 편리한 사용을 위해 다양한 기능 제공
  1. Shell의 종류?
  • 본Shell(sh : 가장 오래됨)
  • 콘 Shell(ksh : c,본을 합침)
  • C Shell(csh : c언어와 비슷하게 만듦)
  • bash Shell(bash : free software)
  • 종류 확인하기
    : 프롬프트로 확인 : C Shell은 %, 나머지는 $
    : 명령으로 확인 ( echo $SHELL)
  • Hardware > Kernel > Shells(csh,sh,ksh,...etc) > Utilities(vi, ls, ...etc)
  1. 로그인 Shell과 서브 Shell
  • 로그인 Shell : 사용자가 로그인 직후 자동 생성되는 Shell
  • 서브 Shell : 사용자가 직접 실행한 Shell
  • exit 명령어로 각 Shell 로그아웃 가능

문자열의 출력

  1. echo
  • Shell 명령과 유틸리티 모두 제공
  • 지정한 문자열 출력
  1. print(vitual box에서의 linux는 printf)
  • Shell 명령
  • 옵션이 제공되어 에코보다 편리

Shell 특수 문자

  1. 특수문자 : 가장 자주 사용되는 특수 문자로 임의의 문자열을 나타냄( 몽땅 다! )
  • ls * : 현재 디렉토리의 모든 파일 목록 나열 및 하위디렉토리 있을 경우 아래의 모든 파일도 보여줌
  • cp * /tmp : 현재 디렉토리의 모든 파일을 /tmp 디렉토리에 복사. 단, 하위 디렉토리는 복사X
  • ls -F h* : h로 시작하는 모든 파일의 이름, 종류 출력
  • cp *.c _/C : 확장자가 c인 모든 파일을 상위디렉토리 밑의 C디렉토리로 복사
  • ls -l h*d : 파일명이 h~d인 모든 파일의 상세정보 출력
  1. ?와 [ ] 특수 문자
    : 모두 하나의 문자를 나타내는 데 사용.
    : ?는 임의의 한 문자, [ ] 괄호 안에 포함된 문자 중 하나.
    : [ ] 다른 특수 문자와도 혼합해 사용할 수도 있다.
  • ls hello ?.c : hello 다음에 임의의 한 문자가 오고 파일의 확장자가 c인 모든파일의 이름 출력. 단, hello.c는 출력X
  • ls -l hello[123].c : hello1/2/3.c 파일이 있으면 해당 파일의 상세 정보 출력
  • ls [0-9]* 파일명이 숫자로 시작하는 모든 파일 목록 출력
  1. ~(tilde)와 - 특수 문자
  • 디렉토리를 나타내는 특수문자
  • ~가 단독 사용 -> 사용자의 홈 디렉토리
  • (-)는 cd 명령으로 디렉토리를 이전하기 직전의 작업 디렉토리
  1. ;(semi colon) 과 |(pipe)특수 문자
  • 명령과 명령을 연결
  • ;은 연결된 명령을 왼쪽부터 차례로 실행
  • | 는 왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달
  1. ''(semi quote)와 ""(double quote) 특수 문자
  • 문자열 안에 사용된 특수 문자의 의미를 없애는 기능
  • 작은 따옴표는 모든 특수 문자를 처리
  • 큰 따옴표는 $, ',\ 를 제외한 모든 특수 문자들을 일반 문자로 처리(like C language grammer..)
  • echo '$SHEll' 은 해당 문자열을 그대로 출력
  • 단, echo "$SHELL"은 echo $SHELL과 동일하게 작동
  1. `(back quote) 특수 문자
  • 명령 실행 결과를 문자열로 출력
  • 예 echo today is date 할 경우, "today is " + echo date의 결과로 나옴
  1. \ (₩) 특수 문자
  • ( back slash)는 특수 문자를 일반 문자처럼 사용
  • 특수 문자 앞에 사용되며 특수 문자의 효과를 제거
  1. , >>, < 특수 문자
  • 입출력 방향을 바꾸는 특수 문자
  • ls -l > res : res파일에 오른쪽 명령어의 실행결과를 화면이 아닌 해당 파일에 저장

Shell 특수 문자 요약

메타문자

기능

예제

*

임의의 문자열

$ ls  h*

?

임의의 한 문자

$ ls  dir?

[ ]

대괄호안에 포함된 문자 중 하나

$ ls  [a-f]*

~

디렉토리    

$ cd ~user1

-

이전 작업 디렉토리

$ cd -

;

명령 연결. 왼쪽부터 차례로 실행

$ date;cal;ls

|

왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달

$ ls –l /etc | more

‘ ‘

모든 특수문자 무시

$ print ‘$SHELL’

“ “

$, `, \를 제외한 모든 쉘 문자 무시

$ print “$SHELL”

` `

쉘 명령 수행

$ print `date`

\

특수문자 기능 제거

$ print “\$SHELL”

>, >> <, <<

입출력 방향 변경

 

02. 입출력 방향 변경

표준 입출력 장치

  • 시스템이 명령의 입력과 추력에 사용하는 기본 장치
 

파일

디스크립터

파일이름

설명

기본

장치

표준입력

Standard Input

0

stdin

명령의 실행에 필요한 데이터를 읽어들이는 기본 장치

키보드

표준출력

Standard Output

1

stdout

명령 실행 결과를 출력하는 장치

모니터

표준오류

Standard Error

2

stderr

명령 실행 중 발생한 오류 메시지를 출력하는 장치

모니터

리다이렉션

: 특수 기호를 사용하여 표준 입출력 장치를 변경

  1. 출력 리다이렉션 : >, >>
  • 표준 출력을 모니터에서 파일로 변경
  • 사용법
    • 새로운 파일로 생성, 기존 파일의 내용은 없어짐
    • 기존 파일의 끝에 내용 추가
  1. 오류 리다이렉션 : 2 >
  • 표준 오류 메시지를 파일에 저장
  • 사용법
    • ls /ttt 2> t
    • ttt파일이 없을 경우 t에 해당 명령어에 대한 오류메세지를 파일에 저장
  1. 입력 리다이렉션 : <
  • 표준 입력을 키보드에서 파일로 변경
  • 사용법
    • cat < file_name

03. bash Shell의 환경 설정

  1. 변수
  • 시스템이나 사용자에 의해 사용되는 정보를 저장하기 위한 저장소
  • Shell 변수는 관례적으로 대문자를 사용
  1. Shell 변수
  • 현재의 Shell에서만 사용 가능한 변수
  • 확인 명령 : set
  1. 환경 변수
  • 모든 Shell에서 사용 가능한 변수
  • 확인 명령 : env

변수 정의

  1. Shell 변수 : 변수 = 값

  2. 환경 변수

  • 변수 = 값 : export 변수명
  • export 변수 = 값
  1. 변수 값 확인
  • set, env 명령으로 확인
  • Echo $ 변수명
  1. 변수 정의 해제
  • unset 변수명

컨트롤 키

  1. 일반적으로 가장 많이 사용하는 키 : Ctrl + C -> Interrupt key
  • Ctrl + C : 현재 명령 중지
  • Ctrl + Z : 현재 명령 일시 중단( 프로세스가 살아 있음 , kill 로 죽여주면 됨)
  • Ctrl + D : 파일의 끝(혹은 입력의 끝)

04. bash Shell 명령어 다루기

앨리어스 - alias

  1. 명령어에 다른 이름을 정의하여 사용
  • 긴 명령어 대신 짧은 별칭을 사용
  • 여러 명령을 하나의 명령으로 대체 가능
  • 단 명령에 인자가 필요한 경우, 인자를 넘겨주지는 못함
  1. alias 명령
  • 앨리어스의 설정 : $aslias 별칭=명령
  • 현재 설정값 보기 : $alias
  • 앨리어스의 해제 : unalias 명령사용

히스토리

: 이전에 입력한 명령 사용하기

  1. 이전 명령 보기 : fc
  • 사용자가 입력한 명령을 사용자 홈 디렉토리 아래의 특수한 파일에 저장
  • history == fc -l 둘다 이전 명령어 보여줌(history 쓰는게 더 낫다)
  1. 명령 재실행하기 : !문자 !번호
  • 히스토리의 장점: 명령을 재입력하지 않고 반복 실행 가능
  • 이벤트 지정가 !을 이용하여 명령 실행
  1. 파일 덮어쓰기 및 내용 추가하기
  • 파일 덮어 쓰기 : 명령 > 파일명
  • 파일에 내용 추가하기 : 명령 >> 파일명

05. 프롬프트 설정하기

  • 프롬프트란? 명령 입력을 기다리는 시스템의 상태 표시

06. 환경 설정 파일의 종류

환경 설정 파일

: 사용자가 로그인할때마다 자동으로 실행되는 명령을 저장

  1. 초기화 파일
  • 쉘이 시작할 때 실행되는 명령어와 변수 설정 저장
  • 로그인 할 때 실행
  • 종류 : 시스템 초기화 파일, 사용자 초기화 파일
  1. 시스템 초기화 파일
  • 시스템을 사용하는 전체 사용자의 공통 환경 설정
  • 기본 터미널 설정, 환경 변수 설정
  • 시스템 관리자가 관리
  1. 사용자 초기화 파일
  • 사용자 홈 디렉토리에 위치
  • 사용 권한 설정, 기본 프롬프트 설정
  • 사용자별 환경 설정 : 프롬프트, 경로, 앨리어스 등
  1. 환경 설정 파일
  • shell 마다 사용자/시스템 초기화 파일의 위치와 실행시기(로그인, 서브 셸, 로그아웃)가 다름
반응형