셸 스크립트 기초 개념

1. 기본 명령어: echo

echo 명령어는 텍스트를 출력하는 기본 도구입니다. 옵션을 사용하면 다양한 형식의 출력이 가능합니다.

[root@centos2 ~]# echo [옵션] [출력 내용]
옵션:
    -e: 이스케이프 문자 처리 활성화
    -n: 출력 후 줄바꿈 없음

예시

[root@centos2 ~]# echo "hello world"
hello world

[root@centos2 ~]# echo -n "hello world"
hello world[root@centos2 ~]#

이스케이프 문자 활용

-e 옵션을 사용하면 다음 문자 시퀀스가 특수 기능을 수행합니다:

문자기능
\\역슬래시(\) 자체 출력
\a경고음 출력
\b백스페이스(뒤로 한 칸)
\c줄바꿈 제거 (옵션 -n과 동일)
\eESC 키
\f페이지 전환
\n새 줄
\r캐리지 리턴
\t
\v세로 탭
\0nnn8진수 ASCII 코드로 문자 출력
\xhh16진수 ASCII 코드로 문자 출력

색상 출력 예제

[root@centos2 ~]# echo -e "\e[1;31m abc \e[0m"
# 'abc'를 빨간색으로 표시

# 색상 코드 설명:
# 30-37: 글자 색상 (검정, 빨강, 초록, 노랑, 파랑, 마젠타, 청록, 흰색)
# 40-47: 배경 색상 (동일한 번호)

2. 셸 스크립트 실행 방법

스크립트 파일은 다음과 같은 방식으로 실행할 수 있습니다.

#!/bin/bash
echo -e "hello world"
[root@centos2 ~]# chmod +x hello.sh
# 실행 권한 부여

# 방법 1: bash로 직접 실행
[root@centos2 ~]# bash hello.sh
hello world

# 방법 2: 절대 경로 또는 상대 경로로 실행
[root@centos2 ~]# /root/hello.sh
hello world
[root@centos2 ~]# ./hello.sh
hello world

3. 셸의 주요 기능

3.1 역사 명령어

최근 입력한 명령어를 확인하고 재사용할 수 있습니다.

[root@centos2 ~]# history [옵션] [기록 파일]
옵션:
    -c: 기록 초기화
    -w: 메모리에 저장된 기록을 파일에 저장

현재 세션의 기록은 ~/.bash_history 파일에 저장되지 않고 메모리에만 유지됩니다. 로그아웃 시 자동 저장되며, -w 옵션으로 즉시 저장 가능합니다.

3.2 명령어 및 파일 보완 (Tab 키)

입력 중 Tab 키를 누르면 현재 디렉터리의 파일이나 명령어 목록을 자동 완성합니다.

3.3 별칭 설정

명령어를 간단한 이름으로 지정할 수 있습니다.

[root@centos2 ~]# alias ll='ls -l --color=auto'
[root@centos2 ~]# alias rm='rm -i'

# 별칭 확인
[root@centos2 ~]# alias

3.4 주요 단축키

단축키기능
Ctrl+A커서를 줄 시작으로 이동
Ctrl+E커서를 줄 끝으로 이동
Ctrl+C실행 중인 프로세스 종료
Ctrl+L화면 정리 (clear와 동일)
Ctrl+U커서 앞의 텍스트 삭제
Ctrl+K커서 뒤의 텍스트 삭제
Ctrl+Y삭제한 텍스트 붙여넣기
Ctrl+R히스토리에서 검색
Ctrl+D터미널 종료
Ctrl+Z작업 일시 정지 및 백그라운드로 이동

4. 입출력 리디렉션

4.1 표준 입출력 장치

장치파일 이름디스크립터유형
키보드/dev/stdin0표준 입력
화면/dev/stdout1표준 출력
화면/dev/stderr2표준 에러 출력

4.2 출력 리디렉션

형식기능
명령 > 파일출력을 덮어쓰기 방식으로 저장
명령 >> 파일출력을 추가 방식으로 저장
명령 2> 파일에러 출력을 덮어쓰기 방식으로 저장
명령 2>> 파일에러 출력을 추가 방식으로 저장
명령 > 파일 2>&1표준 출력과 에러 출력을 동일 파일에 저장
명령 &> 파일표준 출력과 에러 출력을 함께 저장 (덮어쓰기)

5. 다중 명령어 순차 실행

연산자형식기능
;명령1; 명령2순차 실행 (논리적 연결 없음)
&&명령1 && 명령2첫 번째 명령 성공 시 두 번째 실행
||명령1 || 명령2첫 번째 명령 실패 시 두 번째 실행

6. 파이프라인 (Pipe)

하나의 명령의 출력을 다른 명령의 입력으로 사용합니다.

[root@centos2 ~]# netstat -an | grep "ESTABLISHED"
tcp        0     52 192.168.80.129:22       192.168.80.1:63373      ESTABLISHED

[root@centos2 ~]# netstat -an | grep "ESTABLISHED" | wc -l
1

7. 와일드카드 표현식

표현식기능
?하나의 임의 문자 매칭
*0개 이상의 임의 문자 매칭
[abc]괄호 안의 하나의 문자 매칭
[a-z]범위 내 문자 매칭
[^0-9]숫자가 아닌 문자 매칭

8. 특수 문자 및 구문

문자기능
'...'내부 특수 문자 무시
"..."$, ` 등 일부 특수 문자 해석
`명령`명령 결과를 문자열로 대체
$()반복자(`)보다 권장되는 명령 실행 구문
()하위 쉘에서 명령 실행
{}현재 쉘에서 명령 실행
#주석 시작
$변수변수 값 참조
\\특수 문자를 일반 문자로 처리

9. 변수 및 연산자

9.1 변수 선언 규칙

  • 변수명: 영문자, 숫자, 언더바 조합, 숫자로 시작 불가
  • 값에 공백 포함 시 따옴표 사용
  • 명령 결과 할당: `명령` 또는 $(명령)

9.2 변수 유형

유형설명
사용자 정의 변수사용자가 직접 정의
환경 변수시스템 환경 정보 저장
위치 매개변수스크립트 인자 전달용 ($1, $2 등)
사전 정의 변수Bash 내부에서 미리 정의됨

9.3 변수 테스트 및 치환

비어 있음정의됨
${y-new}newy의 값
${y:-new}newy의 값
${y+new}빈 문자열new
${y=new}newy에 값 설정

10. 환경 변수 구성 파일

다음 파일들이 로그인 시 로드됩니다:

  • /etc/profile: 시스템 전체 설정
  • /etc/profile.d/*.sh: 추가 설정 스크립트
  • ~/.bash_profile: 사용자 개인 설정
  • ~/.bashrc: 터미널 세션 설정
  • /etc/bashrc: 시스템 쉘 설정

로그아웃 시 ~/.bash_logout이 실행됩니다.

11. 로그인 메시지 설정

  • /etc/issue: 로컬 터미널 접속 시 표시
  • /etc/issue.net: 원격 접속 시 표시 (SSH/Telnet)
  • /etc/motd: 인증 후 표시되는 메시지

12. 단축키 수정

[root@centos2 ~]# stty -a
# 현재 단축키 확인

[root@centos2 ~]# stty interrupt ^C
# 특정 키 조합 변경

태그: Shell bash Scripting command-line environment variables

6월 29일 23:22에 게시됨