Bash 활용 - 1
alias 관련
alias <name>=command 형식,
1. command 에 해당하는 내용이 두 단어 이상인 경우에반드시 작은 따옴표로 묶어야 한다.
2. alias 에서 마지막이 공백으로 끝나는 경우에 그 다음 워드를 alias 로 치환하려고 시도한다.
# alias anim=~/sipp/demo/animation/voyager
# cd anim
anim: No such file or directory 에러 발생.. 이 경우 alias cd='cd ' 로 alias 를 하게 되면 anim 을 alias 로 치환하려고 시도하기 때문에 에러가 발생하지 않고, 잘 동작하게 된다.
3. alias 해제 : unalias <name>
변수와 인용부호
" " 는 변수를 묶여진 전체 문자열을 하나의 워드로 처리, " " 를 사용하는 경우에 " " 안에서 살아남는 특수문자는 $ 이다. 즉 " " 로 묶는 경우에도 변수는 치환된다는 것을 의미한다.
' ' 는 명령행과 마찬가지로 변수 값으로 바꾼후에, 문자열을 여러개의 워드로 쪼갠다. *, $ 과 같은 문자를 그대로 넘기고 싶은 경우에는 ' ' 을 사용한다.
결론: 우선은 ' ' 를 사용하고, 문자열에 변수가 있는 경우에는 " " 을 사용한다.
fred='Four spaces between these words'
echo $fred : 빈 공백을 하나의 공백으로 변환
echo "$fred" : 빈 공백을 그대로 출력
bash 내장 변수
1. 편집모드용
HISTCMD : 히스토리 파일의 현재 번호
HISTSIZE : 메모리에 상주하는 명령어 저장 개수
HISTFILESIZE : 쉘을 종료할 때, 히스토리를 저장하는데, 해당 파일에 저장할 최대 명령 개수
HISTCONTROL : 저장될 히스토리 목록에서 제외될 내용을 결정 (ignorespace / ignoredups / ignoreboth)
ignorespace - 공백으로 시작하는 명령을 목록에서 제외
ignoredups - 겹치는 명령을 목록에서 제외
ignoreboth - 위 두가지 옵션을 모두 사용
HISTIGNORE : 명령의 패턴을 지정하고, 해당 패턴과 동일하면 목록에서 제외 ':' 으로 구분, & 는 겹치는 명령을 나타냄
l*:& 로 지정하면 l 로 시작하는 모든 명령 및 겹치는 명령은 목록에서 제외된다.
2. 메일용 변수
메일 프로그램이 항상 떠있지 않은 경우, 메일 도착여부를 bash 가 체크하여 알려주도록 되어있는데, 그와 관련된 변수이다. shopt 의 mailwarn 옵션이 켜져있어야 한다.
MAIL : 표준 유닉스 메일 프로그램을 사용하는 경우, 체크해야할 메일 파일
MAILCHECK : 메일을 체크하는 시간 간격, 60초가 기본값
MAILPATH : 수신 메일을 체크해야할 파일 목록. 여러개의 경우 : 으로 구분한다. 메일 출력메시지는 ? 다음에 기록한다.
MAILPATH="\
/usr/mail/you/aaa?aaa have mail:\
/usr/mail/you/bbb?bbb have mail."
3. 프롬프트 문자열 변수
PS1, PS2, PS3, PS4 4가지 프롬프트 변수가 존재하고, PS1 이 기본 프롬프트 변수이다. PS2 는 보조 프롬프트 문자열이고, 명령행이 다음줄로 넘어가는 경우에 사용된다. PS3 은 쉘프로그래밍, PS4 는 디버깅과 관련되어 있다.
\a ASCII bell \d 요일/월/일 형식의 날짜 \e ASCII escape \H 호스트명 \h 처음 "." 까지 호스트명 \s 실행중인 쉘이름 \T 시:분;초 형식 현재시간(12시간) \t 시:분:초 형식 현재시간(24시간) \@ am/pm 형식의 현재시간 \u 현재 사용자명
\v 배시 버전 \V 배시 릴리즈(버전+패치) \w 현재 작업 디렉토리 \W 현재 작업 디렉토리 베이스 \# 현재 명령 번호 \! 현재 히스토리 번호 \$ UID 0 인 경우 #, 그외에는 $ 출력 \nnn 8진수 문자코드 \\ 역슬래시 출력 \[ 터미널 제어와 같은 비출력용 문자열의 시작
\] 비출력용 문자 종
4. 표준변수
많은 어플이 사용하여 표준이 된 환경변수
COLUMNS : 디스플레이의 열 개수
EDITOR : 사용하는 편집기 경로명
LINES : 디스플레이 행 개수
SHELL : 실행중인 셀 경로명
TERM : 사용중인 터미널 종류
5. 기타
CDPATH : 자주 이동하는 디렉토리를 설정해놓으면 cd doc 명령으로 어느 위치에서든지 $CDPATH/doc 으로 바로 갈 수 있다. 단 현재 디렉토리에 doc 디렉토리가 없는 경우에, 즉 현재 디렉토리가 우선이다.
shopt cdalbe_vars : cd 의 인자를 변수로 가정. cd anim --> cd ~/sipp/demo/animation/voyager 로 확장
내장명령
help : 내장 명령어 에 대한 도움말
type : 명령어의 type 에 대해서 보여준다. Display information about command type.
hash : 명령어의 위치를 기억하고 있는 결과 및 얼마나 hit 되었는지를 보여준다. Remember or display program locations.
export : export 된 목록을 설정하거나 보여준다. Set export attribute for shell variables
echo : Write arguments to the standard output.
-e : 역슬래시 문자를 인식하도록
-n : newline 을 뒤에 추가하지 않음
command: 간단한 command 를 실행하거나 command 에 대한 정보를 출력해준다.
console command 요약
cut
# cut - remove sections from each line of files
cut -d: -f1 < /etc/passwd | sort
/etc/passwd 의 파일을 읽어서 구분자 : 로 구분하고 그렇게 구분된 첫번째 field 를 정렬해서 보여줌
sed
# sed - stream editor for filtering and transforming text
stty
# stty - change and print terminal line settings
$ stty -a
speed 38400 baud; rows 49; columns 192; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;
min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
기타 (bash shell special variables)
$$ : 현재 shell 의 pid
'IT 기술 > 프로그래밍관련' 카테고리의 다른 글
[bash] 5th - Trap Statement (0) | 2013.08.01 |
---|---|
[linux] openat / open 의 차이점 (0) | 2012.12.28 |
[bash] 4th - 명령행 옵션과 유형 변수 (0) | 2012.09.26 |
[bash] 3rd - 흐름제어 (0) | 2012.08.27 |
[bash] 2nd - 기본 쉘 프로그래밍 (0) | 2012.08.10 |