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
ビルトインは便利です。たとえば、すべてのfile
file.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では利用できません)は小さいタイプです。サブ>