GNU/Linux >> Linux の 問題 >  >> Linux

Zshにはどのような機能があり、Bashにはない、またはその逆ですか?

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.bakzmv -C '(*)(#q.)' '$1.bak'

  • bashとzshの両方に、明示的にオンにする必要がある適切な完了システムがあります(. /etc/bash_completion またはautoload -U compinit; compinit )。 Zshははるかに構成可能で、一般的にはより洗練されています。

.zshrcなしでzshを実行する場合 、構成オプションを選択できるインタラクティブメニューを開始します。 (一部のディストリビューションではこれが無効になる場合があります。その場合は、autoload zsh-newuser-install; zsh-newuser-installを実行してください。 。)推奨される履歴オプションを有効にし、(「新しいスタイル」)完了をオンにして、beep以外の「共通シェルオプション」をオンにすることをお勧めします。 。後で、発見したオプションをさらに構成します。

関連:このcrontabの基本記事で「> / dev / null2>&1」とはどういう意味ですか?

²当時、プログラム可能な完了はzshのキラー機能でしたが、bashはすぐにそれを取得しました。
バージョン4でのみ取得されたbashの機能(この回答が投稿された時点では広く利用できなかったため、macOSのシステム提供のbashでは利用できません)は小さいタイプです。


Linux
  1. bashrcファイルに欠落しているコマンドは何ですか?

  2. すべてのテキストを大文字から小文字に、またはその逆に変換しますか?

  3. -sと[[]]は、BashのIf条件で何を意味しますか?

  1. 14.04から15.04にアップグレードするとどのようなメリットがありますか?また、いくつかの注意点はありますか?

  2. Linux の Bash 終了コードとは

  3. vdso と vsyscall とは何ですか?

  1. コマンドライン(bash)の「And」の違い??

  2. /bin/bash の内容と、誤って上書きしてしまった場合の対処法

  3. パスの bash 配列から不足しているパスを抽出する