「シェル」の中でも最後を意味するZshのカスタマイズコードを紹介します。
・Zshのカスタマイズコードを知りたい方
・BashとZshの違いを知りたい方
「シェル」の概要
「シェル」とはUnixで様々なコマンドをマシン語へ変換し、人間とコンピューターとの橋渡しをするコマンドラインインタープリンターです。このシェルには「sh」(シェル)、「bash」(バッシュ),「csh」(シー・シェル),「tcsh」(ティー・シェル)、「ksh」(ケー・シェル)、「zsh」(ズィー・シェル)など様々なものがあります。
Bsh (Bourne-Againシェル)は、最も一般的なLinuxディストリビューションにデフォルトでインストールされているシェルです。一方、Zシェル、Zshは、対話型ログインシェルとして利用でき、Bashの上に構築されているため、様々な追加機能が利用できます。BashもZshも、Boure Shell(sh)の拡張バージョンです。
Zshとは?
Zshは、上記で示したようにUnix系OSで利用可能なシェルの1つで、ユーザーにとって強力なツールになるように設計されています。機能が最も豊富なシェルです。sh, ash, bash,csh, ksh, tcshの情意互換相当の機能を持っています。最近ではmacOS Catalinaからユーザーが使用するシェルのデフォルトとしてzshが採用されています。
Linux版でもインストール直後の基本シェルはBashですが、Zshをインストールすることで同様に便利な機能を利用できます。
zshのメリットは
・プログラム可能な保管機能を持ち、ユーザーコマンドのオプションや因数の打ち込み支援。
・プロンプトテーマのカスタマイズが可能。
・そのた多彩な機能。
BashとZshの違い
以下に「Bash」と「Zsh」の主な違いについてを示します。
シェル | Bash | Zsh |
---|---|---|
読み込みファイル | .bashrcを読み込み。 | .zshrcを読み込み。 |
主な機能 | 構文強調表示と自動修正機能がない | 構文強調表示と自動修正機能がある |
プラグイン | プラグインのサポートがない。 | プラグインやテーマが豊富 |
Ubuntu Linuxなどでは以下のようにaptコマンドでzshをインストールできます。
% sudo apt install zsh
% echo $0
-zsh
「-zsh」と表示されていれば、SHELLはzshです。
cat /etc/shells
% cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/zsh
/usr/bin/zsh
/usr/bin/tmux
/usr/bin/screen
% which zsh
/usr/bin/zsh
zsh --version
zsh 5.4.2 (x86_64-ubuntu-linux-gnu)
ZSH用コード
zshの設定ファイルは、ホームディレクトリ下「~/.zshrc」にて記述していきます。
# 日本語を# 日本語を使用
export LANG=ja_JP.UTF-8
# パスを追加したい場合
export PATH="$HOME/bin:$PATH"
export PATH="/usr/local/bin:$PATH"
# 色を使用
autoload -Uz colors
colors
# 補完
autoload -Uz compinit
compinit
# emacsキーバインド
bindkey -e
# 他のターミナルとヒストリーを共有
setopt share_history
# ヒストリーに重複を表示しない
setopt histignorealldups
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
# cdコマンドを省略して、ディレクトリ名のみの入力で移動
setopt auto_cd
# 自動でpushdを実行
setopt auto_pushd
# pushdから重複を削除
setopt pushd_ignore_dups
# コマンドミスを修正
setopt correct
#Zplug
source ~/.zplug/init.zsh
zplug "wbinglee/zsh-wakatime"
# syntax
zplug "chrissicool/zsh-256color"
zplug "Tarrasch/zsh-colors"
zplug "zsh-users/zsh-syntax-highlighting"
zplug "ascii-soup/zsh-url-highlighter"
# program
zplug "voronkovich/mysql.plugin.zsh"
# tools
zplug "marzocchi/zsh-notify"
zplug "oknowton/zsh-dwim"
setopt auto_cd
# 自動でpushdを実行
setopt auto_pushd
# pushdから重複を削除
setopt pushd_ignore_dups
# コマンドミスを修正
setopt correct
#Zplug
source ~/.zplug/init.zsh
zplug "wbinglee/zsh-wakatime"
# syntax
zplug "chrissicool/zsh-256color"
zplug "Tarrasch/zsh-colors"
zplug "zsh-users/zsh-syntax-highlighting"
zplug "ascii-soup/zsh-url-highlighter"
# program
zplug "voronkovich/mysql.plugin.zsh"
# tools
zplug "marzocchi/zsh-notify"
zplug "oknowton/zsh-dwim"
# グローバルエイリアス
alias -g L='| less'
alias -g H='| head'
alias -g G='| grep'
alias -g GI='| grep -ri'
alias homessh='ssh tomita@wisenetwork.net'
alias issh='ssh tomita@192.168.49.243'
# イリアス
alias lst='ls -ltr --color=auto'
alias l='ls -ltr --color=auto'
alias la='ls -la --color=auto'
alias ll='ls -l --color=auto'
alias so='source'
alias v='vim'
alias vi='vim'
alias vz='vim ~/.zshrc'
alias c='cdr'
# historyに日付を表示
alias h='fc -lt '%F %T' 1'
alias cp='cp -i'
alias rm='rm -i'
alias mkdir='mkdir -p'
alias ..='c ../'
alias back='pushd'
alias diff='diff -U1'
# backspace,deleteキーを使えるように
stty erase ^H
bindkey "^[[3~" delete-char
# cdの後にlsを実行
#chpwd() { ls -ltr --color=auto }
#chpwd() { ls -ltr -G}
# どこからでも参照できるディレクトリパス
cdpath=(~)
# 区切り文字の設定
autoload -Uz select-word-style
select-word-style default
zstyle ':zle:*' word-chars "_-./;@"
zstyle ':zle:*' word-style unspecified
# Ctrl+sのロック, Ctrl+qのロック解除を無効にする
setopt no_flow_control
# プロンプトを2行で表示、時刻を表示
PROMPT="%(?.%{${fg[green]}%}.%{${fg[red]}%})%n${reset_color}@${fg[blue]}%m${reset_color}(%*%) %~
%# "
まとめ
関連リンク
