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과 동일) |
\e | ESC 키 |
\f | 페이지 전환 |
\n | 새 줄 |
\r | 캐리지 리턴 |
\t | 탭 |
\v | 세로 탭 |
\0nnn | 8진수 ASCII 코드로 문자 출력 |
\xhh | 16진수 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/stdin | 0 | 표준 입력 |
| 화면 | /dev/stdout | 1 | 표준 출력 |
| 화면 | /dev/stderr | 2 | 표준 에러 출력 |
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} | new | y의 값 |
| ${y:-new} | new | y의 값 |
| ${y+new} | 빈 문자열 | new |
| ${y=new} | new | y에 값 설정 |
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
# 특정 키 조합 변경