Chapter 01 Unix란 무엇인가? Unix란 무엇인가? ... 24 Unix의 역사 ... 25 새로운 프로그래밍 언어, C ... 27 Unix 인기를 얻다 ... 28 다중사용자 시스템이란? ... 28 셸이란 ... 29 도움말(Help) 사용법 ... 31 과제 1.1 Man 페이지 : Unix의 온라인 도움말 시스템 ... 31 과제 1.2 도움말을 검색하는 또 다른 방법 ... 41 요약 ... 44 실습 ... 45 실습 과제 ... 46 다음 장에서는 ... 47 Chapter 02 시스템 접속과 명령행의 사용 시작하며 ... 50 과제 2.1 시스템에 로그인 및 로그아웃하기 ... 50 과제 2.2 passwd 명령어로 패스워드 변경하기 ... 53 과제 2.3 안전한 패스워드 선택하기 ... 55 로그인한 다음에는 ... 57 과제 2.4 네 자신을 알라 ... 57 과제 2.5 누가 접속 중인가? ... 60 과제 2.6 그들은 지금 무엇을 하고 있는가? ... 61 과제 2.7 현재 날짜와 시간 알아보기 ... 62 요약 ... 63 실습 ... 63 실습 과제 ... 64 다음 장에서는 ... 64 Chapter 03 파일 시스템 둘러보기 계층적 파일 시스템이란 무엇인가 ... 68 과제 3.1 Unix 파일 시스템의 구성 ... 69 bin 디렉터리 ... 71 dev 디렉터리 ... 71 etc 디렉터리 ... 72 lib 디렉터리 ... 72 lost+found 디렉터리 ... 72 mnt와 sys 디렉터리 ... 73 tmp 디렉터리 ... 73 usr 디렉터리 ... 73 루트 디렉터리 아래에 저장되는 다른 항목들 ... 74 디렉터리 구분 문자(Directory Separator Characters) ... 75 상대 파일명과 절대 파일명 차이 ... 76 과제 3.2 Unix의 감춤 파일들 ... 78 과제 3.3 특별한 디렉터리 이름 '.'과 '..' ... 81 과제 3.4 env 명령어 ... 83 과제 3.5 PATH와 HOME ... 84 과제 3.6 pwd를 사용해 사용자의 현재 디렉터리 알아내기 ... 85 과제 3.7 cd 명령어를 사용한 다른 디렉터리로의 이동 방법 ... 86 요약 ... 87 실습 ... 88 실습 과제 ... 90 다음 장에서는 ... 90 Chapter 04 파일 목록과 디스크 사용량 보기 Is 명령어 ... 94 과제 4.1 Is 명령어의 모든 것 ... 94 과제 4.2 Is 명령어가 알려주는 더 많은 정보 ... 96 과제 4.3 플래그의 결합 ... 99 과제 4.4 현재의 작업 위치를 변경하지 않고 다른 디렉터리 나열하기 ... 100 Is 명령어의 특별한 플래그 ... 102 과제 4.5 Is 명령어에서 정렬 순서 바꾸기 ... 103 과제 4.6 Is로 디렉터리 트리를 재귀적으로 출력하기 ... 104 과제 4.7 보다 자세한 정보를 확인하려면 ... 105 권한 문자열 ... 106 과제 4.8 디렉터리에 -I 플래그를 적용하면? ... 107 과제 4.9 touch 명령어로 파일 생성하기 ... 110 과제 4.10 du로 디스크 공간의 사용량 검사 ... 111 과제 4.11 df로 사용 가능한 디스크 양 검사하기 ... 113 과제 4.12 gzip 프로그램으로 용량이 큰 파일 압축하기 ... 116 요약 ... 118 실습 ... 118 실습 과제 ... 119 다음 장에서는 ... 119 Chapter 05 소유(Ownership)와 권한(Permission) 파일 권한 가지고 놀기 ... 122 과제 5.1 파일에 부여된 권한 분석 ... 122 과제 5.2 디렉터리의 권한 설정 ... 128 과제 5.3 chmod 명령으로 파일과 디렉터리에 설정된 권한 변경하기 ... 132 과제 5.4 chmod 명령을 사용해 파일 권한 초기화하기 ... 135 과제 5.5 숫자 표기법에 따른 권한 문자열 계산하기 ... 139 과제 5.6 umask 명령어를 사용해 파일과 디렉터리에 대한 권한의 기본값 정하기 ... 141 과제 5.7 파일이나 디렉터리에 대한 소유자 및 그룹 정보 확인 ... 145 요약 ... 146 실습 ... 147 실습 과제 ... 147 다음 장에서는 ... 148 Chapter 06 파일과 디렉터리의 생성, 이동, 이름 변경, 삭제 Unix 파일 시스템 다루기 ... 152 과제 6.1 mkdir을 이용하여 새로운 디렉터리 만들기 ... 152 과제 6.2 cp를 사용하여 파일 복사하기 ... 154 과제 6.3 mv를 사용해서 파일 이동하기 ... 157 과제 6.4 mv로 파일 이름 변경하기 ... 158 과제 6.5 rmdir을 사용하여 디렉터리 제거하기 ... 160 과제 6.6 rm을 사용하여 파일 삭제하기 ... 161 과제 6.7 rm 명령어의 위험 최소화하기 ... 163 요약 ... 165 실습 ... 166 실습 과제 ... 166 다음 장에서는 ... 167 Chapter 07 파일 들여다보기 이 파일은 대체 무슨 파일? ... 170 과제 7.1 file 명령어를 통해 파일 타입 검사하기 ... 170 과제 7.2 file 명령어로 Unix 디렉터리 살펴보기 ... 173 과제 7.3 head 명령어를 사용해 파일 앞부분 살펴보기 ... 176 과제 7.4 tail 명령어를 사용하여 파일의 뒷부분 살펴보기 ... 178 과제 7.5 cat 명령어를 사용하여 파일 내용 출력하기 ... 180 과제 7.6 more 명령어를 사용해 큰 파일의 내용 확인하기 ... 183 요약 ... 188 실습 ... 188 실습 과제 ... 188 다음 장에서는 ... 189 Chapter 08 필터, 파이프, 와일드카드 명령행 최대한 활용하기 ... 192 과제 8.1 파일 리다이렉션의 비밀들 ... 192 과제 8.2 wc 명령어를 사용하여 단어와 라인의 수 세기 ... 194 과제 8.3 sort를 사용해서 파일 안의 정보 정렬하기 ... 195 과제 8.4 파일명과 와일드카드 ... 199 과제 8.5 grep으로 파일 찾기 ... 203 과제 8.6 정규 표현식 만들기 ... 206 과제 8.7 grep 계열의 명령어들 ... 210 요약 ... 213 실습 ... 213 실습 과제 ... 214 다음 장에서는 ... 215 Chapter 09 명령행 파이프로 전달되는 데이터 분석하기 awk 프로그래밍 시스템 ... 218 과제 9.1 awk 사용법 배워보기 ... 218 파이프라인에서의 cut 명령어 활용 ... 224 과제 9.2 cut 명령어의 사용법 실습 ... 225 sed와 tr 명령어를 사용한 데이터 스트림 편집 ... 228 과제 9.3 sed와 tr을 사용한 스트림 편집 ... 228 요약 ... 232 실습 ... 232 실습 과제 ... 232 다음 장에서는 ... 233 Chapter 10 vi 편집기 Unix에서의 문서 편집 ... 236 과제 10.1 vi를 시작하고 종료하는 방법 ... 236 과제 10.2 커서의 이동 ... 241 과제 10.3 단어 및 페이지 단위 이동 ... 244 과제 10.4 i, a, o, O를 사용한 텍스트 삽입 ... 248 과제 10.5 텍스트 삭제 ... 257 요약 ... 267 실습 ... 269 실습 과제 ... 269 다음 장에서는 ... 270 Chapter 11 고급 vi 사용법 vi를 사용한 고급 편집 기법 ... 274 과제 11.1 파일 내의 패턴 탐색 ... 274 과제 11.2 vi의 콜론 명령어들 ... 280 과제 11.3 vi 명령어의 올바른 실행 방법 ... 286 과제 11.4 탐색과 치환 ... 288 과제 11.5 바꾸기 명령어들 ... 292 과제 11.6 ! 명령으로 Unix 명령어 실행하기 ... 300 vi 명령어 요약 ... 306 요약 ... 308 실습 ... 308 실습 과제 ... 308 다음 장에서는 ... 309 Chapter 12 emacs 또 하나의 인기 있는 편집기 : emacs ... 312 과제 12.1 emcas 시작과 텍스트 삽입 ... 312 과제 12.2 커서 위치 이동하기 ... 315 과제 12.3 문자나 단어 지우기 ... 320 과제 12.4 emacs에서의 탐색과 치환 ... 325 과제 12.5 emacs 안내서 및 도움말 시스템 사용하기 ... 328 과제 12.6 여러 파일 동시에 열어 작업하기 ... 331 요약 ... 334 실습 ... 334 실습 과제 ... 335 다음 장에서는 ... 335 Chapter 13 셸 입문 셸 게임 ... 338 과제 13.1 어떤 셸들이 있는가? ... 338 과제 13.2 여러분은 지금 어떤 셸을 사용 중인가? ... 342 과제 13.3 다른 셸을 사용하려면? ... 344 과제 13.4 셸 환경 ... 346 과제 13.5 bash 설정 파일 ... 350 요약 ... 354 실습 ... 354 실습 과제 ... 354 다음 장에서는 ... 355 Chapter 14 고급 셸 사용법 이 셸이 그 셸인가? ... 358 과제 14.1 셸 이력 관리 메커니즘 ... 358 과제 14.2 이력 관리 기능으로 사용해 입력 횟수 줄이기 ... 360 과제 14.3 명령어 앨리어스 ... 366 과제 14.4 몇 가지 강력한 앨리어스들 ... 368 과제 14.5 사용자 환경에 맞게 프롬프트를 설정하기 ... 370 요약 ... 372 실습 ... 372 실습 과제 ... 372 다음 장에서는 ... 373 Chapter 15 작업 제어(Job Control) '작업'이라는 것과 씨름하기 ... 375 과제 15.1 셸에서의 작업 제어 : 실행 중인 작업 중지시키기 ... 376 과제 15.2 전면 작업과 후면 작업 ... 379 과제 15.3 실행 중인 작업의 목록 보기 ... 384 과제 15.4 kill 명령어로 프로세스 강제 종료하기 ... 392 요약 ... 396 실습 ... 396 실습 과제 ... 397 다음 장에서는 ... 397 Chapter 16 셸 프로그래밍 개요 자신만의 명령어 만들기 ... 400 과제 16.1 셸 변수들 ... 400 과제 16.2 셸 연산 ... 403 과제 16.3 비교 함수들 ... 405 과제 16.4 조건문 ... 408 과제 16.5 순환문 ... 412 과제 16.6 bash 함수 ... 414 요약 ... 419 실습 ... 419 실습 과제 ... 420 다음 장에서는 ... 420 Chapter 17 고급 셸 프로그래밍 파일 탐색 스크립트 mylocate ... 424 과제 17.1 mylocate의 구현 ... 424 과제 17.2 내가 가진 명령어는 전부 몇 개? ... 429 과제 17.3 디스크가 대체 얼마나 남았지? ... 431 과제 17.4 셸 스크립트로 게임 만들기 ... 434 요약 ... 437 실습 ... 438 실습 과제 ... 438 다음 장에서는 ... 438 Chapter 18 인쇄 인쇄물 만들기 ... 442 과제 18.1 printers로 로컬 프린터 찾기 ... 442 과제 18.2 Ipr, Ip를 사용해 파일 출력하기 ... 446 과제 18.3 pr, col을 사용해 출력 문서 서식 잡기 ... 450 과제 18.4 프린터 큐 사용하기 ... 454 요약 ... 458 실습 ... 459 실습 과제 ... 459 다음 장에서는 ... 460 Chapter 19 파일 보관과 백업 테이프 아카이브 유틸리티 tar ... 464 과제 19.1 tar 사용법 ... 464 compress를 사용한 파일 압축 ... 470 과제 19.2 파일 크기 줄이기 ... 471 Unix 테이프 명령어 cpio ... 473 과제 19.3 cpio 맛보기 ... 473 개인 백업 솔루션 ... 476 과제 19.4 개인적 백업을 위한 명령어 활용법 ... 476 유닉스 패키지 관리자 ... 479 과제 19.5 RPM 패키지 관리자의 기본적인 사용법 ... 479 요약 ... 484 실습 ... 484 실습 과제 ... 485 다음 장에서는 ... 485 Chapter 20 이메일 세상과 상호작용하기 ... 488 과제 20.1 mailx를 이용한 이메일 읽기 ... 488 과제 20.2 mailx를 이용한 이메일 보내기 ... 495 과제 20.3 인터넷 Email 주소 ... 499 과제 20.4 보다 똑똑해진 이메일 프로그램, elm ... 503 과제 20.5 Pine 훑어보기 ... 506 요약 ... 507 실습 ... 507 실습 과제 ... 508 다음 장에서는 ... 508 Chapter 21 telnet, SSH, 그리고 ftp 시스템의 한계를 넘어서다 ... 512 과제 21.1 원격 인터넷 시스템에 접속하기 ... 512 과제 21.2 Windows와 Mac에서의 telnet ... 515 과제 21.3 SSH를 사용한 보안 접속 ... 518 과제 21.4 FTP를 사용한 파일 전송 ... 520 과제 21.5 익명 FTP 서버 사용하기 ... 525 요약 ... 530 실습 ... 530 실습 과제 ... 531 다음 장에서는 ... 531 Chapter 22 정보 및 파일 검색 대체 어디에? ... 534 과제 22.1 find 명령어와 이상한 옵션들 ... 534 과제 22.2 xargs를 이용한 find 사용 ... 539 과제 22.3 인터넷에서 파일 얻기 ... 541 요약 ... 544 실습 ... 544 실습 과제 ... 544 다음 장에서는 ... 545 Chapter 23 Perl 프로그래밍 Perl : 유연하고 강력한 프로그래밍 도구 ... 548 과제 23.1 통화 단위 변환 프로그램 ... 548 과제 23.2 -w 옵션을 사용하여 코드의 질 따져보기 ... 553 과제 23.3 온라인 Perl 도움말 ... 556 과제 23.4 다른 유용한 Perl 플래그들 ... 559 요약 ... 560 실습 ... 561 실습 과제 ... 561 다음 장에서는 ... 561 Chapter 24 GNOME과 GUI 환경 GNOME 설정하기 ... 564 과제 24.1 X11과 GNOME 시작하기 ... 564 과제 24.2 GNOME 설정 조작하기 ... 567 GNOME 프로그램들 ... 571 과제 24.3 OpenOffice.org ... 571 과제 24.4 Firefox ... 574 과제 24.5 Evolution ... 576 요약 ... 579 실습 ... 580 실습 과제 ... 581 Appendix A Unix FAQ 공백 문자를 포함한 파일명에 대해서 find l xargs를 사용하려면? ... 584 시스템에서 큰 파일들을 찾으려면? ... 585 예정된 시간에 프로그램을 실행하려면? ... 585 at 명령어 ... 586 cron ... 586 파일 권한 문제를 해결하려면? ... 587 주어진 패턴에 일치하지 않는 파일들의 목록을 보려면? ... 587 텍스트 파일에서 X번째 행부터 Y번째 행까지 추출하려면? ... 587 PATH에 새로운 디렉터리를 추가하려면? ... 588 삭제된 파일을 복구하려면? ... 589 실수로 인한 삭제를 방지하기 위한 셸 설정은? ... 589 셸 에러 중 "arg list too long"과 "broken pipe" 에러의 의미는? ... 589 telnet 대신 ssh를, ftp 대신 sftp를 사용하는 이유는? ... 590 요약 ... 590 Appendix B 아파치 웹 서버 Unix 웹 서버 다루어보기 ... 594 과제 B.1 아파치 설정 파일 확인 ... 594 과제 B.2 간단한 CGI 프로그램 작성 ... 599 과제 B.3 SSI(Server-Side Include) 프로그램 ... 602 과제 B.4 아파치 로그 파일 이해 ... 604 요약 ... 609 실습 ... 610