이미 소장하고 있다면 판매해 보세요.
|
01장. 사용자 인터페이스
_001 명령어 옵션 처리하기 _002 키보드에서 Ctrl _003 키보드에서 사용자 키 입력을 획득해서 변숫값으로 이용하기 _004 암호 입력 시 사용자 키 입력을 표시하지 않기 _005 사용자 키 입력을 한 글자만 받기( Enter 키 불필요) _006 파일을 읽어서 처리할 때 키보드에서 입력받기 _007 선택식 메뉴를 표시해서 입력된 숫자값 처리하기 _008 표시 문자 색 변경하기 _009 달력을 이용해 특정 날짜의 로그 파일 삭제하기 _010 파일 압축 시 실행 상태를 표시하는 진행바 표시하기 02장. 변환 처리 _011 실행 시 변숫값이 비어 있을 때 기본값을 정의해서 설정하기 _012 지역 변수를 함수 안에 정의해서 호출한 곳의 변수가 파괴되지 않게 하기 _013 HTML 파일에서 특정 속성값 얻기 _014 값이 정수인지 확인해서 계산하기 _015 작은따옴표 안에서 작은따옴표 쓰기 _016 변수나 함수를 외부 파일로 작성하기 _017 문장 속 공백문자를 포함한 문자열 변수를 인수로 쓰기 _018 HTML 파일에서 태그 속에 적힌 주석을 추출해서 그대로 실행하기 _019 언더스코어 등을 포함한 문자열에서 변수를 명확하게 구분하기 _020 명령어 출력 결과를 파일명에 포함해서 그 파일명을 대상으로 명령어를 실행할 때 보기 쉽게 하기 _021 미정의 변수를 에러로 처리해서 실수 방지하기 _022 히어 도큐먼트에서 변수 확장하지 않고 그대로 $str처럼 표시하기 03장. 파일 처리 _023 절대 경로, 상대 경로 관계없이 같은 동작하기 _024 명령어 사용법을 표시할 때 현재 파일명 표시하기 _025 디렉터리 이동한 다음 간단히 원래 장소로 돌아가기 _026 디렉터리에 있는 파일과 디렉터리 수 조사하기 _027 파일 내용을 삭제해서 빈 파일로 만들기 _028 신규 파일을 만들지 않고 이미 있는 파일만 파일 갱신일을 바꾸기 _029 여러 HTML 파일에서 title 태그만 추출해서 각각 다른 파일로 출력하기 _030 특정 디렉터리에서 _031 작업 파일 디렉터리에서 _032 로그 파일이 엄청 많은 디렉터리에서 파일들에 명령어를 일괄 실행하기 _033 파일을 백업할 때 파일명에 날짜 넣기 _034 파일들을 다른 디렉터리에 동기화해서 백업처리하기 _035 로컬 디렉터리에 파일을 만들지 않고 직접 원격 호스트에 아카이브하기 _036 중요한 파일을 암호 걸어서 zip으로 아카이브하기 _037 gzip 명령어로 압축률 높이기 _038 tar 아카이브할 때 일부 파일이나 디렉터리 제외하기 _039 tar 아카이브에 파일 추가하기 _040 파일 퍼미션과 타임 스탬프 등 원래 파일 속성을 유지한 채 파일 복사하기 _041 HTML 파일인 .htm과 .html 확장자를 txt로 일괄 변경하기 _042 처리 시작 전에 실행 권한을 확인해서 정상 동작이 가능한지 확인 후 실행하기 _043 두 파일을 비교해서 오래된 파일 삭제하기 _044 두 디렉터리를 비교해서 한쪽에만 있는 파일 표시하기 _045 디렉터리에 있는 서브디렉터리들의 디스크 사용량 조사하기 _046 작업 파일을 만들 때 내용을 읽지 못하도록 보안 대책 세우기 _047 바이너리 파일에 포함된 문자열 얻기 _048 .svn 등 숨은 파일과 디렉터리만 나열하기 _049 이중 실행이 가능한 임시 파일 작성하기 _050 sed로 파일 치환 시 심볼릭 링크를 실제 파일로 바꾸지 않게 하기 04장. 날짜 처리 _051 date 명령어로 두 날짜를 비교하고 날짜차를 구하기 _052 오늘이 말일인지 판별하기 _053 한 달 전에 만든 로그 파일을 일괄 아카이브하기 _054 윤년인지 확인하기 05장. 네트워크 _055 디폴트 게이트웨이에 ping이 통하는지 확인하기(리눅스) _056 디폴트 게이트웨이에 ping이 통하는지 확인하기(FreeBSD/Mac) _057 ping으로 특정 호스트 응답 평균 시간을 취득하기 _058 arp 테이블에서 지정 IP 주소에 대응하는 MAC 주소를 표시하기 _059 호스트명으로 IP 주소 취득하기 _060 IP 주소로 호스트명을 얻기 _061 서버의 특정 포트가 열려 있는지 확인하는 스크립트 작성하기 _062 간이 TCP 서버 띄우기 _063 ftp로 자동 내려받기, 자동 올리기 _064 셸 스크립트로 CGI 실행하기 _065 지정한 크기의 파일을 만들어서 전송 속도를 측정하기 _066 IP 주소에 따른 처리 분기를 case문으로 작성하기 _067 로컬 셸 스크립트 파일을 원격 호스트에서 그대로 실행하기 06장. 텍스트 처리 _068 ID가 적힌 목록 파일에서 ID를 추출할 때 ID 끝 문자로 정렬하기 _069 텍스트 파일에서 구분자를 지정해서 컬럼 추출하기 _070 파일 앞머리의 셔뱅(shebang, #!/bin/sh 등)을 추출해서 스크립트에 따라 확장자 붙이기 _071 입력 파일 해시값을 줄마다 추가해서 출력하기 _072 CSV 파일에서 지정한 특정 레코드의 컬럼값 얻기 _073 CSV 파일에 ID 목록을 입력해서 대응하는 ID 컬럼값 얻기 _074 숫자로 된 CSV 파일에서 평균값 계산하기 _075 숫자값(CSV 파일)에서 “*”를 써서 간단한 텍스트 그래프 출력하기 _076 로그 파일 컬럼 위치를 바꿔서 출력하고 보기 쉽게 바꾸기 _077 웹 서버 로그 파일에서 특정 상태값만 취득하기 _078 시스템 로그에서 IP 주소별 접속 횟수 집계하기 _079 웹 접속 로그에서 파일별 접속 횟수 집계하기 _080 sed로 HTML 파일 속성을 바꿀 때 슬래시 이스케이프 피하기 _081 오른쪽 정렬로 숫자를 표시하는 텍스트 표 만들기 _082 정해진 자릿수 숫자에 하이픈 넣기 (우편번호 등) _083 파일 크기를 줄이기 위해 자바스크립트 파일에서 빈 줄 제거하기 _084 텍스트 파일에서 HTML 파일 만들기 _085 HTML 파일 문자 코드를 자동으로 판별해서 UTF-8로 인코딩된 파일로 바꾸기 07장. 셸 기능을 자유자재로 다루기 _086 함수나 if문 같은 히어 도큐먼트를 쓸 때 탭 정렬로 보기 좋게 만들기 _087 스크립트 실행할 때 시그널을 받아서 현재 실행 상태 출력하기 _088 HUP 시그널을 받아서 실행 중에 설정 파일을 다시 읽어들이기 _089 이상 종료해도 흔적을 남기지 않도록 종료 시 작업 파일을 삭제하는 뒷처리하기 _090 늘 지정한 환경 변수를 설정해서 명령어를 실행하도록 래퍼 스크립트 작성하기 _091 scp로 파일 전송할 때 CPU 이용률을 계산해서 압축 처리를 할 것인지 판단하기 _092 이식성을 고려한 외부 명령어 이용하기 _093 리다이렉트가 번잡하지 않도록 그룹핑해서 보기 좋게 만들기 _094 명령어가 실패한 시점에 종료해 스크립트 오작동 방지하기 _095 여러 URL 파일을 동시에 병렬로 내려받기 _096 여러 호스트에 병렬로 ping을 날려서 대기 시간 줄이기 _097 셸 스크립트 일부에 Perl이나 Ruby 사용하기 08장. 제어 구문 예제 _098 변수가 포함된 IP 주소 목록 파일을 읽어서 ping 명령어로 확인하기 _099 연속된 파일명을 가진 URL을 자동 생성해서 순서대로 내려받기 _100 강제 종료될 때까지 파일 내려받기를 반복해 통신 확인하기 _101 ID 컬럼을 “00001” 처럼 0으로 채운 CSV 파일에서 번호를 지정해서 값을 추출하기 _102 스크립트를 수정해서 if문 안이 비더라도 에러가 발생하지 않게 하기 _103 웹 서버에서 파일을 내려받아서 MD5 해시값 계산하기 09장. 서버 관리 _104 서버 네트워크 인터페이스와 IP 주소 일람 얻기 _105 서버에 작성된 사용자 계정 일람 얻기 _106 허가된 사용자만 스크립트 실행 가능하게 하기 _107 시스템 셧다운하기 _108 파일명으로 설치된 RPM 패키지명을 확인하기 _109 RPM 패키지명이 적힌 목록 파일에서 각각의 패키지가 설치, 갱신된 날짜를 확인하기 _110 서버 구축 패키지 목록을 셸 스크립트 형태로 관리하기 _111 특정 프로세스가 정지했는지 감시하기 _112 특정 프로세스 실행 개수가 제한값을 넘었는지 확인하기 _113 프로세스를 감시해서 다운 시 자동으로 재실행하기 _114 서버 ping 감시하기 _115 웹 접근 감시하기 _116 디스크 용량 감시하기 _117 메모리 스왑 감시하기 _118 CPU 사용률 감시하기 _119 웹 페이지 변경 감시하기 _120 MySQL 데이터베이스 백업하기 _121 MySQL 레플리케이션 감시하기 _122 MySQL 테이블을 CSV로 출력하기 _123 로그 출력을 감시해서 로그에 특정 문자열이 있으면 경고하기 10장. bash _124 셸 변수를 정수값 같은 속성으로 선언하기 _125 for 반복문을 간단히 작성하기 _126 사칙 연산을 간단하게 작성하기 _127 변수 내부 문자열을 n 번째부터 m 번째까지 추출하기 _128 변수 내부 문자열 일부를 치환하기 _129 중간 파일 없이 명령어 출력을 파일처럼 다루기 _130 파이프 처리로 각 명령어 종료 상태값 조사하기 _131 간단한 메뉴를 표시해서 사용자가 선택할 수 있게 하기 _132 정수값으로 난수 얻기 부록 _01 터미널(단말)이란 _02 유닉스 명령어 옵션 _03 셸 스크립트 변수명 _04 cron으로 스크립트 실행 _05 pv 명령어 설치 _06 dialog 명령어 설치 _07 set 명령어 이용 _08 웹 서비스 감시 _09 bash 설치 _10 참고 문헌 |
|
★ 문제 해결을 위한 최고의 실용 예제!
이 책은 실용적인 셸 스크립트를 작성하는 것이 목적입니다. 따라서 셸 스크립트 기법 설명으로 끝나지 않고 유닉스와 리눅스를 운용하고 관리할 때 자주 생기는 문제를 해결하는 실용 예제를 제시합니다. 독자가 직면한 또는 마주하게 될 문제를 해결하는 데 확실한 도움을 줄 겁니다. ★ 셸 스크립트란? 셸 스크립트는 유닉스 사용자에게 무척 친숙한 프로그래밍 언어로 로그 데이터 추출, 파일 조작, 텍스트 파일 가공 및 변형, 프로세스 제어, 서버 구축 시 패키지 관리 등 다방면에서 사용합니다. 유닉스로 작업을 한다면 셸 스크립트 지식은 필수입니다. ★ 이 책의 내용 사용자 인터페이스 / 변환 처리 / 파일 처리 / 날짜 처리 / 네트워크 / 텍스트 처리 / 셸 기능 다루기 / 제어 구문 예제 / 서버 관리 / bash 〈1장〉에서는 셸 스크립트로 명령어 옵션을 지정하는 방법과 키보드 입력을 다루는 터미널 처리, 메시지 색상 표시, 문자열로 다이얼로그 박스를 이용하는 방법을 소개합니다. 사용자에게 로그인 ID나 암호를 입력받거나 메뉴나 달력을 표시해서 선택하게 하는 대화형 셸 스크립트를 만들고 싶을 때 이 예제들을 참고하세요. 〈2장〉 변수 취급은 프로그래밍 언어의 중요한 구성 요소입니다. 셸 스크립트에서도 다양한 설정값과 파일명, 디렉터리명 조작에 변수 처리를 사용합니다. 이 장에서는 변수 정의 취급 방법과 기본값 설정, 입력값 확인, 셸 변수 작성법을 설명합니다. 값이 정수인지 확인하는 방법과 작은따옴표 사용 방법을 비롯해서 셸 스크립트에서 자주 보게 되는 사례를 들어 소개합니다. 〈3장〉에서는 셸 스크립트로 명령어 옵션을 지정하는 방법, 키보드 입력을 다루는 터미널 처리, 메시지 색상 표시, 문자열로 다이얼로그 박스를 이용하는 방법을 소개합니다. 사용자에게 로그인 ID나 암호를 입력받거나 메뉴나 달력을 표시해서 선택하게 하는 대화형 셸 스크립트를 만들고 싶을 때 이 예제들을 참고하세요. 〈4장〉 셸 스크립트는 로그 파일처럼 날짜가 파일명으로 된 파일을 대상으로 ‘말일인지 확인하기’, ‘한 달 전 날짜를 구하기’ 같은 처리를 하는데 유용하게 사용됩니다. 이 장에서는 date 명령어를 사용한 날짜 처리 예제를 소개합니다. 리눅스와 Mac과 FreeBSD는 date 명령어 서식이 다르므로 그 차이도 함께 다룹니다. 〈5장〉 유닉스 구성 요소로 네트워크는 필수적입니다. 이 장에서는 ping 명령어나 nc 명령어 등을 써서 셸 스크립트에서 네트워크를 다루는 다양한 사례를 소개합니다. 네트워크 확인이나 속도 측정, DNS 이름 확인, 파일 전송 자동화 등의 예제를 다룹니다. 〈6장〉 셸 스크립트가 자주 사용하는 sed, awk, grep 명령어를 조합해서 문자열을 가공하고 추출해봅시다. 정해진 포맷으로 출력하는 일은 스크립트로 손쉽게 자동화할 수 있습니다. 이 장에서는 CSV 파일을 대상으로 다양한 추출 예와 로그 파일에서 접속 수 리포트 집계를 하는 예를 소개합니다. 〈7장〉에서는 셸 기능인 시그널 처리나 병렬 처리, 다른 명령어를 실행하는 래퍼 문법, 외부 명령어 사용법을 다룹니다. 이 예제들을 활용하면 그저 순서대로 명령어를 나열하는 수준에서 벗어나 끼어들기나 병렬 실행 등 비동기 처리를 사용한 더 진화한 셸 스크립트를 작성할 수 있습니다. 〈8장〉 셸 스크립트는 if문이나 while문, for문을 이용한 제어 구조를 자주 사용합니다. 이 장에서는 이런 제어문을 쓴 구체적인 예제로 IP 주소 목록 파일을 읽어서 순서대로 처리하거나 무한으로 파일을 내려받는 예제 등을 설명합니다. 앞 명령어가 성공하면 다음 명령어를 실행하는 AND 연산자(&&)도 소개합니다. 〈9장〉 서버 구축을 위해 작업 안내서를 작성하는 경우가 많은데 필요한 명령어를 셸 스크립트로 작성하면 구축 작업을 자동화할 수 있습니다. 그리고 감시나 각종 확인 등 서버 운용 업무에서도 안내서를 보면서 직접 명령어를 실행하는 것보다 셸 스크립트를 미리 작성해 실행하면 잘못된 명령어를 실행하는 실수를 막을 수 있어 좋습니다. 이 장에서는 이런 서버 관리에 필요한 스크립트 예제를 소개합니다. 〈10장〉 지금까지 호환성, 이식성을 고려해서 /bin/sh로 셸 스크립트를 작성한 예를 소개했습니다. 하지만 최근 유닉스에는 bash가 기본 설치되는 경우가 많고 셸 스크립트도 bash로 작성하는 일도 많습니다. 따라서 이 장에서는 sh가 아닌 bash 스크립트로 배열과 브레이스 확장(brace expansion), 계산식 등 bash 고유 기능을 이용한 예제를 소개합니다. |