私はかなり前からzshユーザーでした(そのtcshの前とcshの前)。私はそれに非常に満足していますが、zshに存在しないbashの説得力のある機能があるかどうか疑問に思っていました。逆に、bashには存在しないzsh機能はありますか。私の現在の感触は、bashの方が良いということです。
ここで宗教的な戦いを始めようとはしていません。そのため、シェルの1つだけに存在する機能を探しています。
zshはバルカン用です。 ;-)
真剣に:bash 4.0には、**グロビングのように、以前はzshにしかなかったいくつかの機能があります。
% ls /usr/src/**/Makefile
以下と同等です。
% find /usr/src -name "Makefile"
しかし明らかにより強力です。
私の経験では、bashのプログラム可能な補完は、少なくとも一部のケースでは(たとえばaptitudeのdebianパッケージを完成させることで)、zshのそれよりも少し優れています。
bashにはAlt + .
を挿入して!$
を挿入します
zsh has expansion of all variables, so you can use e.g.
% rm !$<Tab>
</ code>
このため。 zshはコマンドをbackticsで展開することもできるため、
% cat `echo blubb | sed 's/u/a/'`<Tab>
収量
% cat blabb
rm *
を展開すると非常に便利です。何が削除されるかがわかり、コマンドから1つまたは2つのファイルを削除して削除されないようにすることができるからです。
またニース:stdinから読み取らないがファイル名を期待する他のコマンドにコマンドからの出力を使用する:
% diff <(sort foo) <(sort bar)
私が読んだものから、bash-completionは、ssh-agentを使用する場合、sshを介したリモートファイル名の補完もサポートしています。これは、zshに切り替えるための正当な理由でした。
Zshのエイリアスは、最初だけでなく行全体で機能するように定義できます。
%alias -g ... = "../ .." %cd ...
私が最後にAIXを使用したとき、bashはFreeBSD、OpenBSD、またはNetBSDにデフォルトでインストールされておらず、Solaris 10(OpenSolarisがデフォルトとして持っている)にもデフォルトでインストールされないことを指摘しておきます。 HP-UXサーバーもデフォルトでインストールされていません。
また、OpenSolarisでは/ bin/shはbashではありません。 kshです。ソフトウェアポーターとして私が抱えている最大の問題は、/ bin/shがbashであり、bash拡張構文を受け入れることを前提としている人々です。これはほとんどのLinuxディストリビューションに当てはまるようですが、他の場所には当てはまりません。
私はbashのユーザーですが、zshの機能の1つであるRPS1が非常に優れています。
覚えておいてください:
サンプル:
のようなものを使うとき
PS1=’%B(%h) %m%#%b ‘
RPS1=’(%20<…<%~)'
左側にプロンプトが表示され、現在のディレクトリが右側にプッシュされます。現在の行が長くなりすぎても消えます!これは、zshがRPS1に低い優先度を与えるのに十分スマートであるためです。
この例のスクリーンショットは http://imgur.com/OAZhC で確認できます。
Zshにはスペル修正があります。あなたが手紙(またはそれ以上)を失っている場合、それはあなたが何を意味しているかを理解します。
それはまた、私が好きな、より堅牢なタブ補完も備えています。
Zshにはインタラクティブな設定ユーティリティがあり、好みに合わせて設定できます。
一部の速度テストでは、zshの方が高速であると示されていますが、違いに気づきませんでした。
Zshがサポートしていないbash機能については知りません。 zshの設計目標には、bashが追加する機能のサポートが含まれているようです。
私はまだzshの代わりにbashを使用しています。 zshがサポートしていてbashがサポートしていない説得力のある機能に出くわすことはめったにありません。何年にもわたってzshで時折発生する問題、または特定のシステムに存在しない問題により、移行する価値がなくなりました。
最終的にすべてのUnixシステムで同じシェルを使用できるようになります。使用しない機能については、これを破る価値はありません。
Zshに存在する機能であり、bashには存在しない機能は、ほとんどがかわいいようですが、日常的に重要となる機能はそうではありません。
bashには、zshにのみ存在していた多くの機能があります。最近の任意のubuntuユーザーが発見したように、bashを使用して「スマートタブ補完」を使用できるようになりました。
プロセス置換と拡張グロビングは、私が最も見逃す2つの機能です。プロンプト設定もかなりクールです-コマンドラインで複雑なステートメントを入力しているときにネストのレベルを確認してください。オートロードにより、すべてのシェルに多くの機能を含めることができます。
私はviモードをサポートしているためzshのファンですが、あまり広く使用されていないことがわかりました。私は、zshが他のシェルから人気のある機能を取り、それらを組み合わせるのが好きだと読んだと思います(bashに固有のものとcshに固有のものはどちらもzshで使用できます)。
誰かがzshを使ってオタクの要素を変えていると言っていましたが、その噂を確認したり否定したりすることはできません。