Linuxユーザーとして、私は常にbashを使用していました。これは、使用したすべてのディストリビューションのデフォルトであったためです。 BSDなどの他のUnixシステムを使用している人は、他のシェルをはるかに頻繁に使用しているようです。もう少し学ぶために、zshを試してみることにしました。
bashユーザーとして:
- どの機能が欠けていますか?
- そして、何に注意する必要がありますか?
承認された回答:
より詳細な回答については、https://apple.stackexchange.com/questions/361870/what-are-the-practical-differences-between-bash-and-zsh/361957#361957をご覧ください。
他のStackExchangeサイトでは、このトピックに関してすでにかなりの活動が行われています。覚えている限り(数年前²)、bashからzshに切り替えた私の経験は、1つも見逃していなかったことです。私はたくさん得ました。これが私が最もよく使う単純なzsh固有の機能だと思うものです:
-
bashをときどき使用するときに最も見逃すzsh機能はautocdです。zshでは、
autocdをオンにすると、ディレクトリを実行するとディレクトリに変更されます。 オプション。⁴ -
もう1つの非常に便利な機能は、派手なグロビングです。
象形文字文字を覚えるのは少し難しいですが、非常に便利です(たとえば、同等のfindを書くよりも、文字を検索する方が速いことがよくあります。 指図)。簡単な例のいくつか:
foo*~*.bak=foo*のすべての一致*.bakに一致するものを除く
foo*(.)=foo*に一致する通常のファイルのみ
foo*(/)=foo*に一致するディレクトリのみ
foo*([email protected])=foo*に一致するぶら下がっているシンボリックリンクのみ
foo*(om[1,10])=foo*に一致する最新の10個のファイル
foo*(Lm+1)=サイズが1MBを超えるファイルのみdir/**/foo*=foo*ディレクトリdirおよびそのすべてのサブディレクトリを再帰的に⁴ -
派手な名前の変更については、
zmvビルトインは便利です。たとえば、すべてのfilefile.bak:zmv -C '(*)(#q.)' '$1.bak' -
bashとzshの両方に、明示的にオンにする必要がある適切な完了システムがあります(
. /etc/bash_completionまたはautoload -U compinit; compinit)。 Zshははるかに構成可能で、一般的にはより洗練されています。
.zshrcなしでzshを実行する場合 、構成オプションを選択できるインタラクティブメニューを開始します。 (一部のディストリビューションではこれが無効になる場合があります。その場合は、autoload zsh-newuser-install; zsh-newuser-installを実行してください。 。)推奨される履歴オプションを有効にし、(「新しいスタイル」)完了をオンにして、beep以外の「共通シェルオプション」をオンにすることをお勧めします。 。後で、発見したオプションをさらに構成します。
²当時、プログラム可能な完了はzshのキラー機能でしたが、bashはすぐにそれを取得しました。
⁴バージョン4でのみ取得されたbashの機能(この回答が投稿された時点では広く利用できなかったため、macOSのシステム提供のbashでは利用できません)は小さいタイプです。サブ>