新規作成  編集  差分  FrontPage  ページ一覧  検索  更新履歴  編集履歴  RSS  管理

zsh

多機能シェル

tcshやbashに出来ることは大抵できて,それ以上のことも出来る

zshを使う

.cshrcに

exec zsh

と書く。これでログインシェルっぽく使うことができます。

あるいは

% zsh

で一時的に使用シェルを切り替えることもできます。戻るときはもちろん

% exit

です。

.zshrcをいじれるようにする。

/etc/zshrcは、みるだけで変更できない。そこで、変更には以下のようにコピーすれば、変更できるようになる。

% cp /etc/zshrc ~/.zshrc

(別に一からファイルを作ってもよい。)

訂正機能

訂正というのは、具体的には こんな機能

% clera
zsh: correct 'clera' to 'clear' [nyae]? (yを押すと実行)

このように文字が逆になってしまう打ち間違いの他に、間違って隣のキーを押し てしまったという間違いも訂正してくれる。なお

% clemr

は訂正しない。あくまで、隣のキーを押し間違えた場合のみ。

設定

以下を.zshrc に追加

 setopt correct_all

以後訂正機能が使える。

Auto cd

ディレクトリ名を指定すれば自動的にcdしてくれる機能.

例えば,

% work

% cd work

と同じになる。

設定

以下を.zshrc に追加

setopt auto_cd

コマンドラインスタック

使い方

M-q

すると入力しかけ ていたコマンドが消える。別のコマンドを入力して実行する。そして実行が 終ると、表示された次のプロンプトにはすでに入力しかけて途中でやめていた前 のコマンドが表示されている。あとは続きを入力して、実行する。

% cd XX

としてから

% less YY

としようとしたが,間違って最初に

% less YY

としてしまった。ここでM-qを押すとコマンドが消える。ここで

% cd XX

を入力し実行すると、プロンプトにはもう

% less YY

がでている。

...といったものである。

直前の単語を消す

使い方

C-w

履歴から予測入力する

.zshrcに以下を追加

autoload -U predict-on
zle -N predict-on
zle -N predict-off
bindkey '^xp' predict-on
bindkey '^x^p' predict-off

キーバインド

C-xp 予測オン
C-xC-p 予測オフ

使い方

何かコマンドを打ってみて下さい。すぐわかります。

コマンドラインを編集中は予測入力をしない

.zshrcに追加

 zstyle ':predict' toggle true

予測入力のon/offが切り替わった時に表示する

.zshrcに追加

 zstyle ':predict' verbose true

abbreviation

emacs に abbreviation という機能があります。それをシェルでもやれるようにします。

.zshrc に追加

typeset -A myabbrev
myabbrev=(
    "ll"    "| less"
    "lg"    "| grep"
    "tx"    "tar -xvzf"
)
my-expand-abbrev() {
    local left prefix
    left=$(echo -nE "$LBUFFER" | sed -e "s/[_a-zA-Z0-9]*$//")
    prefix=$(echo -nE "$LBUFFER" | sed -e  "s/.*[^_a-zA-Z0-9]\([_a-zA-Z0-9]*\)$/\1/")
    LBUFFER=$left${myabbrev[$prefix]:-$prefix}" "
}
zle -N my-expand-abbrev
bindkey     " "         my-expand-abbrev

例えば

% lg[スペース]

とやると

% | grep

となります。あとはお好みで myabbrev をいじれば自由に略語を設定できます

which コマンド名 と同じ働きをする

 % file =コマンド名

% file `which コマンド名`

と同じです。

ファイル名の指定方法

% ls *.log *.aux

zshでは、候補を「( )」でグルーピングし、その間を「|」で区切れば、AまたはB…という条件で検索できる。

% ls *.(log|aux)

zshに予約された特殊文字を利用すると、属性情報を条件にファイルリストを表示することも可能です。

シンボリックリンクを一覧表示する

% ls *(@)

拡張子「.log」と「.aux」のファイルを表示する(先頭が「abc」から始まるファイルを除く)

% ls *.(log|aux)~abc*

特殊文字は以下の通りです

/
ディレクトリ
.
通常のファイル
@
シンボリックリンク
*
ディレクトリ以外の実行可能なファイル
r
読み取り可能なファイル
w
書き込み可能なファイル
x
実行形式のファイル
U
カレントユーザが所有するファイル
u
[ユーザ名]指定したユーザが所有するファイル
s
setuidされたファイル
~
条件から除外する
^
以降の指定を否定する
-
次の指定にシンボリックリンクを含む

設定

.zshrcに以下を追加

setopt EXTENDED_GLOB

Emacs シェルモードで zsh

.zshrcに以下を追加

[[ $EMACS = t ]] && unsetopt zle
更新日時:2004/07/16 15:44:26
キーワード:
参照:[コマンド]