제1부 리눅스 커맨드라인
_1장: 리눅스 쉘 시작하기
리눅스란 무엇인가? | 리눅스 커널 들여다보기 | 시스템 메모리 관리 | 소프트웨어 프로그램 관리 | 하드웨어 관리 | 파일시스템 관리 | GNU 유틸리티 | 핵심 GNU 유틸리티 | 쉘 | 리눅스 데스크톱 환경 | X 윈도우 시스템 | KDE 데스크톱 | GNOME 데스크톱 | 유니티 데스크톱 | 다른 데스크톱 | 리눅스 배포판 | 코어 리눅스 배포판 | 전문화된 리눅스 배포판 | 리눅스 라이브CD
_2장: 쉘에 접속하기
커맨드라인에 도달하기 | 콘솔 터미널 | 그래픽 터미널 | 리눅스 콘솔 터미널을 통해 CLI에 접속하기 | 그래픽 터미널 에뮬레이션으로 CLI에 접속하기 | GNOME 터미널 에뮬레이터 사용하기 | GNOME 터미널 접속 | 메뉴 바 | Konsole 터미널 에뮬레이터 사용하기 | Konsole 터미널에 접속하기 | 메뉴 바 | xterm 터미널 에뮬레이터 사용하기 | xterm에 접속하기 | 커맨드라인 매개변수
_3장: 기본 bash 쉘 명령
쉘 시작하기 | 쉘 프롬프트 사용하기 | bash 설명서와 상호작용하기 | 파일시스템 탐색하기 | 리눅스 파일시스템 들여다보기 | 디렉토리 둘러보기 | 절대 디렉토리 참조법 사용하기 | 상대 디렉토리 참조법 사용하기 | 파일 및 디렉토리 목록 보기 | 기본 목록 표시하기 | 긴 목록을 표시하기 | 목록 출력 필터링하기 | 파일 다루기 | 파일 만들기 | 파일 복사하기 | 탭 자동 완성 기능 활용하기 | 파일 링크하기 | 파일 이름 바꾸기 | 파일 지우기 | 디렉토리 관리하기 | 디렉토리 만들기 | 디렉토리 지우기 | 파일 내용 보기 | 파일 유형 보기 | 파일 전체를 보기 | cat 명령 사용하기 | more 명령 사용하기 | less 명령 사용하기 | 파일의 일부를 보기 | tail 명령 사용하기 | head 명령 사용하기
_4장: 더 많은 bash 쉘 명령
프로그램 감시하기 | 프로세스 엿보기 | 유닉스 스타일 매개변수 | BSD 스타일의 매개변수 | GNU 형식의 긴 매개변수 | 실시간 프로세스 모니터링 | 프로세스를 중단시키기 | kill 명령 | killall 명령 | 디스크 공간 모니터링 | 미디어 마운트 | mount 명령 | unmount 명령 | df 명령 사용하기 | du 명령 사용하기 | 데이터 파일 작업 | 데이터 정렬 | 데이터 검색 | 데이터 압축하기 | 데이터 아카이브
_5장: 쉘을 이해하기
쉘의 유형 알아보기 | 부모와 자식 쉘의 관계 알아보기 | 프로세스 목록 알아보기 | 서브쉘을 창의적으로 사용하기 | 백그라운드 모드 들여다보기 | 프로세스 목록을 백그라운드 모드로 돌리기 | 코프로세싱 살펴보기 | 내장 쉘 명령 알아보기 | 외부 명령 살펴보기 | 내장 명령 살펴보기 | history 명령 사용하기 | 명령의 별명 사용하기
_6장: 리눅스 환경 변수 사용하기
환경 변수 살펴보기 | 전역 환경 변수 살펴보기 | 지역 환경 변수 살펴보기 | 사용자 정의 변수 설정하기 | 사용자 정의 지역 변수 설정하기 | 전역 환경 변수 설정하기 | 환경 변수 제거하기 | 기본 쉘 환경 변수 들여다보기 | PATH 환경 변수 설정하기 | 시스템 환경 변수 찾기 | 로그인 쉘 프로세스 이해하기 | /etc/profile 파일 살펴보기 | $HOME 시동 파일 살펴보기 | 대화형 쉘 프로세스 이해하기 | 비대화형 쉘 프로세스 이해하기 | 환경 변수를 영구적으로 만들기 | 변수 배열 알아보기
_7장: 리눅스 파일 사용 권한 이해하기
리눅스 보안 | The /etc/passwd 파일 | /etc/shadow 파일 | 새 사용자 추가하기 | 사용자 없애기 | 사용자 수정하기 | usermod | passwd, chpasswd | chsh, chfn 및 chage | 리눅스 그룹 사용하기 | /etc/group 파일 | 새 그룹 만들기 | 그룹 수정하기 | 파일 권한 해석하기 | 파일 권한 기호 사용하기 | 기본 파일 권한 | 보안 설정 변경하기 | 권한 변경하기 | 소유권 변경하기 | 파일 공유하기
_8장: 파일시스템 관리하기
리눅스 파일시스템 살펴보기 | 기본적인 리눅스 파일시스템 이해하기 | 파일시스템 살펴보기 | ext2 파일시스템 살펴보기 | 저널링 파일시스템 이해하기 | ext3 파일시스템 살펴보기 | ext4 파일시스템 살펴보기 | 라이저 파일시스템 살펴보기 | JFS 파일시스템 살펴보기 | XFS 파일시스템 살펴보기 | 카피 온 라이트 파일시스템 이해하기 | ZFS 파일시스템 살펴보기 | Btrfs 파일시스템 살펴보기 | 파일시스템으로 작업하기 | 파티션 만들기 | 파일시스템 만들기 | 파일시스템을 검사하고 복구하기 | 논리 볼륨 관리하기 | 논리 볼륨 관리 레이아웃 살펴보기 | 리눅스에서 LVM 사용하기 | 스냅샷 찍기 | 스트라이핑 | 미러링 | 리눅스 LVM 사용하기 | 물리 볼륨 정의하기 | 볼륨 그룹 만들기 | 논리 볼륨 만들기 | 파일시스템 만들기 | LVM 수정하기
_9장: 소프트웨어 설치하기
패키지 관리 기초 | 데비안 기반 시스템 | aptitude로 패키지 관리하기 | aptitude로 소프트웨어 패키지 설치하기 | aptitude로 소프트웨어 업데이트하기 | aptitude로 소프트웨어 제거하기 | aptitude 저장소 | 레드햇 기반 시스템 | 설치된 패키지 목록 보기 | yum으로 소프트웨어 설치하기 | yum으로 소프트웨어 업데이트하기 | yum으로 소프트웨어 제거하기 | 깨진 의존성 다루기 | yum 저장소 | 소스코드에서 설치하기
_10장: 편집기로 작업하기
vim 편집기로 작업하기 | vim 패키지 확인하기 | vim 기본 탐색하기 | 데이터 편집하기 | 복사하기와 붙여넣기 | 찾기 및 바꾸기 | nano 편집기 살펴보기 | emacs 편집기 살펴보기 | emacs 패키지 확인하기 | 콘솔에서 emacs 사용하기 | emacs 기초 알아보기 | 데이터 편집하기 | 복사하기와 붙여넣기 | 찾기 및 바꾸기 | emacs에서 버퍼 사용하기 | 콘솔 모드 emacs에서 창 사용하기 | GUI에서 emacs 사용하기 | KDE 패밀리의 편집기 살펴보기 | KWrite 편집기 살펴보기 | Kate 편집기 살펴보기 | GNOME 편집기 살펴보기 | gedit 시작하기 | gedit 기본 기능 이해하기 | 환경 설정하기 | 보기 환경 설정하기 | 편집기 환경 설정 | 글꼴 및 색상 환경 설정 | 플러그인 관리하기
제2부 쉘 스크립트 기초
_11장: 스크립트 구축의 기초
여러 명령 사용하기 | 스크립트 파일 만들기 | 메시지 표시하기 | 변수 사용하기 | 환경 변수 | 사용자 변수 | 명령 치환하기 | 입력과 출력 리다이렉트하기 | 출력 리다이렉트하기 | 입력 리다이렉트하기 | 파이프 | 계산하기 | expr 명령 | 대괄호 사용하기 | 부동소수점을 위한 해법 | bc의 기초 | 스크립트에서 bc 사용하기 | 스크립트 종료하기 | 종료 상태 확인하기 | exit 명령
_12장: 구조적 명령 사용하기
if-then 구문 사용하기 | if-then 구문 들여다보기 | 중첩된 if 문 | 테스트 명령 써 보기 | 숫자 비교 사용하기 | 문자열 비교 사용하기 | 문자열이 일치하는지 보기 | 문자열의 크고 작음을 보기 | 문자열 크기 보기 | 파일 비교 사용하기 | 디렉토리 확인하기 | 개체가 존재하는지 여부 검사하기 | 파일 확인하기 | 읽을 수 있는지 검사하기 | 빈 파일 확인하기 | 파일에 쓸 수 있는지 여부 확인하기 | 파일을 실행할 수 있는지 여부 확인하기 | 소유권 확인하기 | 기본 그룹 구성원 확인하기 | 파일 날짜 확인하기 | 복합 테스트 검토하기 | 고급 if-then 기능 사용하기 | 이중 괄호 사용하기 | 이중 대괄호 사용하기 | case 명령 알아보기
_13장: 구조적 명령 더 알아보기
for 명령 | 목록에서 값을 읽기 | 목록의 복잡한 값을 읽기 | 변수에서 목록 읽기 | 명령에서 값을 읽기 | 필드 구분자 변경하기 | 와일드카드를 써서 디렉토리 읽기 | C 스타일 for 명령 | C 언어의 for 명령 | 여러 변수 사용하기 | while 명령 | 기본 while 형식 | 여러 테스트 명령 사용하기 | until 명령 | 중첩된 루프 | 파일 데이터에 대한 반복 작업 | 루프 제어 | break 명령 | 단일 루프 밖으로 빠져나오기 | 안쪽 루프에서 빠져나오기 | 바깥쪽 루프 밖으로 빠져나가기 | continue 명령 | 루프의 출력 처리하기 | 활용 예제 | 실행 파일 찾기 | 여러 개의 사용자 계정 만들기
_14장: 사용자 입력 처리
매개변수 전달하기 | 매개변수 읽기 | 스크립트 이름 읽기 | 매개변수 테스트하기 | 특수한 매개변수 사용하기 | 매개변수 숫자 세기 | 모든 데이터를 한꺼번에 얻기 | 시프트 기능 활용하기 | 옵션 처리하기 | 옵션 찾기 | 간단한 옵션 처리하기 | 매개변수에서 옵션 분리하기 | 옵션의 값을 처리하기 | getopt 명령 사용하기 | 명령 형식 살펴보기 | 스크립트에서 getopt 사용하기 | getopts로 발전시키기 | 옵션 표준화하기 | 사용자 입력 받기 | 읽기의 기초 | 시간 초과 | 화면에 표시하지 않고 읽기 | 파일에서 읽기
_15장: 데이터 보여주기
입력 및 출력 이해하기 | 표준 파일 디스크립터 | STDIN | STDOUT | STDERR | 오류를 리다이렉트하기 | 오류만 리다이렉트하기 | 오류와 데이터를 리다이렉트하기 | 스크립트 안에서 출력 리다이렉트하기 | 일시 리다이렉트 | 지속적으로 리다이렉트하기 | 스크립트에서 입력 리다이렉트하기 | 사용자 정의 리다이렉트 만들기 | 출력 파일 디스크립터 만들기 | 파일 디스크립터를 리다이렉트하기 | 입력 파일 디스크립터 만들기 | 읽기/쓰기용 파일 디스크립터 만들기 | 파일 디스크립터 닫기 | 열린 파일 디스크립터 나열하기 | 명령 출력 억제하기 | 임시 파일 사용하기 | 로컬 임시 파일 만들기 | /tmp에 임시 파일 만들기 | 임시 디렉토리 만들기 | 메시지 로깅 | 활용 예제
_16장: 스크립트 제어
신호 처리 | bash 쉘에게 전달되는 신호 | 신호 만들기 | 프로세스 중지시키기 | 프로세스 일시 중지시키기 | 신호 트랩 | 스크립트 종료 트랩하기 | trap 수정 또는 제거 | 백그라운드 모드에서 스크립트 실행하기 | 백그라운드에서 실행하기 | 여러 백그라운드 작업 실행하기 | 끊김 없이 스크립트 실행하기 | 작업 제어 | 작업 보기 | 중단된 작업을 다시 시작하기 | nice 활용하기 | nice 명령 사용하기 | renice 명령을 사용하기 | 시계처럼 정확히 실행하기 | at 명령을 사용하여 작업 예약하기 | at 명령 형식 이해하기 | 작업 결과 얻기 | 대기중인 작업 목록 보기 | 작업 제거하기 | 스크립트를 정기적으로 실행되도록 예약하기 | 크론 테이블 보기 | 크론 테이블 만들기 | 크론 디렉토리 보기 | anacron 프로그램 살펴보기 | 새로운 쉘에서 스크립트 실행하기
제3부 고급 쉘 프로그래밍
_17장: 함수 만들기
기본 스크립트 함수 | 함수 만들기 | 함수 사용하기 | 값을 돌려주기 | 기본 종료 상태 | return 명령 사용하기 | 함수 출력 이용하기 | 함수에서 변수 사용하기 | 함수에 매개변수 전달하기 | 함수에서 변수 다루기 | 전역 변수 | 지역 변수 | 배열 변수와 함수 | 함수에 배열 전달하기 | 함수에서 배열 돌려주기 | 재귀 함수 | 라이브러리 만들기 | 커맨드라인에서 함수 사용하기 | 커맨드라인에서 함수 만들기 | .bashrc 파일에서 함수 정의하기 | 직접 함수 정의하기 | 함수 파일을 .bashrc에 추가하기 | 활용 예제 따라해 보기 | 다운로드 및 설치 | 라이브러리 빌드하기 | shtool 라이브러리 함수 | 라이브러리 사용하기
_18장: 그래픽 기반 데스크톱을 위한 스크립트 작성
텍스트 메뉴 만들기 | 메뉴 레이아웃 만들기 | 메뉴 함수 만들기 | 메뉴 로직 추가하기 | 모두 묶기 | select 명령 사용하기 | 창 만들기 | dialog 패키지 | msgbox 위젯 | yesno 위젯 | inputbox 위젯 | textbox 위젯 | menu 위젯 | fselect 위젯 | dialog 옵션 | 스크립트에서 dialog 명령 사용하기 | 그래픽 사용하기 | KDE 환경 | kdialog 위젯 | kdialog 사용하기 | GNOME 환경 | zenity 위젯 | 스크립트에서 zenity 사용하기
_19장: sed와 gawk 소개
텍스트 조작 | sed 편집기 배우기 | 커맨드라인에서 편집기 명령 정의하기 | 커맨드라인에서 여러 편집 명령 사용하기 | 파일에서 편집기 명령을 읽기 | gawk 프로그램 배우기 | gawk 명령 형식 살펴보기 | 커맨드라인에서 프로그램 스크립트 읽기 | 데이터 필드 변수 사용하기 | 프로그램 스크립트에서 여러 명령 사용하기 | 파일로부터 프로그램 읽기 | 데이터를 처리하기 전에 스크립트 실행하기 | 데이터를 처리한 후 스크립트 실행하기 | sed 편집기 기본 마스터하기 | 더 많은 바꾸기 옵션 소개 | 바꾸기 플래그 | 글자 바꾸기 | 주소 사용하기 | 숫자로 줄 주소 지정하기 | 텍스트 패턴 필터 사용하기 | 명령을 그룹화하기 | 줄 지우기 | 텍스트 삽입 및 첨부하기 | 줄 바꾸기 | 문자 변환하기 | 출력 다시 살펴보기 | 줄 인쇄하기 | 줄 번호 인쇄하기 | 줄의 내용 모두 표시하기 | sed에 파일 사용하기 | 파일에 쓰기 | 파일로부터 데이터 읽기
_20장: 정규표현식
정규표현식이란 무엇인가? | 정의 | 정규표현식의 유형 | BRE 패턴 정의하기 | 일반 텍스트 | 특수 문자 | 앵커 문자 | 처음에서 시작하기 | 마지막에서 찾기 | 앵커를 결합하기 | 점 문자 | 문자 클래스 | 부정형 문자 클래스 | 범위 사용하기 | 특수 문자 클래스 | 별표 | 확장 정규표현식 | 물음표 | 더하기 기호 | 중괄호 사용하기 | 파이프 기호 | 표현식 그룹화하기 | 정규표현식을 실제 활용하기 | 디렉토리 파일 세기 | 전화번호 검증하기 | 이메일 주소 분석하기
_21장: 고급 sed
멀티라인 명령 보기 | 다음 줄 명령 살펴보기 | 한 줄 버전의 다음 줄 명령 사용하기 | 텍스트 줄 결합하기 | 멀티라인 삭제 명령 살펴보기 | 멀티라인 인쇄 명령 살펴보기 | 대기 영역 | 명령을 부정형으로 만들기 | 흐름 바꾸기 | 분기 | 테스트 | 패턴으로 바꾸기 | 앰퍼샌드 사용하기 | 개별 단어 바꾸기 | 스크립트에 sed 명령 넣기 | 래퍼 사용하기 | sed 출력을 리다이렉트하기 | sed 유틸리티 만들기 | 두 줄 간격으로 띄우기 | 빈 칸이 있을 수 있는 파일의 간격 조정 | 파일에 줄 번호 매기기 | 마지막 줄 출력하기 | 줄 지우기 | 연속된 빈 줄 지우기 | 시작 부분의 빈 줄 지우기 | 끝에 있는 빈 줄 지우기 | HTML 태그 없애기
_22장: 고급 gawk
변수 사용하기 | 내장 변수 | 필드와 레코드 분리 변수 | 데이터 변수 | 사용자 정의 변수 | 스크립트에서 변수 할당하기 | 커맨드라인에서 변수 할당하기 | 배열로 작업하기 | 배열 변수 정의하기 | 배열 변수를 통해 반복 작업하기 | 배열 변수 지우기 | 패턴 사용하기 | 정규표현식 | 대조 연산자 | 수학식 | 구조적 명령 | if 구문 | while 문 | do-while 문 | for 문 | 서식화된 출력 | 내장 함수 | 수학 함수 | 문자열 함수 | 시간 함수 | 사용자 정의 함수 | 함수 정의하기 | 사용자 정의 함수 사용하기 | 함수 라이브러리 만들기 | 활용 사례 만들어 보기
_23장: 다른 쉘로 작업하기
dash 쉘이란 무엇인가? | dash 쉘의 특징 | dash 커맨드라인 매개변수 | dash 환경 변수 | 기본 환경 변수 | 위치 매개변수 | 사용자 정의 환경 변수 | dash 내장 명령 | dash 스크립트 | dash 스크립트 만들기 | 잘 동작하지 않는 것들 | 산술문 사용 | 테스트 명령 | function 명령 | zsh 쉘 | zsh 쉘의 요소들 | 쉘 옵션 | 내장 명령 | 핵심 내장 명령 | 추가 모듈 | 모듈 보기, 추가하기, 제거하기 | zsh와 스크립트 | 수학 연산 | 계산 수행하기 | 수학 함수 | 구조적 명령 | 함수
제4부 실제 활용할 수 있는 스크립트 만들기
_24장: 간단한 스크립트 유틸리티 만들기
아카이브 수행하기 | 아카이브 데이터 파일 | 필요한 기능 배우기 | 매일 아카이브를 저장할 장소 만들기 | 날마다 사용할 아카이브 스크립트 만들기 | 날마다 아카이브 스크립트 실행하기 | 매 시간마다 사용할 아카이브 스크립트 만들기 | 매 시간마다 아카이브 스크립트 실행하기 | 사용자 계정 관리하기 | 필요한 기능 확보하기 | 올바른 계정 이름 얻기 | 올바른 계정 이름을 얻기 위한 함수 만들기 | 입력한 계정 이름 확인하기 | 계정이 있는지 여부를 판단하기 | 계정의 모든 프로세스 없애기 | 계정의 파일 찾기 | 계정 제거하기 | 스크립트 만들기 | 스크립트 실행하기 | 디스크 공간 감시하기 | 중요한 기능을 확보하기 | 스크립트 만들기 | 스크립트 실행하기
_25장: 데이터베이스, 웹 및 이메일 스크립트 만들기
MySQL 데이터베이스 사용하기 | MySQL 사용하기 | 서버에 연결하기 | mysql의 명령 | 데이터베이스 만들기 | 사용자 계정 만들기 | 테이블 만들기 | 데이터 삽입 및 삭제 | 데이터 질의 | 스크립트에서 데이터베이스 사용하기 | 서버에 로그인하기 | 서버에 명령 보내기 | 데이터 서식화하기 | 웹 사용하기 | Lynx 설치하기 | Lynx 커맨드라인 | Lynx 구성 파일 | Lynx 에서 데이터를 잡아내기 | 이메일 사용하기
_26장: 재미난 쉘 스크립트 만들기
메시지 보내기 | 필요한 기능 이해하기 | 누가 시스템에 있는지 판단하기 | 메시지를 허용하기 | 다른 사용자에게 메시지 보내기 | 스크립트 만들기 | 사용자가 로그인했는지 확인하기 | 사용자가 메시지를 수락하는지 확인하기 | 메시지가 포함되어 있는지 여부 확인하기 | 간단한 메시지 송신하기 | 긴 메시지 보내기 | 명언 얻기 | 필요한 기능 이해하기 | wget 유틸리티 살펴보기 | 웹 주소 검사하기 | 스크립트 만들기 | 전달된 URL 확인하기 | 웹 페이지 정보를 가져오기 | 원하는 정보를 구문 분석하기 | 핑곗거리 만들기 | 필요한 기능 이해하기 | curl 살펴보기 | 이메일을 사용하도록 선택하기 | 스크립트 만들기
부록A: bash 명령 퀵 가이드
내장 명령 검토하기 | 널리 쓰이는 bash 명령들 보기 | 환경 변수 살펴보기
부록B: sed/gawk 퀵 가이드
sed 편집기 | sed 편집기 시작하기 | sed 명령 | 치환 | 주소 | 줄 지우기 | 텍스트 삽입 및 첨부하기 | 줄 바꾸기 | 변환 명령 | 줄 인쇄하기 | 파일에 쓰기 | 파일에서 읽기 | gawk 프로그램 | gawk 명령 형식 | gawk 사용하기 | 커맨드라인에서 프로그램 스크립트 읽기 | 프로그램 스크립트에서 여러 명령 사용하기 | 파일로부터 프로그램 읽기 | 데이터를 처리하기 전에 스크립트 실행하기 | 데이터를 처리한 후 스크립트 실행하기 | gawk 변수 | 내장 변수 | 스크립트에서 변수 할당하기 | 커맨드라인에서 변수 할당하기 | gawk 프로그램 기능 | 정규표현식 | 대조 연산자 | 수학식 | 구조적 명령