zsh
zsh (z shell, zシェル)とは、究極のシェルという意味を込めて Z を冠したシェルです。少しだけ、究極のシェルzshに入門してみましょう。
読み方
- zsh
- ぜっとしぇる, ぜっとしぇ
目次
概要
zshは、強力な補完機能を提供するシェルです。
インストール
pkgコマンドでインストールする場合
sudo pkg install zsh
デフォルトシェルの変更
$ chsh -s /usr/local/bin/zsh
.loginでzshを起動するスクリプト
ログインシェルを変更できない、もしくは、したくないけど、ログインしたときにzsh を起動したい場合には、.loginに以下のスクリプトを追加して、zshを起動することができます。FreeBSDな環境では、考慮不要かと思いますが、以下のスクリプトでは、 /bin/zsh がある場合にも対応しています。
if ( -x /bin/zsh ) then exec /bin/zsh else if ( -x /usr/local/bin/zsh ) then exec /usr/local/bin/zsh fi
プラグイン
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 を作り直す必要があります。
関連項目
- zsh
- antigen: zshプラグインマネージャー
- zsh-syntax-highlighting: コマンドラインをカラフルにする
- zshのrmコマンドの便利なオプション
- zsh 複数のファイルをzmvで一括リネームする
- zsh のfunction definition file not foundというエラーの対処法
コマンド
シェル
ツイート