프로그래밍/Unix

[유닉스/unix] 쉘(Shell) 기본 사용법

미냐님 2020. 4. 30. 13:23
728x90

쉘(Shell) 기본 사용법

 

문자열의 출력

  • 유닉스 명령은 유닉스 시스템이 제공하는 유틸리티 명령과 쉘이 제공하는 명령으로 나눔
  • 쉘 명령은 쉘이 자체적으로 제공하는 명령
  • 디렉토리 변경에 사용되는 cd가 대표적
  • 문자열 출력 명령 : echo
  • echo는 쉘 명령과 유틸리티 명령 모두에서 제공됨
  • /bin/echo와 같이 경로를 지정하여 실행하면 유틸리티 명령 실행
  • 경로 없이 실행하면 쉘 내장 명령 실행
$ echo test
test
$ /bin/echo test
test
$

쉘 특수 문자

  • 쉘은 사용자가 명령을 더 편리하게 입력하고 실행할 수 있도록 특수 문자를 제공, 사용법은 모든 쉘에서 거의 비슷함
  • 특수 문자(Metacharacter)는 쉘에서 특수한 의미를 가진 문자들로 특수 기능을 수행
  • 사용자가 입력한 명령을 실행하기 전에 쉘이 특수 문자를 먼저 해독해 적절한 형태로 변경
  • 주요 특수 문자 : *, ?, , ; 등

* 특수 문자

  • 가장 많이 사용되는 특수 문자 중의 하나
  • 임의의 문자열을 나타내는 데 사용
  • 여러 파일의 이름을 나열할 때 파일 이름을 간단히 표시하기 위해 사용

?와 [ ] 특수 문자

  • ?(물음표)와 [] (대괄호)는 모두 하나의 문자를 나타내는 데 사용
  • ?는 임의의 한 문자를, [ ]는 괄호 안에 포함된 문자 중 하나를 나타냄
  • [ ]는 사용할 여러 문자를 나열하거나 범위를 지정할 수 있으며 다른 특수 문자와도 혼합 사용 가능

~와 - 특수 문자

  • ~(틸드)와 -(대시)는 디렉토리를 나타내는 특수 문자
  • ~가 단독으로 사용되면 현재 작업 중인 사용자의 홈 디렉토리를 나타냄.
    • 다른 사용자의 로그인 ID와 함께 사용되면 해당 사용자의 홈 디렉토리를 나타냄.
  • -는 cd 명령으로 디렉토리를 이전하기 직전의 작업 디렉토리를 나타냄

;과 | 특수 문자

  • ;(세미콜론)과 (파이프)는 명령과 명령을 연결하는 데 사용
  • ;은 연결된 명령을 왼쪽부터 차례로 실행
  • 는 왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달
    • 파이프를 이용하면 여러 명령을 연결해 사용할 수 있음

‘ ’와 “ ” 특수 문자

  • ‘ ’(작은 따옴표)와 “ ”(큰 따옴표)는 문자열을 감싸며 문자열 안에 사용된 특수 문자의 의미를 없애는 기능
  • *나 ?, ; 등 파일 이름에 사용하거나 화면에 메시지로 출력할 때는 따옴표를 사용
  • ‘ ’는 모든 특수 문자를 일반 문자로 간주해 처리
  • “ ”는 $, `, \를 제외한 모든 특수 문자를 일반 문자로 간주해 처리
  • $를 문자 그대로 사용하려면 작은 따옴표를, 쉘 환경 변수의 값을 포함한 문자열을 처리하려면 큰 따옴표를 사용

` 특수 문자

  • `(백쿼터)는 키보드 왼쪽 상단의 Esc 키 아래에 있는 문자를 사용
  • 명령 실행 결과를 문자열로 받고 싶을 때 사용

\ 특수 문자

  • (역슬래시)는 특수 문자를 일반 문자처럼 사용하도록 함
  • 특수 문자 바로 앞에 사용되며 해당 특수 문자의 효과를 없앰

>,»,< 특수 문자

  • 입출력의 방향을 바꾸는 특수 문자

쉘의 환경 변수

 

변수

  • 특정한 쉘(Shell)에서만 적용되는 변수
  • 쉘 변수
    • 서브 쉘로 그 값이 전달되지 않기 때문에 임시로 사용할 값을 저장하는 데 사용
  • 환경 변수
    • 유닉스 시스템이 쉘에 전달하는 사용자 정보, 각 사용자의 프롬프트 모양, 이전 작업 디렉토리 등의 정보가 저장되어 사용자의 작업 환경을 보다 편리하게 설정할 수 있게 해줌

변수 출력

  • 현재 설정된 변수 목록과 그 값을 보는 명령 : set, env
  • set은 쉘 변수와 환경 변수 모두를 보여줌
$ set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:......
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
......
$
  • env는 환경 변수만 보여줌
    • 환경 변수 이름은 관습적으로 모두 대문자 사용
$ env
......
SHELL=/bin/bash
TERM=linux
USER=ksshin
......
MAIL=/var/mail/ksshin
PATH=/usr/local/sbin:/usr/loca/bin:......
......
$

주요 환경 변수

  • 사용자의 현재 위치를 알아보는 방법으로 PWD 변수의 값을 출력해 볼 수 있음
  • 환경 변수의 값을 출력할 때는 변수 이름 앞에 특수 문자 $를 사용
$ echo $PWD
/home/ksshin
$

변수 정의

  • 쉘 변수에 값을 설정하는 방법
  • 형식 : 쉘 변수명=문자열
  • 사용 예 : ATEST=test
$ ATEST=test
$ set
ATEST=test
......
$
  • 여러 변수 중 방금 생성한 변수의 값만 출력
$ echo $ATEST
test
$

쉘 변수를 환경 변수로 변경

export 명령 : 지정한 쉘 변수를 환경 변수로 바꿔주고, 그 값을 현재 쉘과 서브 쉘에 적용시키는 쉘의 내부 명령

  • 형식 : export [-n][변수]
  • 옵션
    • -n : 환경 변수를 쉘 변수로 변경
  • 사용 예
    • export
    • export ATEST
  • 쉘 변수 설정 후, export 명령을 이용하여 환경 변수로 변경
$ BTEST=test
$ export BTEST
$ env
......
BTEST=test
......
$
  • 변수를 선언하면서 동시에 export하여 환경 변수를 설정
$ export CTEST=test
$ echo $CTEST
test
$

변수를 이용하여 편리한 작업 환경 만들기

  • CDPATH 환경 변수
    • cd 명령을 실행할 때 인자로 주어진 디렉토리를 찾을 경로를 미리 지정
    • cd 명령을 실행하면 CDPATH 변수에 :(콜론)으로 구분하여 지정된 경로 아래에 해당 디렉토리가 있는지 찾아보고, 없으면 현재 디렉토리에서 찾음
    • 자주 이동하는 경로를 CDPATH 변수에 지정하면 손쉽게 현재 위치를 변경할 수 있음
$ cd
$ echo $CDPATH
$ CDPATH=~/Unix
$ cd ch4
$ pwd
/home/ksshin/Unix/ch4
$ cd ch3
$ pwd
/home/ksshin/Unix/ch3
$

변수 해제

  • 정의된 변수를 해제할 때는 unset 명령 사용
  • 형식 : unset 변수
  • 사용 예
    • unset ATEST
$ unset CTEST
$ echo $CTEST
$
728x90