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)