【入門】最後のシェル「zsh」とは?最初しておきたい設定方法

この記事は 5 分で読めます。
概要

本記事では、Linuxで利用される「シェル」について解説を行います。中でも「最後」を意味するZshを利用する上で便利な機能を使える有用やカスタマイズコードを紹介します。

本記事の読者層

Zshのカスタマイズコードを知りたい方

BashとZshの違いを知りたい方

「シェル」の概要

 「シェル」とは、Unixでさまざまなコマンドをマシン語に変換し、人間とコンピューターとの橋渡しをするコマンドラインインタープリンターのことです。このシェルには「sh」(シェル)、 「bash」(バッシュ)、 「csh」(シー・シェル)、 「tcsh」(ティー・シェル)、 「ksh」(ケー・シェル)、 「zsh」(ズィー・シェル)などがあります。

中でも、「Bash」(Bourne-Againシェル)は、最も一般的なLinuxディストリビューションでデフォルトでインストールされているシェルです。一方、「Zsh」は対話型ログインシェルとして利用でき、Bashの上に構築されているため、様々な追加機能が利用できます。どちらもBourne Shell(sh)の拡張バージョンです。

シェルBash内容
shboure ShellUnixで使われていた初期のxシェルの一つ
ashAlmquist Shell小型で高速Bourne Shellの代替
dashdebian Almquist shellAlmquist Shell (ash) のDebian
bashBourne-Again shell「bash」と呼ばれているやつの正式名称
kshKornShellAT&T Bell LaboratoriesのDavid Kornにより開発
zshZ shell対話型ログインシェル
yashYet another shellPOSIX準拠のUnixシェル
cshC ShellBorneシェルよりも高機能
tcshTENEX C shelltcsh.cshのパワーアップ版
eshellEmacs shellEmacs上で使えるShell
「Bash」と「Zsh」の主な違い

Zshとは?

Zsh (Z-Shell)は、Unix系のOSで利用可能なシェルの1つであり、ユーザーにとって豊富な革新的機能を持つツールとして設計されています。このシェルは、sh、ash、bash、csh、ksh、tcshといった「シェル」との互換性があります。

最近では、macOS CatalinaでもデフォルトのシェルとしてZshが採用されています。

Linux版では、インストール直後の基本シェルはBashですが、zshをインストールすることで同様に便利な機能を利用できます。実際にヘビーユーザーになればなるほど自分に適したカスタマイズを求めてBashを卒業し、カスタマ性に優れたzshを選択するようになります。

今回の魅力を少しですが伝えていこうと思います。

zshのメリットは

・プログラム可能な保管機能を持ち、ユーザーコマンドのオプションや因数の打ち込み支援。

・プロンプトテーマのカスタマイズが可能。

・その他多彩な機能。

ログインシェル

Linuxにログインすると自動的にいずれかのシェルが起動します。そのシェルを「ログインシェル」といいます。

Zsh

Zshのマニュアルを含めて、より詳細はことは以下のページから確認できます。

Zshは対話型で使用するために設計されたシェルですが、メリットは、その強力なスクリプト言語にあります。 bash ksh、およびtcshの便利な機能の多くはzsh に組み込まれています。また、多くのオリジナル機能が追加されました。同時に、その強力な補完機能があります。

zshの補完機能については、下記の記事をご参照ください。

BashとZshの違い

以下に「Bash」と「Zsh」の主な違いについてを示します。

シェルBashZsh
読み込みファイル.bashrcを読み込み。.zshrcを読み込み。
主な機能構文強調表示と自動修正機能がない。構文強調表示と自動修正機能がある。
プラグインプラグインのサポートがない。プラグインやテーマが豊富
「Bash」と「Zsh」の主な違い

Zshのインストール方法

Ubuntu Linux環境下では、パッケージマネージャーを利用してインストールできます。

Zshのインストール

aptコマンドによりzshをインストールできます。

> sudo apt-get install zsh

その後、zshコマンドを入力することでzshを立ち上げることができます。

現在のシェルを確認する方法

現在どのシェルが使われているかは以下のコマンドを入力すると確認できます。

> echo $0
-zsh

「-zsh」と表示されていれば、SHELLはzshです。

zshの立ち上げにはzshとタイプください。するといくつかの校正オプションを選択するように求められられます。

>zsh

This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q)  Quit and do nothing.  The function will be run again next time.

(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.

(2)  Populate your ~/.zshrc with the configuration recommended
     by the system administrator and exit (you will need to edit
     the file by hand, if so desired).

--- Type one of the keys in parentheses ---

これは新規ユーザー向けの Z Shell 設定機能です。

現時点で zsh の「起動ファイル」がないため、このメッセージが表示されます。

(0) コメントのみを含むファイル ~/.zshrc を作成して終了します。 これにより、この関数は再度実行されなくなります。

(1) メインメニューに進みます。

(2) ~/.zshrc に推奨される構成を入力します。 システム管理者によって実行され、終了します (編集する必要があります) 必要に応じて、ファイルを手動で作成します)。

The function will not be run in future, but you can run
it yourself as follows:
  autoload -Uz zsh-newuser-install
  zsh-newuser-install -f

The code added to ~/.zshrc is marked by the lines
# Lines configured by zsh-newuser-install
# End of lines configured by zsh-newuser-install
You should not edit anything between these lines if you intend to
run zsh-newuser-install again.  You may, however, edit any other part
of the file.
Please pick one of the following options:

(1)  Configure settings for history, i.e. command lines remembered
     and saved by the shell.  (Recommended.)

(2)  Configure the new completion system.  (Recommended.)

(3)  Configure how keys behave when editing command lines.  (Recommended.)

(4)  Pick some of the more common shell options.  These are simple "on"
     or "off" switches controlling the shell's features.

(0)  Exit, creating a blank ~/.zshrc file.

(a)  Abort all settings and start from scratch.  Note this will overwrite
     any settings from zsh-newuser-install already in the startup file.
     It will not alter any of your other settings, however.

(q)  Quit and do nothing else.  The function will be run again next time.
--- Type one of the keys in parentheses ---

次のオプションのいずれかを選択してください。

(1) 履歴の設定を構成します。つまり、コマンドラインを記憶します。 そしてシェルによって保存されます。 (推奨。)

(2) 新しい補完システムを構成します。 (推奨。)

(3) コマンドライン編集時のキーの動作を設定します。 (推奨。)

(4) より一般的なシェル オプションをいくつか選択します。これらは単純に「オン」です またはシェルの機能を制御する「オフ」スイッチ。

(0) 終了し、空の ~/.zshrc ファイルを作成します。

(a) すべての設定を中止し、最初からやり直します。これは上書きされることに注意してください zsh-newuser-install の設定はすでに起動ファイルに含まれています。 ただし、他の設定は変更されません。

(q) 辞めて何もしません。この関数は次回も実行されます。 –

zshのコマンド一覧

zshインストール前

>cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/tmux
/usr/bin/screen

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  

zshパスの確認

% which zsh
/usr/bin/zsh

zshのバージョン確認

zsh --version
zsh 5.4.2 (x86_64-ubuntu-linux-gnu)

Zshの機能

ZshとBashの違いをすぐには認識できないと思います。Zshが特に優れている特徴は以下のような機能があります。

①コマンドの検証

②ディレクトリ履歴

③スペル修正

④auto cd オプション(cdコマンドを使用せずにディレクトリを変更)

⑤柔軟な検索機能 (lsコマンドによるファイル検索)

⑥zshタブ補完機能の使用

⑦ワイルドカードの利用

⑧オプションの色付き補完

⑨再帰的パス展開

⑩プラグインとテーマサポート

このような多彩な機能を使うためには.zshrcに設定を行う必要があります。次章では設定ファイルの書き方について述べます。

設定ファイル「.zshrc」の作成

ZSH用おすすめ設定コード

zshの設定ファイルは、ホームディレクトリ下「~/.zshrc」にあり、そこに下記の記述しておきます。設定ファイルを書き換えた後、反映させるために一度、zshを抜けてbashにも取ってから改めてzshへ入りなおすことで設定ファイルを読み込んでくれるようになります。

次にzshにて特に重宝する設定ファイルを示します。必要な機能があれば記載し有効にしてみてください。最初のzshのコマンドはほとんど空の状態です。お好みでカスタマイズしてみてください。

ZSH用のテストコード

❶日本語の設定は以下の通りです。

# 日本語を# 日本語を使用
export LANG=ja_JP.UTF-8

❷パスを以下のように設定しておきます。

# パスを追加したい場合
export PATH="$HOME/bin:$PATH"
export PATH="/usr/local/bin:$PATH"

❸プロンプトカラー変更のためcolor関数を読込ます。

# 色を使用
autoload -Uz colors
colors

④zshの補完機能を有効にするため、compinit というシェル関数を自動読み込みします。主にcompsysとcompctlの二つの補完システムがある。この補完機能を職で使えるように設定するコマンドです。

# 補完
autoload -Uz compinit
compinit

⑤Emacs用の設定。キーバインドをオプションで-eを指定してemacsを利用出来るようにしておく。

# emacsキーバインド
bindkey -e

⑥ターミナルとヒステリーを共有
逆に共有を解除するときは、「setopt no_share_history」

# 他のターミナルとヒストリーを共有
setopt share_history

⑦ヒストリーを重複しないように設定

# ヒストリーに重複を表示しない
setopt histignorealldups
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000

⑧コマンドを省略できるように設定。cdを使わずディレクトリ間を移動できる。

# cdコマンドを省略して、ディレクトリ名のみの入力で移動
setopt auto_cd

⑨cd履歴を見れるようになります。

# 自動でpushdを実行
setopt auto_pushd

⑩重複を削除する。

# pushdから重複を削除
setopt pushd_ignore_dups

⑪コマンドミスを修正するように設定する。

# コマンドミスを修正
setopt correct

⑫zshのプラグインを導入する。

#Zplug
source ~/.zplug/init.zsh
zplug "wbinglee/zsh-wakatime"

⑬zshのプラグインを導入する。

# syntax
zplug "chrissicool/zsh-256color"
zplug "Tarrasch/zsh-colors"
zplug "zsh-users/zsh-syntax-highlighting"
zplug "ascii-soup/zsh-url-highlighter"

⑭zshのプラグインを導入する。

# program
zplug "voronkovich/mysql.plugin.zsh"

⑮zshのプラグインを導入する。

# tools
zplug "marzocchi/zsh-notify"
zplug "oknowton/zsh-dwim"
setopt auto_cd

⑯zshのプラグインを導入する。

# コマンドミスを修正
setopt correct
#Zplug
source ~/.zplug/init.zsh
zplug "wbinglee/zsh-wakatime"

⑰グローバルエイリアスを設定する。これらのエイリアス表記で長い表記も簡単表記で実行可能になる。これは便利なので多くのエイリアスを登録しておくと作業短縮になってよい。

 # グローバルエイリアス
alias -g L='| less'
alias -g H='| head'
alias -g G='| grep'
alias -g GI='| grep -ri'
alias homessh='ssh user@wisenetwork.net'
alias issh='ssh user@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}(%*%) %~
%# "

zshで利用できるキー操作一覧

zshのキー操作一覧

以下にZshのカーソル操作について記載しておきます。

$ sudo zsh
カーソル操作内容使用例
Ctrl-Aカーソルを行頭に移動
Ctrl-Bカーソルを1文字戻す
Ctrl-Eカーソルを行末に移動
Ctrl-Fカーソルを1文字進める
zshコマンドのオプション
文字削除内容使用例
Ctrl-Kカーソルから行末まで削除
Ctrl-Y直前に削除した文字列を貼り付け
Ctrl-W1単語削除
zshコマンドのオプション
コマンド履歴内容使用例
Ctrl-G履歴表示をキャンセル
Ctrl-N履歴を1つ進める
Ctrl-P1単語削除
Ctrl-R履歴を新しい順に検索
zshコマンドのオプション
その他内容使用例
ESC+Q現在入力中のコマンドをスタックに退避してプロンプトを空にする
zshコマンドのオプション

Oh My Zsh の使用

Oh my Zshのインストールは以下からできます。

sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Looking for an existing zsh config...
Found /home/user/.zshrc. Backing up to /home/user/.zshrc.pre-oh-my-zsh
Using the Oh My Zsh template file and adding it to /home/user/.zshrc.

Time to change your default shell to zsh:
Do you want to change your default shell to zsh? [Y/n] (←ここでパスワード入力)
Changing your shell to /usr/bin/zsh...
[sudo] password for user:
Shell successfully changed to '/usr/bin/zsh'.

         __                                     __
  ____  / /_     ____ ___  __  __   ____  _____/ /_
 / __ \/ __ \   / __ `__ \/ / / /  /_  / / ___/ __ \
/ /_/ / / / /  / / / / / / /_/ /    / /_(__  ) / / /
\____/_/ /_/  /_/ /_/ /_/\__, /    /___/____/_/ /_/
                        /____/                       ....is now installed!


Before you scream Oh My Zsh! look over the `.zshrc` file to select plugins, themes, and options.

• Follow us on Twitter: https://twitter.com/ohmyzsh
• Join our Discord community: https://discord.gg/ohmyzsh
• Get stickers, t-shirts, coffee mugs and more: https://shop.planetargon.com/collections/oh-my-zsh

すると以下のようにカラー画面となります。

oh my zshのインストールにともない、.zshrcの中身も変更されます。初期のzshのテーマは以下のテーマとなっています。

ZSH_THEME="robbyrussell"

プラグイン

Oh My Zsh には、利用できるプラグインが大量に付属しています。プラグイン ディレクトリや Wiki を参照して、現在利用可能なものを確認してください。

https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins

まとめ

本記事のまとめ

本記事では、zshのインストールの仕方oh my zshのインストールの仕方、.rczshの書き方を学びました。

これによりzshの使い勝手が大幅に改善すると思われます。

関連リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です