본문 바로가기
IT 기술/프로그래밍관련

bash 활용 첫번째 정리 - 명령행 편집

by 땅뚱 2012. 8. 8.

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