「zsh」の版間の差分

提供: FreeBSD入門
移動: 案内検索
(ページの作成:「zsh (z shell, zシェル)とは、究極のシェルという意味を込めて Z を冠したシェルです。 '''読み方''' ;zsh:ぜっとしぇ...」)
 
行1: 行1:
[[zsh]] (z shell, zシェル)とは、究極の[[シェル]]という意味を込めて Z を冠した[[シェル]]です。
+
[[zsh]] (z shell, zシェル)とは、究極の[[シェル]]という意味を込めて Z を冠した[[シェル]]です。少しだけ、究極のシェル[[zsh]]に入門してみましょう。
  
 
'''読み方'''
 
'''読み方'''
行10: 行10:
 
== インストール ==
 
== インストール ==
 
{{pkg|zsh}}
 
{{pkg|zsh}}
 +
== デフォルトシェルの変更 ==
 +
<syntaxhighlight lang="bash">
 +
$ chsh -s /usr/local/bin/zsh
 +
</syntaxhighlight>
 +
== プラグイン ==
 +
[[antigen]]は、zshプラグインマネージャーです。
 +
<syntaxhighlight lang="bash">
 +
$ git clone git://github.com/zsh-users/antigen.git ~/.zsh/git/antigen/
 +
</syntaxhighlight>
 
== 設定 ==
 
== 設定 ==
 +
設定ファイル
 +
~/.zshrc
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
~/.zshrc
+
autoload  -U compinit
 +
compinit
 +
autoload  -U colors
 +
zstyle ':completion:*' list-colors 'di=36' 'ln=35' 'ex=32'
 +
 
 +
export LSCOLORS=ExGxdxdxCxDxDxBxBxegeg
 +
 
 +
setopt auto_list
 +
setopt automenu braceccl ignoreeof correct
 +
setopt listtypes pushdsilent
 +
setopt nonomatch
 +
 
 +
setopt equals              # =command を command のパス名に展開する
 +
 
 +
setopt autocd auto_pushd pushd_ignore_dups
 +
setopt list_packed
 +
 
 +
setopt hist_ignore_all_dups # 重複したヒストリは追加しない
 +
setopt hist_ignore_dups  # 直前と同じコマンドラインはヒストリに追加しない
 +
setopt hist_no_store # history (fc -l) コマンドをヒストリリストから取り除く。
 +
setopt hist_reduce_blanks  # 余分なスペースを削除してヒストリに記録する
 +
#setopt hist_verify          # ヒストリを呼び出してから実行する間に一旦編集できる状態になる
 +
setopt list_types          # 補完候補一覧でファイルの種別をマーク表示
 +
setopt long_list_jobs      # 内部コマンド jobs の出力をデフォルトで jobs -l にする
 +
setopt magic_equal_subst    # --prefix=/usr などの = 以降も補完
 +
 
 +
setopt mark_dirs            # ファイル名の展開でディレクトリにマッチした場合末尾に / を付加する
 +
#setopt menu_complete        # 補完候補が複数ある時、一覧表示 (auto_list) せず、すぐに最初の候補を補完する
 +
setopt multios              # 複数のリダイレクトやパイプなど、必要に応じて tee や cat の機能が使われる
 +
setopt no_list_beep        # 補完の時にベルを鳴らさない
 +
setopt numeric_glob_sort    # ファイル名の展開で、辞書順ではなく数値的にソートされるようになる
 +
setopt print_exit_value    # 戻り値が 0 以外の場合終了コードを表示する
 +
setopt short_loops          # for, repeat, select, if, function などで簡略文法が使えるようになる
 +
setopt print_eight_bit      # 8 ビット目を通すようになり、日本語のファイル名などを見れるようになる
 +
setopt prompt_subst        # 色を使う
 +
setopt pushd_ignore_dups    # 同じディレクトリを pushd しない
 +
setopt notify              # ジョブの状態をただちに知らせる
 +
 
 +
setopt share_history
 +
 
 +
autoload -U predict-on
 +
 
 +
 
 +
zstyle ':completion:*' menu select=0
 +
 
 +
# cdr, cdの履歴
 +
typeset -ga chpwd_functions
 +
autoload -U chpwd_recent_dirs cdr
 +
chpwd_functions+=chpwd_recent_dirs
 +
zstyle ":chpwd:*" recent-dirs-max 500
 +
zstyle ":chpwd:*" recent-dirs-default true
 +
zstyle ":completion:*" recent-dirs-insert always
 +
 
 +
alias -s txt=cat
 +
alias -s py=python
 +
alias -s php=php
 +
alias -s rb=ruby
 +
 
 +
if [ -f ~/.zsh/git/antigen/antigen.zsh ]; then
 +
        source ~/.zsh/git/antigen/antigen.zsh
 +
        antigen-bundle zsh-users/zsh-syntax-highlighting
 +
        antigen-bundle history
 +
        antigen-bundle trapd00r/zsh-syntax-highlighting-filetypes
 +
        antigen-apply
 +
fi
 
</syntaxhighlight>
 
</syntaxhighlight>
 
== 使い方 ==
 
== 使い方 ==
行19: 行94:
 
zsh 5.0.5 (amd64-portbld-freebsd10.0)
 
zsh 5.0.5 (amd64-portbld-freebsd10.0)
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
== zsh入門 ==
 +
=== タブ2回でインタラクティブに補完候補を選択 ===
 +
タブを2回押すと、補完候補一覧をタブ、もしくは、カーソルー(やEmacsキーバインド)で選択できます。
 +
<syntaxhighlight lang="bash">
 +
$ ls /etc/ssh/
 +
moduli                  ssh_host_key
 +
ssh_config              ssh_host_key.pub
 +
ssh_host_dsa_key        ssh_host_rsa_key
 +
ssh_host_dsa_key.pub    ssh_host_rsa_key.pub
 +
ssh_host_ecdsa_key      sshd_config
 +
ssh_host_ecdsa_key.pub
 +
</syntaxhighlight>
 +
=== cdの履歴 ===
 +
==== auto_pushdの履歴 ====
 +
cd -と入力してタブをうつと、移動してきたディレクトリの履歴が選択できます。
 +
ディレクトリは、古い順にならびます。
 +
<syntaxhighlight lang="bash">
 +
$ cd -<tab>
 +
</syntaxhighlight>
 +
 +
<syntaxhighlight lang="bash">
 +
$ cd -
 +
0 -- /home/kaworu/
 +
1 -- /etc
 +
2 -- /usr/src
 +
</syntaxhighlight>
 +
 +
cd + だと、- とは逆順(新しい順)に並びます。
 +
<syntaxhighlight lang="bash">
 +
$ cd +
 +
0 -- /usr/src
 +
1 -- /etc
 +
2 -- /home/kaworu/
 +
</syntaxhighlight>
 +
 +
/usr/src に移動するなら、2 を押してエンターか、さらにタブを押して、選択肢から選択することもできます。
 +
<syntaxhighlight lang="bash">
 +
$ cd -2
 +
</syntaxhighlight>
 +
=== コマンド履歴をインクリメンタルサーチする ===
 +
コマンドの履歴を C-r でインクリメンタルサーチできます。
 +
<syntaxhighlight lang="bash">
 +
$ whereis unzip
 +
bck-i-search: n_
 +
</syntaxhighlight>
 +
=== コマンドライン入力 ===
 +
==== コマンドラインをスタックに一時的に待避 ===
 +
ESC-q でコマンドラインを一時的にスタックに待避し、別のコマンドを実行したあとに、スタックに待避したコマンドラインを自動で再入力できます。
 +
ESC-q
 +
 +
コマンド入力中に、ほかのコマンドを実行して何かを確認したいときなどに使えます。
 +
=== zcompile スクリプトをコンパイルする ===
 +
zshシェルスクリプトをコンパイルすることができます。
 +
<syntaxhighlight lang="bash">
 +
$ zcompile hello.zsh
 +
</syntaxhighlight>
 +
hello.zsh.zwc というファイルが作成されます。
 +
<syntaxhighlight lang="bash">
 +
$ file hello.zsh.zwc
 +
hello.zsh.zwc: data
 +
</syntaxhighlight>
 +
.zshrcなどもコンパイル可能ですが、.zshrcを変更したら zcompile で .zshrc.zwc を作り直す必要があります。
 
== 関連項目 ==
 
== 関連項目 ==
 
{{zsh}}
 
{{zsh}}

2014年5月22日 (木) 13:47時点における版

zsh (z shell, zシェル)とは、究極のシェルという意味を込めて Z を冠したシェルです。少しだけ、究極のシェルzshに入門してみましょう。

読み方

zsh
ぜっとしぇる, ぜっとしぇ

概要

zshは、強力な補完機能を提供するシェルです。

インストール

pkgコマンドでインストールする場合

sudo pkg install zsh

デフォルトシェルの変更

$ chsh -s /usr/local/bin/zsh

プラグイン

antigenは、zshプラグインマネージャーです。

$ git clone git://github.com/zsh-users/antigen.git ~/.zsh/git/antigen/

設定

設定ファイル

~/.zshrc
autoload  -U compinit
compinit
autoload  -U colors
zstyle ':completion:*' list-colors 'di=36' 'ln=35' 'ex=32'
 
export LSCOLORS=ExGxdxdxCxDxDxBxBxegeg
 
setopt auto_list
setopt automenu braceccl ignoreeof correct
setopt listtypes pushdsilent
setopt nonomatch
 
setopt equals               # =command を command のパス名に展開する
 
setopt autocd auto_pushd pushd_ignore_dups
setopt list_packed
 
setopt hist_ignore_all_dups # 重複したヒストリは追加しない
setopt hist_ignore_dups  # 直前と同じコマンドラインはヒストリに追加しない
setopt hist_no_store # history (fc -l) コマンドをヒストリリストから取り除く。
setopt hist_reduce_blanks   # 余分なスペースを削除してヒストリに記録する
#setopt hist_verify          # ヒストリを呼び出してから実行する間に一旦編集できる状態になる
setopt list_types           # 補完候補一覧でファイルの種別をマーク表示
setopt long_list_jobs       # 内部コマンド jobs の出力をデフォルトで jobs -l にする
setopt magic_equal_subst    # --prefix=/usr などの = 以降も補完
 
setopt mark_dirs            # ファイル名の展開でディレクトリにマッチした場合末尾に / を付加する
#setopt menu_complete        # 補完候補が複数ある時、一覧表示 (auto_list) せず、すぐに最初の候補を補完する
setopt multios              # 複数のリダイレクトやパイプなど、必要に応じて tee や cat の機能が使われる
setopt no_list_beep         # 補完の時にベルを鳴らさない
setopt numeric_glob_sort    # ファイル名の展開で、辞書順ではなく数値的にソートされるようになる
setopt print_exit_value     # 戻り値が 0 以外の場合終了コードを表示する
setopt short_loops          # for, repeat, select, if, function などで簡略文法が使えるようになる
setopt print_eight_bit      # 8 ビット目を通すようになり、日本語のファイル名などを見れるようになる
setopt prompt_subst         # 色を使う
setopt pushd_ignore_dups    # 同じディレクトリを pushd しない
setopt notify               # ジョブの状態をただちに知らせる
 
setopt share_history
 
autoload -U predict-on
 
 
zstyle ':completion:*' menu select=0
 
# cdr, cdの履歴
typeset -ga chpwd_functions
autoload -U chpwd_recent_dirs cdr
chpwd_functions+=chpwd_recent_dirs
zstyle ":chpwd:*" recent-dirs-max 500
zstyle ":chpwd:*" recent-dirs-default true
zstyle ":completion:*" recent-dirs-insert always
 
alias -s txt=cat
alias -s py=python
alias -s php=php
alias -s rb=ruby
 
if [ -f ~/.zsh/git/antigen/antigen.zsh ]; then
        source ~/.zsh/git/antigen/antigen.zsh
        antigen-bundle zsh-users/zsh-syntax-highlighting
        antigen-bundle history
        antigen-bundle trapd00r/zsh-syntax-highlighting-filetypes
        antigen-apply
fi

使い方

% zsh --version
zsh 5.0.5 (amd64-portbld-freebsd10.0)

zsh入門

タブ2回でインタラクティブに補完候補を選択

タブを2回押すと、補完候補一覧をタブ、もしくは、カーソルー(やEmacsキーバインド)で選択できます。

$ ls /etc/ssh/
moduli                  ssh_host_key
ssh_config              ssh_host_key.pub
ssh_host_dsa_key        ssh_host_rsa_key
ssh_host_dsa_key.pub    ssh_host_rsa_key.pub
ssh_host_ecdsa_key      sshd_config
ssh_host_ecdsa_key.pub

cdの履歴

auto_pushdの履歴

cd -と入力してタブをうつと、移動してきたディレクトリの履歴が選択できます。 ディレクトリは、古い順にならびます。

$ cd -<tab>
$ cd -
0 -- /home/kaworu/
1 -- /etc
2 -- /usr/src

cd + だと、- とは逆順(新しい順)に並びます。

$ cd +
0 -- /usr/src
1 -- /etc
2 -- /home/kaworu/

/usr/src に移動するなら、2 を押してエンターか、さらにタブを押して、選択肢から選択することもできます。

$ cd -2

コマンド履歴をインクリメンタルサーチする

コマンドの履歴を C-r でインクリメンタルサーチできます。

$ whereis unzip
bck-i-search: n_

コマンドライン入力

= コマンドラインをスタックに一時的に待避

ESC-q でコマンドラインを一時的にスタックに待避し、別のコマンドを実行したあとに、スタックに待避したコマンドラインを自動で再入力できます。

ESC-q

コマンド入力中に、ほかのコマンドを実行して何かを確認したいときなどに使えます。

zcompile スクリプトをコンパイルする

zshシェルスクリプトをコンパイルすることができます。

$ zcompile hello.zsh

hello.zsh.zwc というファイルが作成されます。

$ file hello.zsh.zwc
hello.zsh.zwc: data

.zshrcなどもコンパイル可能ですが、.zshrcを変更したら zcompile で .zshrc.zwc を作り直す必要があります。

関連項目