カジュアルな使用のためにzshに切り替える価値はありますか?[閉まっている]


192

Mac OS Xのデフォルトのシェルはですbash。これは、通常は使用して満足しています。私は当たり前のことだと思っています。しかし、それがより多くのものをオートコンプリートするのは本当に素晴らしいことです、そして私はzshこの点に関して良いことを聞いています。しかし、コマンドラインでの私の生活はそれほど悪くないので、コマンドラインの使用率を少しだけ改善するために設定をいじくるのに何時間も費やす傾向は本当にありません。

(私が理解しているように、bashより巧妙にオートコンプリートするように構成することもできます。これは、私がそれほど熱心ではない構成です。)

に切り替えるとzsh、少数の場合でも、私の生活が楽になりますか?それとも、なぜそれがより良いのかを学ぶために時間をかければ、それはより良いシェルだけでしょうか?(例もいいでしょう:)


@ ロドニーアマート &@ バルカンイーガー それぞれに固執に与える2つの良いの理由bashにスイッチzsh。両方を調査する必要があるようです!しかたがない:)

議論の両側から意見を持っている人はいますか?


14
zshは(ほぼ)bashのスーパーセットであるため、zshに移動してbashのように使用することから始めることができます。その後、zsh gemを少しずつ学習できます。
oriPを

bashを少しカスタマイズしていて、emacs内でシェルを頻繁に使用している場合、これは簡単なことではないようです。:私は、関連する質問投稿stackoverflow.com/questions/13326879/...
justingordon

唯一の私はzshの嫌いなものは、あなたがそれを(代わりに、それはあなたができることを後でといじくり回す上でいくつかのまともなデフォルトを提供する)あなたはそれを最初に起動したときに自分自身を設定する必要があります(少なくとも、Ubuntuの上で)ことです。あなたがそれを乗り越えることができるならば、zshは最高です!
zrajm 2013

回答:


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 2013年

3
Bash-Completion2の方が優れています。OS Xの場合:brew tap homebrew/versions; brew install bash-completion2
Zearin

85

個人的には、zshが大好きです。

一般に、再帰的グロビングなどの処理をすばやく実行するまでは、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
ここの最初の2つの例は私には何も意味しません(zshへの切り替えを検討しているカジュアルなbashユーザー)-「再帰的グロビング」の意味、または「特定のプログラムを異なるサフィックスに関連付ける」という意味について詳しく教えてください。
aaronsnoswell 2013

5
@aaronsnoswell:「再帰的グロビング」は、名前が特定のパターンに一致するファイルをサブディレクトリとそのすべてのサブディレクトリ検索することを意味します。Bashはデフォルトではそれを行いません。あなたはいただきたいfindか、locate再帰的に検索します。ただし、別のプログラムに検索を許可すると、名前の境界が(注意しない限り)失われ、シェルの内部グロビング機能にアクセスできなくなります。また、基本的には、他のプログラムが提供する機能を使用する必要があります。またはパイプのようなプログラムを通じて、その出力grepawkまたはsed(自分の権利のすべてのかなり複雑な)。
cHao 2013年

6
最近では、globstar前述のようにbashでオプションを設定して再帰的な検索を行うことができます。しかし、この回答が書かれたときはそうではありませんでした。
cHao

glob_star_shortinを使用するとzsh、これを実行できます。**.cこれはと解釈され**/*.cます。
PythonNut 2016年

私が使用zsh 5.3して取得command not found: ageしてprint *(e:age today now:)
ティモ

38

zshに切り替えます。以下にアクセスできます。

  1. zmvzmv '(*).mp3' '$1.wma'何千ものファイルに対して:
  2. zcalc:非常に快適な電卓bc
  3. zparseopts:スクリプトに与えられた任意の複雑なオプションを解析するためのワンライナー。
  4. autopushd:あなたは、常に行うことができますpopd後にcd戻ってあなたの前のディレクトリに変更します。
  5. 浮動小数点サポート。それは時々必要です。
  6. ハッシュのサポート。時々、それらは単なる重要な機能です。

17
zmvの例は、zmv '(*)。mp3' '$ 1.wma'です。訂正してください。このような不注意なプレゼンテーションは、経験の浅い人にとって混乱を招き、苛立たしいものになる可能性があります。
2013年

5
@TravisBear autoload zcalc; zcalc(私自身pythonは計算機が必要なときはいつでも入力するだけですが)。
サンフランシスコ

9
「autopushd:cdの後でいつでもpopdを実行して、以前のディレクトリに戻すことができます。」これに相当するのはcd-だけではありませんか?
minhaz1 2014

4
zmvそしてzcalc箱の外には使用できません。zmv単にファイルの名前を変更しているだけであることは明らかではありません。あなたはフォーマットを変換しているのではないかと思いました。「ハッシュ」サポートの意味すらわかりません。この投稿は、すでにzshを知っている人にとっては「役に立つ」だけのようです。
mpen 2014年

1
@Markこの場合、「ハッシュ」は「連想配列」と同義です。bashこの回答のわずか数か月前に4がリリースされました。
chepner 2014年

13

ZSHを使用したいのが完成度が高い場合、構成は非常に簡単です。これを〜/ .zshrcに置きます:

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

ただし、ZSHの他のすべての優れた機能を確認する価値があります。上記の例では、完成度の高いかなりわかりやすいプロンプトが表示されます。設定をいじるのではなく、ZSHが何をできるかを知りたい場合は、「zshrc」をGoogleにすると、設定を使用する準備が整います。


3
これはどんな種類の補完を追加しますか?私はそれが何をしているのか知らずにランダムに何かを追加するのが好きではありません。
mpen 2014年

6

zshには、コンソールGUIの設定があります。設定ファイルをいじる必要なく、非常に迅速かつ簡単に設定できます。設定するのにそれほど時間は必要ないと思います。デフォルトを使用するだけでおそらく10秒なので、先に進んで試してください。


10
この「コンソールGUI」にどのようにアクセスしますか?
mpen 2014年

通常、zsh関連するドットファイルなしでロードしたときに最初に表示されます。手動で取得するには、試してくださいautoload -U +X zsh-newuser-install; zsh-newuser-install -f
Adam Katz

3

Staaleは、zshを初めて実行したときに自動実行されるプログラム(CUI)のようなウィザードについて話している。いくつかの質問に答えて、デフォルトとその設定を表示/変更してください。

IBM developerWorksにはzshに関する優れたリソースがあります。

私は非常に高度な機能を使用していません。また、これまでのところ、bashの使用を妨げる重大な違いはありません。

いくつかの例:

  • !?pattern <Tab>は、パターンに一致する履歴の最後のコマンドまでオートコンプリートします。非常に便利。

  • RHSでプロンプトを構成できます。1つの用途は、左側に固定幅のプロンプトを保持することです。これにより、pwd(または可変幅の何か)を右側のプロンプトとして表示しながら、すべてのコマンドが適切に整列します。

  • 複数のファイルから入力をリダイレクトできます(まだこれを試すことはできません):cat <file1 <file2 <file3

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.