블로그 이미지
신세계 SSG.COM / IT개발 1팀 / 상품개발담당 / 김지영 FreeEnd

카테고리

전체 (81)
끄적끄적 (13)
News (1)
Movie (11)
Security (1)
Design Patterns (2)
Operating System (4)
Database (8)
Framework (4)
Solution (7)
Language (1)
Web (4)
Lib (3)
TEST_Tools (4)
ETC... (7)
Software Factory (0)
Total193,648
Today32
Yesterday92


달력

« » 2017.08
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

공지사항

글 보관함

'Operating System/Linux 계열'에 해당되는 글 4건

  1. 2010.09.18 Cygwin
  2. 2010.06.29 Linux : 심볼릭 링크 설정
  3. 2008.09.19 [UNIX] 윈디하나의 솔라나라: TOP
  4. 2008.07.25 [Linux] 고급 Bash 스크립팅 가이드

Cygwin 이란.
 나도 궁금하다. 그래서 찾아봤다.
역시 새로운 분야는 아무것도 몰라도 읽어 보는 것만으로도 굉장히 도움이 된다. 이해 안되도 이 Cygwin을 사용하려면 한번씩 읽어 보기 바란다.

Cygwin이란 (1/3)  http://blog.naver.com/signal97/108909214
Cygwin이란 (2/3)  http://blog.naver.com/signal97/108918334
Cygwin이란 (3/3)  http://blog.naver.com/signal97/108926759

출처 : http://blog.naver.com/signal97/108909214 

이곳에 Cygwin의 설치까지 전반적인 내용이 들어있으니 궁금하면 읽어 보시기 바란다. 지영옹.
저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 지영옹 FreeEnd

심볼릭 링크

   다른 위치에 있는 파일, 혹은 디렉토리를 현재 디렉토리에 바로가기 형태로 연결하는 기능.



명령어

  cp -s [원본파일명] [심볼릭파일명]
  ln  -s [원본파일명] [심볼릭파일명]
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 지영옹 FreeEnd

윈디하나의 솔라나라: TOP

최종 갱신일: 2008-06-03, 이 문서는 윈디하나의 솔라나라, http://www.solanara.net/에서 최근에 갱신된 문서를 찾을 수 있다.

유닉스에서 시스템 상태를 간략하게 볼 수 있는 대표적인 프로그램인 TOP에 대한 설명이다.

1. 설치

http://sourceforge.net/projects/unixtop/ 에서 top-3.7.tar.gz 을 받는다.
root@wl ~ # tar xvfz top-3.7.tar.gz
root@wl ~ # cd top-3.7
root@wl ~/top-3.7 # ./configure
메시지 생략
config.status: creating top.1
config.status: creating config.h
root@wl ~/top-3.7 # make
메시지 생략
cc -DHAVE_CONFIG_H -I. -I. -g -v -o top color.o commands.o display.o hash.o s
creen.o top.o username.o utils.o version.o m_sunos5.o -lm -ltermcap -lkvm -lkst
at -lelf
root@wl ~/top-3.7 # make install
메시지 생략
./install-sh -c -m 755 \
top /usr/local/bin/top
root@wl ~/top-3.7 #

2. 화면 설명

root@wl ~ # top
last pid:1) 14149; load avg:2) 0.03, 0.06, 0.08;; up 46+07:54:14 15:57:473)
56 processes: 55 sleeping, 1 on cpu4)
CPU states: 97.6% idle, 1.4% user, 1.0% kernel, 0.0% iowait, 0.0% swap5)
Kernel: 224 ctxsw, 7 trap, 232 intr, 230 syscall, 7 flt8)
Memory: 2048M phys mem, 1873M free mem, 2048M swap, 2048M free swap6)
This terminal can only display 18 processes9)
PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND7)
14133 nobody 27 59 0 97M 14M sleep 0:00 0.80% httpd
13541 mysql 13 59 0 341M 52M sleep 3:30 0.73% mysqld
14137 root 1 59 0 5660K 2324K sleep 0:00 0.59% sshd
14149 windy 1 59 0 2644K 1456K cpu 0:00 0.37% top
14139 windy 1 59 0 2612K 1668K sleep 0:00 0.03% bash
450 root 7 59 0 3012K 2388K sleep 0:00 0.03% mibiisa
14134 root 1 59 0 4440K 2080K sleep 0:00 0.02% sendmail
13560 root 1 59 0 1204K 872K sleep 0:08 0.01% cronolog
13555 root 1 59 0 89M 8916K sleep 0:00 0.00% httpd
237 root 1 59 0 3448K 1416K sleep 0:01 0.00% in.named
14136 nobody 27 59 0 89M 2536K sleep 0:00 0.00% httpd
13701 root 1 59 0 5660K 2324K sleep 0:00 0.00% sshd
456 root 2 59 0 3612K 2200K sleep 0:00 0.00% snmpXdmid
461 root 2 59 0 3920K 2112K sleep 0:00 0.00% vold
257 root 18 59 0 3096K 2028K sleep 0:00 0.00% nscd
1)마지막으로 할당된 PID. 따라서 PID에서 가장 큰 값을 의미하지는 않는다. 단지 얼마나 빨리 프로세스가 생성되는지 대략적인 가늠만 할 수 있을 뿐이다. (PID는 순차적으로 할당되지 않는다) root권한으로 top을 실행해야 표시된다.
2)로드 평균. 로드란 시스템 스케줄러의 런 큐에 대기하고 있는 쓰레드의 개수로, 일반적으로 시스템의 부하는 로드값이 높은 것을 의미한다. (항상 그런것은 아니다) 왼쪽부터 차례대로, 1분, 5분, 15분간 평균 로드값을 나타낸다.
3)시스템 가동시간및 현재 시간
4)모든 프로세스 상태 개요. 총 개수와 각각의 상태를 가리킨다.
- On cpu:현재 CPU에 의해 실행되고 있는 프로세스 개수
- Running: 실행할 수 있는 프로세스 개수. On CPU와 Running인 프로세스가 많다는 것은 시스템에 부하가 많다는 뜻이다.
- Sleeping: 외부 이벤트/입력을 기다리고 있는 프로세스 개수
- Stopped: Ctrl+Z와 같은, 정지 시그널로 정지된 프로세스 개수
- Swapped: 디스크로 스왑되고 있는 프로세스 개수. 0이어야 한다.
- Zombie: 종료되었지만, 다른 이유로 정리되지 않고 기다리고 있는 프로세스 개수. 작은값 또는 0이어야 한다.
5)CPU 상태.
- Idle: 아무것도 하고 있지 않음
- User: 유저 프로세스 실행중
- Kernel: 커널 시스템 콜, 페이지 폴트, 인터럽트 수행중
- IOwait: I/O 를 위해 기다리는 중
- Swap: 스와핑 또는 페이징하는중
6)메모리 상태
- phys mem: 프로세스가 사용할 수 있는 물리 메모리 양.(커널에 의해 예약된 영역 제외)
- free mem: 남은 메모리 양.
- total swap: 사용된 스왑 메모리 양.
- free swap: 남은 스왑 메모리 양.
7)프로세스 상태
- PID: 프로세스 아이디
- USERNAME: 프로세스 소유자 이름
- LWP/THR: LWP또는 쓰레드 개수 (Light-Weight Process, SUN은 쓰레드와 LWP는 다르다!고 하지만 유닉스 쓰레드가 LWP를 이용해 구현되기 때문에 비슷한 개념인건 맞다) 개수. 모든 프로세스는 1개 이상의 쓰레드를 가진다.
- PRI: 우선순위. 유저프로세스의 경우 범위는 0~59이다. 사용자가 주는 데이터를 바탕으로 커널에 의해 자동으로 결정된다. 값이 높을 수록 우선순위가 높다. 이 값에 신경쓸필요는 없다. 솔라리스 커널은 똑똑하니 말이다.
- NICE: 우선순위를 결정하기 위해 커널에서 참고하는 값. 나이스 값이다. 사용자가 설정할 수 있으며 설정하지 않으면 0이다. 이 값이 낮다면 우선순위가 높게 책정될지도 모른다. (이렇게 모호하게 서술한 이유가, 솔라리스 커널에서 우선순위는 NICE값을 고려해 커널 맘대로 설정하기 때문이다) 솔라리스에서는 -20~20까지 설정할 수 있다.
- SIZE: 프로세스에 할당된 총 메모리의 양이다. 물리메모리 + 가상 메모리 + ... 의 값이다.
- RES: 프로세스에 의해 사용된 물리 메모리의 양이다. RES는 RESident set size의 약어이다.
- STATE: 프로세스 상태. CPU, RUN, SLEEP, STOP, SWAP, ZOMB가 있다. 자세한 내용은 [4) 프로세스 상태]를 참고하자.
- TIME: 프로세스가 사용한 CPU시간이다. 1:00 이라 되어있으면 해당 프로세스는 1분동안 CPU를 100% 소모한것과 같다. 1000분이 넘으면 H(시간)으로 단위가 바뀐다. [127.4H]라면 127시간 + 0.4시간(24분) 이라는 뜻이다.
- FLTS: TOP이 실행된 이후 생긴 메이저 페이지 폴트 회수. 일반적인 경우 0에 가까워야 한다.
- CPU: 현재 프로세스의 총 CPU 대비 사용률. TOP는 이를 기준으로 프로세스 목록을 정렬한다. 1개의 CPU가 있는 시스템에서 [30%]라 되어있으면 해당 프로세스는 전체의 30%를 사용하고 있는 것이다. 4개의 CPU가 있는 시스템에서 [25%]라 나왔다면, 해당 프로세스는 CPU 1개를 100% 소비하고 있다고 해석된다.
- COMMAND: 프로세스를 실행한 커맨드.
8)커널 개요 (단위: 초, TOP 3.7이상)
- ctxsw: 컨텍스트 스위치
- trap: 트랩 회수
- intr: 인터럽트
- syscall: 시스템콜
- fork: fork, vfork 회수
- flt: 페이지 폴트
- pgin: 페이지인
- pgout: 페이지아웃
9)터미널 라인 표시. 실행시 [이 터미널은 18개의 프로세스만을 표시할 수 있습니다]라고 안내해준다.

3. 사용

  • 실행옵션
    • -C, --color: 컬러 사용 안함
    • -I, --idle-procs: 유휴 프로세스 표시 안함(기본값은 표시)
    • -S, --system-procs: 시스템 프로세스(페이징데몬, 스와핑 데몬등등) 보임(기본값은 표시 안함)
    • -T, --tag-names: 사용 가능한 컬러 태그 목록 보임
    • -a, --all: 모든 포로세스를 보임("-d all all" 과 동일)
    • -b, -n, --batch: 배치모드. 표준 출력이 터미널이 아니거나 더미 터미널인 경우 기본값. 터미널로부터의 모든 입력 무시.(인터럽트 캐릭터 예를 들어 Ctrl+C등은 유효함)
    • -c, --full-commands: 프로세스의 커맨드 라인을 모두 보임(모든 플랫폼에서 지원되지는 않음. 솔라리스에서는 지원됨)
    • -i, --interactive: 인터랙티브 모드 사용. 표준 출력이 터미널인 경우 기본값.
    • -q, --quick: top을 -20으로 renice 한 후 실행. 루트로만 가능.
    • -u, --uids: UID를 사용자이름으로 변경하지 않음.
    • -v, --version: 버전 출력
    • -d count, --displays count: 지정한 회수만큼 출력하고 종료. 터미널에서의 기본값은 'infinity'. 수치 외에 'infinity', 'maximum', 'all' 을 사용할 수 있다.
    • -s time, --delay=time: 갱신 지연 시간(초). 기본값은 5.
    • -o field, --sort-order=field: 정렬 순서. 컬럼명(7))을 소문자로 써주면 된다. (예: cpu, size, res, time)
    • -U username, --user=username: 해당 사용자의 프로세스만 보임
  • 대화형 명령
    • h, ?: 도움말, 버전정보
    • C: 컬러 사용 여부
    • c: 지정한 문자열을 포함하는 커맨드를 가진 프로세스만 표시. 빈 문자열의 경우 모든 프로세스를 표시. (모든 플랫폼에서 지원되지는 않음. 솔라리스에서는 지원됨)
    • d: 지정된 회수만큼 프로세스를 보임. 1이면 한번 보여주고 바로 종료됨. 기본값은 무한대.
    • f: 풀 커맨드 라인을 보일것인지 여부
    • H: 쓰레드를 각각의 라인마다 보여줌. (모든 플랫폼에서 지원되지는 않음. 솔라리스에서도 지원안됨. [prstat -L]사용할것)
    • i, I: 유휴 프로세스를 보일 것인지 여부
    • k: 시그널 전송. k를 누른 후 kill 명령 뒤의 내용을 써준다
    • M: 메모리 사용량을 기준으로 정렬. [o size] 대화형 명령의 약어임
    • m: 또다른 디스플레이 모드를 사용함. (모든 플랫폼에서 지원되지는 않음. 솔라리스에서도 지원안됨)
    • N: PID 기준으로 정렬. [o pid] 대화형 명령의 약어임
    • n, #: 표시할 프로세스의 개수를 지정. n을 누른 후 숫자를 입력한 다음 엔터를 입력한다.
    • o: 정렬 순서를 변경. (모든 플랫폼에서 지원되지는 않음. 솔라리스에서는 지원됨) top 실행시 보이는 컬럼명을 소문자로 입력하고 엔터를 입력한다. 컬럼의 종류는 플랫폼마다 다르지만 cpu, res, size, time 은 보통 존재할것이다. 기본값은 cpu.
    • P: CPU사용량을 기준으로 정렬 [o cpu] 대화형 명령의 약어임
    • q: top 종료
    • r: 프로세스 우선순위를 결정. r을 누른 후 renice 명령 뒤의 내용을 써준다.
    • s: 표시할 시간의 지연시간을 결정. 숫자를 입력한다
    • T: CPU 사용시간을 기준으로 정렬. [o time] 대화형 명령의 약어임
    • U: 사용자명, UID 중 어느것으로 표시할 것인지 여부
    • u: 지정한 사용자가 소유한 프로세스만 표시. [+]인 경우 모든 사용자가 표시됨
  • 컬러 사용
    • 컬러는 환경변수인 TOPCOLORS 에 내용을 세팅하면 top을 실행할때 표시된다.
    • 환경변수의 내용은 "컬럼코드=[최소],[최대]#색상번호[;색상번호...][:컬럼코드=[최소],[최대]#색상번호[;색상번호...] ...]"의 형식이다.
    • 컬럼코드는 [top -T]명령을 통해 알아낼 수 있으며, 색상번호는 ANSI코드와 같다. 이는 color.h에 나와있으며 다음과 같다.
      속성                   글자 색상 번호               배경 색상 번호          
      0 초기화 30 검은색 40 검은색
      1 밝게 31 붉은색 41 붉은색
      2 흐릿하게 32 녹색 42 녹색
      4 아랫줄 33 노란색 43 노란색
      5 깜빡임 34 파란색 44 파란색
      7 반전 35 붉은자주색(Magenta) 45 붉은자주색(Magenta)
      8 숨김 36 맑은파란색(Cyan) 46 맑은파란색(Cyan)
      37 흰색 47 흰색
    • 최소, 최대값중 로드 평균을 나타내는 값은 원래 값에 100을 곱한 값을 넣어야 한다. (소숫점 2째자리까지 표현하기 위함이다)
    • 예) 1min=500,1000#31 → 1분단위 로드에서 5.00이상 10.00이하면 붉은색으로 표시
    • 예) TOPCOLORS="1min=100,300#32:1min=300,500#33:1min=500,#31:5min=100,300#32:5min=300,500#33:5min=500,#31:15min=100,300#32:15min=300,500#33:15min=500,#31:header=,#36:memory.physmem=,100#31;1" TOP COLORS

4. 팁

- TOP을 과신하지 않는다. 편하게 실행할 수 있긴 하지만, 역시 *stat 커맨드보다는 얻을 수 있는 정보가 많지 않다.
- NICE와 PRI에 대한 설명이 복잡하게 느껴질지도 모르겠다. 한마디로 우선순위는 사용자가 임의로 정해줄 수 없다는 것이다. 그나마 다행인건 솔라리스 커널이 꽤 똑똑하게 PRI값을 정해준다는 사실이다. nice, renice, priocntl(솔라리스 8 이상) 커맨드를 참고하자.
Valid XHTML 1.0 Transitional Valid CSS! Validated by HTML Validator
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 지영옹 FreeEnd
출처 : http://kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/index.html

고급 Bash 스크립팅 가이드

Bash를 이용한 쉘 스크립팅 완전 가이드

Mendel Cooper

Brindlesoft

thegrendel (at) theriver.com

차현진

terminus (at) kldp.org

2001년 12월 16일

본 튜토리얼은 여러분이 Bash에 대해서 어떠한 사전 지식도 없다고 가정을 합니다만, 금방 중/고급 수준의 명령어들을 소개합니다(...유닉스의 슬기롭고 교훈적인 부분들을 배워 나가면서). 이 문서는 교과서나, 혼자 공부할 때 볼 수 있는 메뉴얼, 쉘 스크립팅 기술에 대한 레퍼런스및 소스로 쓰일 수 있습니다. 스크립트를 배우는 유일한 방법은 스크립트를 직접 짜 보는 것이다라는 전제하에, 연습문제와 아주 자세하게 주석 처리된 예제들로 능동적인 독자들의 참여를 유도할 것입니다.

이 문서의 최신 버전은 저자의 홈페이지에서 SGML 소스와 HTML을 "타르볼"형태로 얻을 수 있습니다. 고침 변경 사항은 change log를 참고하세요.

고친 과정
고침 0.12000년 6월 14일고친이 mc
초기 릴리스.
고침 0.22000년 10월 30일고친이 mc
버그 수정, 내용및 예제 스크립트 추가.
고침 0.32001년 2월 12일고친이 mc
메이저 업데이트.
고침 0.42001년 7월 8일고친이 mc
버그 수정, 더 많은 내용및 예제 추가 - 완전한 책 형태의 개정판.
고침 0.52001년 9월 3일고친이 mc
메이저 업데이트. 버그 수정, 내용 추가, 장과 절을 재편성.
고침 1.0.112001년 12월 16일고친이 mc
버그 수정, 재편성, 내용 추가. Stable release.

바치는 글

모든 마법의 근원인 Anita에게 이 책을 바칩니다.

차례
Part 1. 소개
1. 왜 쉘 프로그래밍을 해야 하죠?
2. #! 으로 시작하기
2.1. 스크립트 실행하기
2.2. 몸풀기 연습문제(Preliminary Exercises)
Part 2. 기초 단계
3. 종료와 종료 상태(Exit and Exit Status)
4. 특수 문자
5. 변수와 매개변수 소개
5.1. 변수 치환(Variable Substitution)
5.2. 변수 할당(Variable Assignment)
5.3. Bash 변수는 타입이 없다(untyped)
5.4. 특수한 변수 타입
6. 쿼우팅(quoting)
7. 테스트
7.1. 테스트(Test Constructs)
7.2. 파일 테스트 연산자
7.3. 비교 연산자(이진)
7.4. 중첩된 if/then 조건 테스트
7.5. 여러분이 테스트문을 얼마나 이해했는지 테스트 해보기
8. 연산자 이야기(Operations and Related Topics)
8.1. 연산자(Operators)
8.2. 숫자 상수(Numerical Constants)
Part 3. 중급 단계(Beyond the Basics)
9. 변수 재검토(Variables Revisited)
9.1. 내부 변수(Internal Variables)
9.2. 문자열 조작
9.3. 매개변수 치환(Parameter Substitution)
9.4. 변수 타입 지정: declaretypeset
9.5. 변수 간접 참조
9.6. $RANDOM: 랜덤한 정수 만들기
9.7. 이중소괄호(The Double Parentheses Construct)
10. 루프와 분기(Loops and Branches)
10.1. 루프
10.2. 중첩된 루프
10.3. 루프 제어
10.4. 테스트와 분기(Testing and Branching)
11. 내부 명령어(Internal Commands and Builtins)
11.1. 작업 제어 명령어
12. 외부 필터, 프로그램, 명령어
12.1. 기본 명령어
12.2. 복잡한 명령어
12.3. 시간/날짜 명령어
12.4. 텍스트 처리 명령어
12.5. 파일, 아카이브(archive) 명령어
12.6. 통신 명령어
12.7. 터미널 제어 명령어
12.8. 수학용 명령어
12.9. 기타 명령어
13. 시스템과 관리자용 명령어
14. 명령어 치환(Command Substitution)
15. 산술 확장(Arithmetic Expansion)
16. I/O 재지향
16.1. exec 쓰기
16.2. 코드 블럭 재지향
16.3. 응용
17. Here Documents
18. 쉬어가기
Part 4. 고급 주제들(Advanced Topics)
19. 정규 표현식(Regular Expressions)
19.1. 정규 표현식의 간략한 소개
19.2. Globbing
20. 서브쉘(Subshells)
21. 제한된 쉘(Restricted Shells)
22. 프로세스 치환(Process Substitution)
23. 함수
23.1. 복잡 함수와 함수의 복잡성(Complex Functions and Function Complexities)
23.2. 지역 변수와 재귀 함수(Local Variables and Recursion)
24. 별칭(Aliases)
25. 리스트(List Constructs)
26. 배열
27. 파일들
28. /dev 와 /proc
28.1. /dev
28.2. /proc
29. 제로와 널(Of Zeros and Nulls)
30. 디버깅
31. 옵션
32. 몇 가지 지저분한 것들(Gotchas)
33. 스타일 있게 스크립트 짜기
33.1. 비공식 쉘 스크립팅 스타일시트
34. 자질구레한 것들
34.1. 대화(interactive)형 모드와 비대화(non-interactive)형 모드 쉘과 스크립트
34.2. 쉘 래퍼(Shell Wrappers)
34.3. 테스트와 비교: 다른 방법
34.4. 최적화
34.5. 팁 모음(Assorted Tips)
34.6. 괴상한 것(Oddities)
34.7. 이식성 문제(Portability Issues)
34.8. 윈도우즈에서의 쉘 스크립팅
35. Bash, 버전 2
36. 후기(Endnotes)
36.1. 저자 후기(Author's Note)
36.2. 저자에 대해서
36.3. 이 책을 만드는데 쓴 도구들
36.3.1. 하드웨어
36.3.2. 소프트웨어와 프린트웨어
36.4. 크레딧
서지사항
A. 여러분들이 보내준 스크립트들(Contributed Scripts)
B. Sed 와 Awk 에 대한 간단한 입문서
B.1. Sed
B.2. Awk
C. 특별한 의미를 갖는 종료 코드
D. I/O와 I/O 재지향에 대한 자세한 소개
E. 지역화(Localization)
F. 샘플 .bashrc 파일
G. 도스(DOS) 배치 파일을 쉘 스크립트로 변환
H. 연습문제
I. Copyright
예 목록
2-1. cleanup: /var/log 에 있는 로그 파일들을 청소하는 스크립트
2-2. cleanup: 위 스크립트의 향상되고 일반화된 버전.
3-1. 종료/종료 상태
3-2. !으로 조건을 부정하기
4-1. 코드 블럭과 I/O 재지향
4-2. 코드 블럭의 결과를 파일로 저장하기
4-3. 최근 하루동안 변경된 파일들을 백업하기
5-1. 변수 할당과 치환
5-2. 평범한 변수 할당
5-3. 평범하고 재미있는 변수 할당
5-4. 정수? 문자열?
5-5. 위치 매개변수
5-6. wh, whois 도메인 네임 룩업
5-7. shift 쓰기
6-1. 이상한 변수를 에코하기
6-2. 이스케이프된 문자들
7-1. 무엇이 참인가?
7-2. [ ]test 의 동일함
7-3. (( ))로 산술식 테스트 하기
7-4. 산술 비교와 문자열 비교
7-5. 문자열이 인지 테스트 하기
7-6. zmost
8-1. 산술 연산자 쓰기
8-2. && 와 || 를 쓴 복합 조건 테스트
8-3. 숫자 상수 표기법:
9-1. $IFS 와 빈 칸
9-2. 타임 아웃 처리 입력
9-3. 타임 아웃 처리 입력, 한 번 더
9-4. 내가 루트인가?
9-5. arglist: $* 과 $@ 로 인자를 나열하기
9-6. 일관성 없는 $*$@의 동작
9-7. $IFS 가 비어 있을 때 $*$@
9-8. 밑줄 변수(underscore variable)
9-9. 그래픽 파일을 다른 포맷 확장자로 이름을 바꾸면서 변환
9-10. 매개변수 치환과 : 쓰기
9-11. 변수의 길이
9-12. 매개변수 치환에서의 패턴 매칭
9-13. 파일 확장자 바꾸기:
9-14. 임의의 문자열을 파싱하기 위해 패턴 매칭 사용하기
9-15. 문자열의 접두, 접미어에서 일치하는 패턴 찾기
9-16. declare를 써서 변수 타입 지정하기
9-17. 간접 참조
9-18. awk에게 간접 참조를 넘기기
9-19. 랜덤한 숫자 만들기
9-20. RANDOM 으로 주사위를 던지기
9-21. RANDOM 에 seed를 다시 지정해 주기
9-22. C 형태의 변수 조작
10-1. 간단한 for 루프
10-2. 각 [list] 항목이 인자를 두 개씩 갖는 for
10-3. Fileinfo: 변수에 들어 있는 파일 목록에 대해 동작
10-4. for 문에서 파일 조작하기
10-5. in [list]가 빠진 for
10-6. for 문의 [list]에 명령어 치환 쓰기
10-7. 이진 파일에 grep 걸기
10-8. 특정 디렉토리의 모든 바이너리 파일에 대해 원저작자(authorship)를 확인 하기
10-9. 디렉토리에 들어 있는 심볼릭 링크들을 나열하기
10-10. 디렉토리에 들어 있는 심볼릭 링크들을 파일로 저장하기
10-11. C 형태의 for 루프
10-12. 배치 모드로 efax 사용하기
10-13. 간단한 while 루프
10-14. 다른 while 루프
10-15. 다중 조건 while 루프
10-16. C 형태의 문법을 쓰는 while 루프
10-17. until 루프
10-18. 중첩된 루프
10-19. 루프에서 breakcontinue의 영향
10-20. 여러 단계의 루프에서 탈출하기
10-21. 더 상위 루프 레벨에서 계속하기(continue)
10-22. case 쓰기
10-23. case로 메뉴 만들기
10-24. case용 변수를 만들기 위해서 명령어 치환 쓰기
10-25. 간단한 문자열 매칭
10-26. 입력이 알파벳인지 확인하기
10-27. select로 메뉴 만들기
10-28. 함수에서 select를 써서 메뉴 만들기
11-1. printf가 실제로 쓰이는 예제
11-2. read로 변수 할당하기
11-3. read로 여러줄의 입력 넣기
11-4. read파일 재지향과 같이 쓰기
11-5. 현재 작업 디렉토리 변경하기
11-6. let으로 몇 가지 산술 연산을 하기.
11-7. eval의 효과 보여주기
11-8. 강제로 로그 아웃 시키기
11-9. "rot13" 버전
11-10. 위치 매개변수와 set 쓰기
11-11. 변수를 "언셋"(unset) 하기
11-12. export를 써서, 내장된 awk 스크립트에 변수를 전달하기
11-13. getopts로 스크립트로 넘어온 옵션과 인자 읽기
11-14. 데이타 파일 "포함하기"
11-15. exec 효과
11-16. 작업을 계속 해 나가기 전에 프로세스가 끝나길 기다리기
12-1. CDR 디스크를 구울 때 ls로 목차 만들기
12-2. Badname, 파일 이름에 일반적이지 않은 문자나 공백 문자를 포함하는 파일을 지우기.
12-3. inode 로 파일을 지우기
12-4. 시스템 로그 모니터링용 xargs 로그 파일
12-5. copydir. xargs로 현재 디렉토리를 다른 곳으로 복사하기
12-6. expr 쓰기
12-7. date 쓰기
12-8. 스크립트에서 두 파일을 비교하기 위해 cmp 쓰기.
12-9. 낱말 빈도수 분석
12-10. 10자리 랜덤한 숫자 만들기
12-11. tail로 시스템 로그를 모니터하기
12-12. 스크립트에서 "grep"을 에뮬레이트 하기
12-13. 목록에 들어 있는 낱말들의 유효성 확인하기
12-14. toupper: 파일 내용을 모두 대문자로 바꿈.
12-15. lowercase: 현재 디렉토리의 모든 파일명을 소문자로 바꿈.
12-16. du: 도스용 텍스트 파일을 UNIX용으로 변환.
12-17. rot13: 초허접(ultra-weak) 암호화, rot13.
12-18. "Crypto-Quote" 퍼즐 만들기
12-19. 파일 목록 형식화.
12-20. column 으로 디렉토리 목록을 형식화 하기
12-21. nl: 자기 자신에게 번호를 붙이는 스크립트.
12-22. cpio로 디렉토리 트리 옮기기
12-23. rpm 아카이브 풀기
12-24. C 소스에서 주석을 제거하기
12-25. /usr/X11R6/bin 둘러보기
12-26. basenamedirname
12-27. 인코드된 파일을 uudecode하기
12-28. 저당에 대한 월 상환액(Monthly Payment on a Mortgage)
12-29. 진법 변환(Base Conversion)
12-30. 다른 방법으로 bc 실행
12-31. seq로 루프에 인자를 만들어 넣기
12-32. 키보드 입력을 갈무리하기
12-33. 파일을 안전하게 지우기
12-34. m4 쓰기
13-1. 지움 글자(erase character) 세팅하기
13-2. 비밀스런 비밀번호: 터미널 에코 끄기
13-3. 키누름 알아내기
13-4. pidof 로 프로세스를 죽이기
13-5. CD 이미지 확인하기
13-6. 한 파일에서 한번에 파일 시스템 만들기
13-7. 새 하드 드라이브 추가하기
13-8. killall, /etc/rc .d/init.d 에서 인용
16-1. exec으로 표준입력을 재지향 하기
16-2. 재지향된 while 루프
16-3. 다른 형태의 재지향된 while 루프
16-4. 재지향된 until 루프
16-5. 재지향된 for 루프
16-6. 재지향된 for 루프(표준입력, 표준출력 모두 재지향됨)
16-7. 재지향된 if/then 테스트
16-8. 이벤트 로깅하기
17-1. dummyfile: 두 줄짜리 더미 파일 만들기
17-2. broadcast: 로그인 해 있는 모든 사람들에게 메세지 보내기
17-3. cat으로 여러 줄의 메세지 만들기
17-4. 탭이 지워진 여러 줄의 메세지
17-5. Here document에서 매개변수 치환하기
17-6. 매개변수 치환 끄기
17-7. upload: "Sunsite" incoming 디렉토리에 파일 한 쌍을 업로드
17-8. "아무개"(anonymous) Here Document
20-1. 서브쉘에서 변수의 통용 범위(variable scope)
20-2. 사용자 프로파일 보기
20-3. 프로세스를 서브쉘에서 병렬로 돌리기
21-1. 제한된 모드로 스크립트 돌리기
23-1. 간단한 함수
23-2. 매개변수를 받는 함수
23-3. 두 숫자중 큰 수 찾기
23-4. 숫자를 로마 숫자로 바꾸기
23-5. 함수에서 큰 값을 리턴하는지 테스트하기
23-6. 큰 두 정수 비교하기
23-7. 사용자 계정 이름에서 실제 이름을 알아내기
23-8. 지역 변수의 영역(Local variable visibility)
23-9. 지역 변수를 쓴 재귀 함수
24-1. 스크립트에서 쓰이는 별칭(alias)
24-2. unalias: 별칭을 설정, 해제하기
25-1. "and list"를 써서 명령어줄 인자 확인하기
25-2. "and list"를 써서 명령어줄 인자를 확인하는 다른 방법
25-3. "or lists""and list"를 같이 쓰기
26-1. 간단한 배열 사용법
26-2. 배열의 특별한 특성 몇 가지
26-3. 빈 배열과 빈 원소
26-4. 아주 오래된 친구: 버블 정렬(Bubble Sort)
26-5. 복잡한 배열 어플리케이션: 에라토스테네스의 체(Sieve of Erastosthenes)
26-6. 복잡한 배열 어플리케이션: 기묘한 수학 급수 탐색(Exploring a weird mathematical series)
26-7. 2차원 배열을 흉내낸 다음, 기울이기(tilting it)
28-1. 특정 PID와 관련있는 프로세스 찾기
28-2. 온라인 연결 상태
29-1. 쿠키 항아리를 숨기기
29-2. /dev/zero로 스왑 파일 세팅하기
29-3. 램디스크 만들기
30-1. 버그 있는 스크립트
30-2. test24, 버그가 있는 다른 스크립트
30-3. "assert"로 조건을 테스트하기
30-4. exit 잡아채기(Trapping at exit)
30-5. Control-C 가 눌렸을 때 깨끗이 청소하기
30-6. 변수 추적하기
32-1. 서브쉘 함정(Subshell Pitfalls)
34-1. 쉘 래퍼(shell wrapper)
34-2. 조금 복잡한 쉘 래퍼(shell wapper)
34-3. awk 스크립트 쉘 래퍼(shell wrapper)
34-4. Bash 스크립트에 내장된 펄
34-5. 하나로 묶인 Bash 스크립트와 펄 스크립트
34-6. 자신을 재귀적으로 부르는 스크립트
35-1. 문자열 확장
35-2. 간접 변수 참조 - 새로운 방법
35-3. 배열과 약간의 트릭을 써서 한 벌의 카드를 4명에게 랜덤하게 돌리기
A-1. manview: 포맷된 맨 페이지를 보는 스크립트
A-2. mailformat: 이메일 메세지를 포맷해서 보기
A-3. rn: 간단한 파일이름 변경 유틸리티
A-4. encryptedpw: 로컬에 암호화 되어 있는 비밀번호로 ftp 사이트에 파일을 업로드하는 스크립트
A-5. copy-cd: 데이타 CD를 복사하는 스크립트
A-6. days-between: 두 날짜 사이의 차이를 계산해 주는 스크립트
A-7. behead: 메일과 뉴스 메세지 헤더를 제거해 주는 스크립트
A-8. ftpget: ftp에서 파일을 다운로드 해 주는 스크립트
A-9. password: 8 글자짜리 랜덤한 비밀번호 생성 스크립트
A-10. fifo: 네임드 파이프를 써서 매일 백업해 주는 스크립트
A-11. 나머지 연산자로 소수 생성하기
A-12. tree: 디렉토리 구조를 트리 형태로 보여주는 스크립트
A-13. 문자열 함수들: C 형태의 문자열 함수
A-14. 객체 지향 데이타 베이스
F-1. 샘플 .bashrc 파일
G-1. VIEWDATA.BAT: 도스용 배치 파일
G-2. viewdata.sh: VIEWDATA.BAT 의 스크립트 버전
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 지영옹 FreeEnd

티스토리 툴바