zshとbash:選択するもの

Z Shellに精通していない人、および日常のタスクのためのシェルを選択する上で岐路に立っている人のために、この記事は専用です。

多くの資料がzshの利点についてすでに書かれていると言わざるを得ません。 この控えめな注意については、構成ファイルの具体例を使用して、両方のシェルの機能を読者に示すことを目的としています。 筆者の理解では、bashは通常最初に使用するのに適しているため、独自の設定なしでzshを使用しない方がよいため、依然としてzshに重点が置かれています。

著者の完全な構成ファイルはgithubから取得できます。



I.シェルの最大の利点は自動補完です



bashにはオートコンプリートもありますが、これは現時点では誰も驚かないでしょう。 この意味で特に良いのはbash-completionです。これにより、ディレクトリへのパスを補完できるだけでなく、インストールするパッケージを効率的に検索できます。 以前に使用したことがない場合は、インストールすることをお勧めします。 このパッケージの追加設定は必要ありません。



Zshはあなたを驚かせるかもしれません。 おそらく、オートコンプリートはその長所の1つです。 すぐに注意してください。zshはモジュール式であり、その機能を拡張するには、必要なモジュールを接続するか、場合によってはインストールする必要があります。 さらに、zshでカスタマイズせずに行うことはできません。モジュールを.zshrcに含める必要があります。 実際の例を見てみましょう。

ArchLinuxの場合は、bash-completionなどのパッケージをすぐにインストールすることをお勧めします。これにより、pacmanとAURを使用したパッケージの検索でオートコンプリートを使用できます。これらはzsh-yaourtとzsh-packerです。 同じAURで見つけることができます。 オートコンプリートを接続します:



#  autoload -U compinit promptinit compinit promptinit #  pacman [[ -a $(whence -p pacman-color) ]] && compdef _pacman pacman-color=pacman #   setopt CORRECT_ALL #     ,    SPROMPT="!  %r  %R? ([Y]es/[N]o/[E]dit/[A]bort) " #     cd #         setopt autocd #         zstyle ':completion:*' menu select=long-list select=0 zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
      
      







すでに悪くないですよね? 正直なところ、bashは一般的には大丈夫だったので、zshに切り替える可能性には興味がありませんでした。 しかし、実験では、zshは非常に便利であることが示されました。



II。 ホットキー

私の知る限り、bashのホットキーは変更できません。 しかし、私が間違っている可能性があります。 これらは、すべてのLinuxsoidに知られているemacsエディターキーです。 これらはベースとして使用され、bashがインストールされているすべてのマシンで動作します。 もちろん、矢印を使用して文字間を移動したり、削除キーを使用して文字を削除したりすることを禁止する人はいません-これもbashであり、これも設定する必要はありません。



zshに切り替えます。 はい、おそらくご想像のとおり、zshではすべてをカスタマイズする必要があります。 もちろん、各キーを設定する必要がある場合は怖いでしょう。 使い慣れた2つのスタイル、viモードまたはemacsモードのいずれかを選択できます。

推奨事項:emascを選択して、任意のシェルの任意のマシンで自信を持ってホットキーを使用します。さらに、bashが最も人気があります-注目してください。

もちろん、必要に応じて個々のキーボードショートカットをカスタマイズできます。

例:



 bindkey '\e[3~' delete-char # del bindkey ';5D' backward-word # ctrl+left bindkey ';5C' forward-word #ctrl+right
      
      







III。 エイリアス

さまざまなチームのエイリアスを使用すると非常に便利です。 エイリアスは、bashとzshの両方の設定に最適です。 違いは、zshではコマンドだけでなく、個々のアプリケーションにファイルタイプ拡張子を割り当てることができることです。 これはどのように役立ちますか? この機能により、zshはファイルマネージャーを置き換えることもできます。 自分で見てください:



 # Aliases alias ls='ls --color=auto' alias grep='grep --colour=auto' alias -s {avi,mpeg,mpg,mov,m2v}=mplayer alias -s {odt,doc,sxw,rtf}=openoffice.org autoload -U pick-web-browser alias -s {html,htm}=chromium
      
      







alias -sで始まる行に注意してください。 ここで想像してみてください。あなたはディレクトリにドキュメントがあり、その中に拡張子が.htmlのディレクトリが1つ以上あるとします。 私たちは通常何をしますか? ブラウザを起動し、Ctrl + Oを押し、ファイルを選択して表示します。 zshでエイリアスは何を許可しますか? ドキュメントの名前を書くだけで、すぐにブラウザで開かれます。

これを行うには、最初に個別のpick-web-browserモジュールがロードされます



IV。 チームの歴史

そして、もちろん、コマンド履歴の使いやすさに異議を唱えるユーザーはいません。 ここで、zshはbashと変わりません。 設定してください:



 # History #      export HISTFILE=~/.zsh_history #   ,    export HISTSIZE=1000 export SAVEHIST=$HISTSIZE #    setopt APPEND_HISTORY #   ,    . setopt HIST_IGNORE_ALL_DUPS setopt HIST_IGNORE_SPACE setopt HIST_REDUCE_BLANKS
      
      







V.その他のアメニティ

zshには、zsh-syntax-highlightingプラグインという興味深いものが1つあります。 ArchLinuxユーザーはAURからインストールでき、残りはgithubの同じ名前のプロジェクトからダウンロードできます。 それを置くと、ターミナルエミュレータが新しい色で輝きます。

最初は、256色をサポートしているだけでなく、一部の色が私たちの好みに合わないかもしれませんが、修正することができます。 色設定のメインファイルは、パスに沿って配置されています。

/usr/share/zsh/plugins/zsh-syntax-highlight/highlighters/main/main-highlighter.zsh ただし、直接編集する必要はありません(エラーを指摘してくれたZyXIに感謝します)。

.zshrcで必要に応じて色を変更し、プラグインをアクティブにします。

例:



 # zsh-syntax-highlighting from AUR typeset -A ZSH_HIGHLIGHT_STYLES ZSH_HIGHLIGHT_STYLES=( 'alias' 'fg=153,bold' 'builtin' 'fg=153' 'function' 'fg=166' 'command' 'fg=153' 'precommand' 'fg=153, underline' 'hashed-commands' 'fg=153' 'path' 'underline' 'globbing' 'fg=166' ) source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
      
      







また、zshには、アーカイブをパック/アンパックする非常に一般的な方法があります。 extract myfile.tarコマンドを入力します-アーカイブを解凍し、pk tar myfileコマンドを入力します-指定された形式のアーカイブにファイルをパックします。 zshがアーカイバを置き換えることができることがわかりましたか?



解凍するには、.zhsrcに書き込みます。



 #   # example: extract file extract () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xf $1 ;; *.tbz2) tar xjf $1 ;; *.tbz) tar -xjvf $1 ;; *.tgz) tar xzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *.7z) 7z x $1 ;; *) echo "I don't know how to extract '$1'..." ;; esac else echo "'$1' is not a valid file" fi }
      
      







アーカイブを作成するには:



 #   # example: pk tar file pk () { if [ $1 ] ; then case $1 in tbz) tar cjvf $2.tar.bz2 $2 ;; tgz) tar czvf $2.tar.gz $2 ;; tar) tar cpvf $2.tar $2 ;; bz2) bzip $2 ;; gz) gzip -c -9 -n $2 > $2.gz ;; zip) zip -r $2.zip $2 ;; 7z) 7z a $2.7z $2 ;; *) echo "'$1' cannot be packed via pk()" ;; esac else echo "'$1' is not a valid file" fi }
      
      







VI。 まとめ

Zshは日常の作業に非常に便利であり、ルーチンのかなりの半分を実行します。 ただし、これら2つのシェルの違いに注意する価値があります。 たとえば、スペースの挿入が必須のforの後の​​zshでは、zshの配列の番号付けは1から始まりますが、これは完全に理解することはできません。

したがって、スクリプトを除く日常の作業にシェルを使用する場合は、zshを使用します。 独自のスクリプトを頻繁に作成する必要がある場合は、bashのみを使用してください。 ただし、組み合わせることができます。

個々のユーザーのデフォルトシェルとしてzshを設定する方法:



$ chsh -s /bin/zsh your_user






All Articles