일상적인 사용을 위해 zsh로 전환 할 가치가 있습니까? [닫은]


192

Mac OS X의 기본 셸은 bash입니다. 일반적으로 사용하게되어 기쁩니다. 나는 그것을 당연한 것으로 받아들입니다. 그래도 더 많은 것을 자동 완성하면 정말 좋을 것 zsh입니다.이 점에서 좋은 소식을 들었습니다 . 그러나 명령 줄의 수명이 그다지 나쁘지 않기 때문에 명령 줄 사용을 조금씩 향상시키기 위해 설정을 다루는 데 시간을 할애하지 않습니다.

(알다시피, bash더 똑똑하게 자동 완성되도록 구성 할 수도 있습니다. 그것은 내가 열망하지 않은 구성입니다.)

zsh소수의 경우에도로 전환하면 인생이 더 쉬워 집니까? 아니면 좋은지 배우기 위해 시간을 내면 더 나은 껍질 입니까? (예도 좋을 것입니다 :))


@ Rodney Amato 와 @ Vulcan Eager 는 각각을 고수 bash하고 전환 해야하는 두 가지 이유를 제시 합니다 zsh. 둘 다 조사해야 할 것 같습니다! 오 잘:)

논쟁의 양쪽에서 의견을 가진 사람이 있습니까?


14
zsh는 (거의) bash의 상위 집합이므로 zsh로 이동하여 bash처럼 사용할 수 있습니다. 그런 다음 한 번에 zsh 보석을 조금 배울 수 있습니다.
orip

bash 커스터마이징이 약간 있고 emacs 내부에서 쉘을 자주 사용한다면, 이것은 사소한 것처럼 보이지 않습니다. 관련 질문을 게시했습니다 : stackoverflow.com/questions/13326879/…
justingordon

단지 내가 zsh을에 대해 싫어하는 것은 당신이해야합니다 (우분투에 적어도가) (나중에 어설프게에서와 할 수있는 몇 가지 제정신이 기본적으로 제공하는 대신의)를 처음 시작할 때 스스로를 구성 할 수 있다는 것입니다. 당신이 그것을 극복 할 수 있다면, zsh가 최고입니다!
zrajm

답변:


68

평상시 사용하려면 bash를 고수하고 bash 완성을 설치하는 것이 좋습니다.

설치는 매우 쉽습니다. http://www.caliban.org/bash/index.shtml#completion 에서 bash-completion-20060301.tar.gz를 가져 와서 추출하십시오.

tar -xzvf bash-completion-20060301.tar.gz

그런 다음 bash_completion / bash_completion 파일을 / etc에 복사하십시오.

sudo cp bash_completion/bash_completion /etc

암호를 묻는 메시지가 나타납니다. 추가 완료 스크립트에 대해 /etc/bash_completion.d 디렉토리를 만들고 싶을 것입니다 (예를 들어, git 완료 스크립트가 있습니다).

이것이 끝나면 마지막 단계는 홈 디렉토리의 .bash_profile 파일이

if [ -f /etc/bash_completion ]; then
     . /etc/bash_completion 
fi

로그인 할 때 완성 파일을로드하십시오.

테스트하려면 새 터미널을 열고 cvs에서 완료하면 완료 목록에 cvs 옵션이 표시됩니다.


위의 방법을 시도했지만 나중에 bash를 시작할 때마다 4 개의 "단항 연산자 예상"및 4 개의 "너무 많은 인수"오류가 발생합니다.
AnnanFay

12
OSX에서 homebrew를 사용하는 경우 다음을 실행할 수 있습니다 brew install bash-completion.
Nathan Villaescusa

3
Bash-Completion2가 더 좋습니다! OS X :brew tap homebrew/versions; brew install bash-completion2
Zearin

85

개인적으로 저는 zsh를 좋아합니다.

일반적으로 재귀 globbing과 같은 작업을 빠르게 수행하기 전까지는 bash와 bash의 차이점을 알지 못할 것입니다.

  • **/*.c 예를 들어.

또는 접미사 별명을 사용하여 특정 프로그를 다른 접미사와 연관시켜 직접 "실행"할 수 있습니다. 아래의 별칭을 사용하면 프롬프트에서 C 소스 파일을 "실행"할 수 있습니다. ./my_program.c– 입력 한 것처럼 정확하게 작동합니다 vim ./my_program.c. (파일 아이콘을 두 번 클릭하는 것과 동일합니다.)

  • alias -s c=vim

또는 오늘 수정 된 파일 이름을 인쇄하십시오.

  • print *(e:age today now:)

bash에서 이러한 모든 작업을 수행 할 수는 있지만 zsh에 대한 나의 경험은 내가하고 싶은 일이 있으면 zsh-lovers 에서 찾을 수 있다는 것입니다 . 또한 ' Bash에서 Z-Shell까지 '라는 책이 정말 유용하다는 것을 알았습니다 .

엄청나게 많은 옵션을 마음으로 가지고 노는 것도 좋은 재미입니다!


1
여기서 처음 두 가지 예는 나에게 아무런 의미가 없습니다 (zsh로 전환하는 것을 고려한 캐주얼 bash 사용자). "재귀 globbing"의 의미 또는 "다른 접미사와 특정 progs를 연관시키는"에 대해 자세히 설명 할 수 있습니까?
aaronsnoswell

5
@aaronsnoswell : "재귀 글 로빙"은 특정 패턴과 이름이 일치하는 파일을 찾기 위해 서브 디렉토리 와 모든 서브 디렉토리를 검색하는 것을 의미 합니다. Bash는 기본적으로 그렇게하지 않습니다. 재귀 적으로 검색 find하거나 locate검색 할 수 있습니다 . 그러나 일단 다른 프로그램이 검색을하게하면, 이름의 경계 (주의하지 않는 한)와 쉘의 내부 글 로빙 기능에 대한 액세스 권한을 잃게되며, 기본적으로 다른 프로그램이 제공하는 것과 관련이 있어야합니다. 또는 파이프와 같은 프로그램을 통해 그것의 출력 grep, awk또는 sed(그 자체로 모두 매우 복잡한).
cHao

6
요즘에는 globstar위에서 언급 한 것처럼 재귀 검색을 허용하도록 bash 에서 옵션을 설정할 수 있습니다 . 그러나이 답변이 작성된 것은 사실이 아닙니다.
cHao

glob_star_short에서 zsh, 당신은 지금 할 수있는 **.c것으로 해석된다, **/*.c.
PythonNut

내가 사용 zsh 5.3하고 command not found: age함께print *(e:age today now:)
Timo

38

zsh로 전환하십시오. 다음에 액세스 할 수 있습니다.

  1. zmv: 당신은 할 수 있습니다 : zmv '(*).mp3' '$1.wma'수천 파일에 대해.
  2. zcalc:보다 편안한 계산기 bc.
  3. zparseopts: 스크립트에 주어진 임의의 복잡한 옵션을 구문 분석하기위한 하나의 라이너.
  4. autopushd: 항상 이전 디렉토리로 다시 변경 popd한 후에 수행 할 수 있습니다 cd.
  5. 부동 소수점 지원. 때때로 필요합니다.
  6. 지원을 해시합니다. 때로는 주요 기능 일뿐입니다.

17
zmv의 예는 zmv '(*). mp3' '$ 1.wma'여야합니다. 부주의 한 프레젠테이션은 경험이없는 사람에게는 혼란스럽고 실망 스러울 수 있습니다.
qed

5
@TravisBear autoload zcalc; zcalc( python계산기가 필요할 때마다 직접 입력하지만 ).
Francisco

9
"autopushd : cd 후에 popd를하면 이전 디렉토리로 돌아갈 수 있습니다." 그저 cd-?와 동등하지 않습니까?
minhaz 1

4
zmv그리고 zcalc상자 사용할 수 밖에 없습니다. zmv파일 이름 만 바꾼다는 것은 확실하지 않습니다 . 형식을 변환하고 있다고 생각했습니다. 나는 "해시"지원이 무엇을 의미하는지 모른다. 이 게시물은 이미 zsh를 알고있는 사람들에게 "유용한"것 같습니다.
mpen

1
@Mark이 경우 "hash"는 "associative array"와 동의어입니다. bash이 답변이 발표되기 몇 달 전에 4가 공개되었습니다.
chepner

13

ZSH를 사용하려는 것이 더 나은 완성이라면 구성이 매우 쉽습니다. 이것을 ~ / .zshrc에 넣으십시오.

autoload -U zutil      # [1]
autoload -U compinit   # [2]
autoload -U complist   # [3]
compinit

그러나 ZSH의 다른 모든 훌륭한 기능을 확인하는 것이 좋습니다. 위의 예제는 완료가 완료된 매우 일반적인 프롬프트를 제공합니다. 구성을 피하고 싶지는 않지만 ZSH가 무엇을 할 수 있는지 알고 싶다면 Google에서 "zshrc"를 시작하면 구성을 사용하여 시작할 수 있습니다.


3
어떤 종류의 것들이 완성에 도움이됩니까? 나는 그것이하는 일을 모르고 무작위로 물건을 추가하는 것을 좋아하지 않습니다.
mpen

6

zsh에는 콘솔 GUI 구성이 있습니다. 구성 파일을 사용하지 않고도 매우 빠르고 쉽게 설정할 수 있습니다. 나는 당신이 그것을 설정하는 데 많은 시간이 필요하다고 생각하지 않을 것입니다. 아마도 기본값을 사용하면 10 초가 걸릴 것이므로 계속 시도하십시오.


10
이 "콘솔 GUI"에 어떻게 액세스합니까?
mpen

일반적으로 zsh관련 도트 파일없이 로드 할 때 가장 먼저 보게됩니다 . 수동으로 가져 오려면autoload -U +X zsh-newuser-install; zsh-newuser-install -f
Adam Katz

3

Staale은 zsh를 처음 실행할 때 자동 실행되는 프로그램과 같은 마법사 (CUI)에 대해 이야기하고 있습니다. 몇 가지 질문에 답하고 기본값과 구성을 보거나 변경하십시오.

IBM developerWorks는 zsh에 대한 훌륭한 자원을 보유하고 있습니다.

나는 매우 고급 기능을 사용하지 않았으며 지금까지 나는 누군가가 배쉬에서 오는 것을 방해 해야하는 심각한 차이점을 발견하지 못했습니다.

몇 가지 예 :

  • !? pattern <Tab>은 히스토리 일치 패턴의 마지막 명령으로 자동 완성됩니다. 굉장히 유용하다.

  • RHS에서 프롬프트를 구성 할 수 있습니다. 한 가지 사용법은 왼쪽에 고정 너비 프롬프트를 유지하여 pwd (또는 가변 너비)를 오른쪽 프롬프트로 표시하는 동안 모든 명령을 깔끔하게 정렬하는 것입니다.

  • 여러 파일에서 입력을 리디렉션 할 수 있습니다 (이미 시도해보십시오) : cat <file1 <file2 <file3

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.