zsh
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
zsh [2015/01/17 01:53] – created donghee | zsh [2018/07/18 14:10] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | == zsh - the Z shell == | + | ===== zsh - the Z shell ===== |
- | 여기 저기 [http:// | + | 여기 저기 |
- | === 0. zsh로 들어가기 === | + | ==== 0. zsh로 들어가기 |
Unix로 대표되는 콘솔의 커맨드형 입력문화는 쉘이 그 대표를 하고 있습니다. 쉘의 캐릭터 라인은 자연언어와 비슷하고 기호적이여서 풍부한 표현을 할 수 있습니다. 맥킨토시를 사랑하고 | Unix로 대표되는 콘솔의 커맨드형 입력문화는 쉘이 그 대표를 하고 있습니다. 쉘의 캐릭터 라인은 자연언어와 비슷하고 기호적이여서 풍부한 표현을 할 수 있습니다. 맥킨토시를 사랑하고 | ||
Line 10: | Line 10: | ||
편리함은 익숙함이고 선택사항이기 때문에 모든 사람에게 zsh을 사용하라 권하진 않습니다. 다만 zsh을 사용함으로써 보다 편하고 시스템과의 효과적인 커뮤니케이션을 할 수 있기 때문입니다. | 편리함은 익숙함이고 선택사항이기 때문에 모든 사람에게 zsh을 사용하라 권하진 않습니다. 다만 zsh을 사용함으로써 보다 편하고 시스템과의 효과적인 커뮤니케이션을 할 수 있기 때문입니다. | ||
- | === 1. zsh의 특징 === | + | ==== 1. zsh의 특징 |
zsh은 sh, csh, tcsh, bash 등의 다른 모든 쉘의 기능을 사용가능하며 | zsh은 sh, csh, tcsh, bash 등의 다른 모든 쉘의 기능을 사용가능하며 | ||
- | * csh 형(csh, tcsh) | + | |
- | * sh 형(sh, ksh, bash, zsh) | + | * sh 형(sh, ksh, bash, zsh) |
- | zsh은 8bit clean을 지원합니다. 한글을 쓸려면 [http:// | + | zsh은 8bit clean을 지원합니다. 한글을 쓸려면 |
- | === 2. zsh의 기능 === | + | ==== 2. zsh의 기능 |
zsh에서 특별히 유용하다고 생각하는 기능만 간추렷습니다. | zsh에서 특별히 유용하다고 생각하는 기능만 간추렷습니다. | ||
- | * 프로세스 <--> 파일치환 | + | |
- | * complition | + | * complition |
- | * 간단한 CD(Change Directory) | + | * 간단한 CD(Change Directory) |
- | * 커맨드라인스택(방향키로 전의 명령을 가져온다? | + | * 커맨드라인스택(방향키로 전의 명령을 가져온다? |
==== 2.1 프로세스-파일의 치환 ==== | ==== 2.1 프로세스-파일의 치환 ==== | ||
- | zsh에서 | + | zsh에서 |
- | {{{ | + | < |
% vi=(finger) | % vi=(finger) | ||
- | }}} | + | </ |
finger의 내용을 vi로 편집합니다. | finger의 내용을 vi로 편집합니다. | ||
- | {{{ | + | < |
% sort +2 -n data1 > data1_sort | % sort +2 -n data1 > data1_sort | ||
% sort +2 -n data2 > data2_sort | % sort +2 -n data2 > data2_sort | ||
% compare.pl data1_sort data2_sort | % compare.pl data1_sort data2_sort | ||
- | }}} | + | </ |
은 zsh위의 기능을 사용하면 아래와 같습니다. | 은 zsh위의 기능을 사용하면 아래와 같습니다. | ||
- | {{{ | + | < |
% compare.pl =(sort +2 -n data1) =(sort +2 -n data2) | % compare.pl =(sort +2 -n data1) =(sort +2 -n data2) | ||
- | }}} | + | </ |
참 편리하죠? | 참 편리하죠? | ||
Line 48: | Line 48: | ||
==== 2.2 file selection ==== | ==== 2.2 file selection ==== | ||
보통 쉘에서 .sh 만 출력할때 | 보통 쉘에서 .sh 만 출력할때 | ||
- | {{{ | + | < |
% ls *.sh | % ls *.sh | ||
- | }}} | + | </ |
이렇게 하는데 zsh은 뒤에 ()를 붙여서 ''' | 이렇게 하는데 zsh은 뒤에 ()를 붙여서 ''' | ||
- | {{{ | + | < |
- | % chmod 755 `ls -l * | awk '/ | + | % chmod 755 '' |
- | }}} | + | </ |
- | awk를 사용하여 | + | awk를 사용하여 |
흐흐 그런데 zsh에서는 -_-)v 다음과 같습니다 | 흐흐 그런데 zsh에서는 -_-)v 다음과 같습니다 | ||
- | {{{ | + | < |
% chmod 755 *(x) | % chmod 755 *(x) | ||
- | }}} | + | </ |
그외에도 zsh의 막강한 파일관리는 감동입니다. | 그외에도 zsh의 막강한 파일관리는 감동입니다. | ||
- | * a로 시작되는 디렉토리 : a*(/) | + | |
- | * .bashrc 나 .vimrc 같은 프로그램 시작환경 화일 : .*(.) | + | * .bashrc 나 .vimrc 같은 프로그램 시작환경 화일 : .*(.) |
- | * 현재 디렉토리 아래의 파일의 선택은 : **/* | + | * 현재 디렉토리 아래의 파일의 선택은 : **/* |
==== 2.3 cd(change directory) ==== | ==== 2.3 cd(change directory) ==== | ||
Line 74: | Line 74: | ||
.zshrc에다가 setopt autopushd를 설정하고 alias gd=' | .zshrc에다가 setopt autopushd를 설정하고 alias gd=' | ||
''' | ''' | ||
- | {{{ | + | < |
HISTSIZE=200 #history 기능을 사용하기위해 세줄을 추가한다. | HISTSIZE=200 #history 기능을 사용하기위해 세줄을 추가한다. | ||
HISTFILE=~/ | HISTFILE=~/ | ||
Line 81: | Line 81: | ||
setopt autopushd #추가한 부분 | setopt autopushd #추가한 부분 | ||
alias gd=' | alias gd=' | ||
- | }}} | + | </ |
그럼 사용해보도록 하죠. | 그럼 사용해보도록 하죠. | ||
- | {{{ | + | < |
% cd /foo | % cd /foo | ||
% cd /usr/local | % cd /usr/local | ||
Line 95: | Line 95: | ||
% pwd | % pwd | ||
/foo | /foo | ||
- | }}} | + | </ |
흐흐 쓸만하네요. | 흐흐 쓸만하네요. | ||
Line 102: | Line 102: | ||
컴파일할때나 또는 뮤자게 긴 커맨드를 입력했는데, | 컴파일할때나 또는 뮤자게 긴 커맨드를 입력했는데, | ||
그럼 다음의 예와 함께 살펴보도록 하죠. | 그럼 다음의 예와 함께 살펴보도록 하죠. | ||
- | {{{ | + | < |
% gcc -o foo -O foo.c -lm -lnsl -lsocket -l | % gcc -o foo -O foo.c -lm -lnsl -lsocket -l | ||
- | }}} | + | </ |
아..-_- foo.c위치가 여기가 아니지 아.나 zsh쓰지(ㅋㅋ) | 아..-_- foo.c위치가 여기가 아니지 아.나 zsh쓰지(ㅋㅋ) | ||
그러면 M-q(or ESC-q)를 입력하면 | 그러면 M-q(or ESC-q)를 입력하면 | ||
- | {{{ | + | < |
% _ | % _ | ||
- | }}} | + | </ |
이렇게 커맨드를 stack에 저장하지...그리고 foo.c의 위치를 제대로 찾아야지.. | 이렇게 커맨드를 stack에 저장하지...그리고 foo.c의 위치를 제대로 찾아야지.. | ||
- | {{{ | + | < |
% cd / | % cd / | ||
- | }}} | + | </ |
foo.c가 있는곳으로 이동한고 엔터를 치면 M-q로 stack에 저장했던 command가 나타납니다(흐흐 예수의부활!) | foo.c가 있는곳으로 이동한고 엔터를 치면 M-q로 stack에 저장했던 command가 나타납니다(흐흐 예수의부활!) | ||
음..이와 관련된 팁으로 man이나 help페이지를 볼때 man command 치기 귀찮죠? zsh에서는 | 음..이와 관련된 팁으로 man이나 help페이지를 볼때 man command 치기 귀찮죠? zsh에서는 | ||
- | {{{ | + | < |
% command[M-h] | % command[M-h] | ||
- | }}} | + | </ |
이렇게 command 치구 M-h를 누루면 man command와 동일합니다. | 이렇게 command 치구 M-h를 누루면 man command와 동일합니다. | ||
- | === 응용 팁 === | + | ==== 응용 팁 ==== |
1. cd를 치기 귀찮아~ | 1. cd를 치기 귀찮아~ | ||
Line 132: | Line 132: | ||
4. ./configure --libraries=/ | 4. ./configure --libraries=/ | ||
'' | '' | ||
- | 5. file `which ls`를 간단히? | + | 5. file '' |
'' | '' | ||
6. fix-01.gz ~ fix-11.gz 중에서 4~10만 패치하고 시포 | 6. fix-01.gz ~ fix-11.gz 중에서 4~10만 패치하고 시포 | ||
Line 150: | Line 150: | ||
13. 프롬프트를 좀더 멋지게 할 수 없나요? | 13. 프롬프트를 좀더 멋지게 할 수 없나요? | ||
'' | '' | ||
- | {{{ | + | < |
PROMPT=" | PROMPT=" | ||
RPROMPT=" | RPROMPT=" | ||
- | }}} | + | </ |
14. setopt hist_ignore_space 이옵션을 켜두면 커맨드라인 앞에 스페이스를 넣어두면 history에 기록되지 않습니다. | 14. setopt hist_ignore_space 이옵션을 켜두면 커맨드라인 앞에 스페이스를 넣어두면 history에 기록되지 않습니다. | ||
15. ./myprogram |./myfilter 와 같은 pipe커맨드 또는 alias커맨드를 실행할때 time에 관한 옵션을 넣을수 있나요? | 15. ./myprogram |./myfilter 와 같은 pipe커맨드 또는 alias커맨드를 실행할때 time에 관한 옵션을 넣을수 있나요? | ||
- | {{{ | + | < |
tcsh% alias la 'ls -a' | tcsh% alias la 'ls -a' | ||
tcsh% repeat 3 la | tcsh% repeat 3 la | ||
Line 167: | Line 167: | ||
. .. . hoge foo | . .. . hoge foo | ||
잘된다 ^^ | 잘된다 ^^ | ||
- | }}} | + | </ |
- | 16. zsh는 | + | 16. zsh는 |
17. escape sequence 을 모아두는방법 : %{ … } | 17. escape sequence 을 모아두는방법 : %{ … } | ||
18. | 18. | ||
- | {{{ | + | < |
time zsh -c " | time zsh -c " | ||
- | }}} | + | </ |
수행시간 측정하기. tcsh이랑 zsh는 repeat 명령이 있는데, bash는 없는것인가? | 수행시간 측정하기. tcsh이랑 zsh는 repeat 명령이 있는데, bash는 없는것인가? | ||
- | === 추천옵션 (.zshrc에 넣어두면 편리하죠) === | + | ==== 추천옵션 (.zshrc에 넣어두면 편리하죠) |
man zsh 하면 옵션이 무지 많은데 어떤것이 편리한지 모르겠죠? | man zsh 하면 옵션이 무지 많은데 어떤것이 편리한지 모르겠죠? | ||
- | {{{ | + | < |
### | ### | ||
# Set shell options | # Set shell options | ||
Line 189: | Line 189: | ||
setopt extended_glob list_types no_beep always_last_prompt | setopt extended_glob list_types no_beep always_last_prompt | ||
setopt cdable_vars sh_word_split auto_param_keys | setopt cdable_vars sh_word_split auto_param_keys | ||
- | }}} | + | </ |
---- | ---- | ||
- | [http:// | + | [[http:// |
---- | ---- | ||
- | zsh은 [http:// | + | zsh은 |
- | [http:// | + | [[[[http:// |
- | seealso [http:// | + | seealso |
zsh.1421459633.txt.gz · Last modified: 2018/07/18 14:09 (external edit)