ZSHについて |
トップページ | Unix | Cygwin | Vim | WindowMaker | Zsh | テスト | H.O,K. | curry | 日記 |
|
このページは, Unix上(solaris, Linux, Cygwinなど) 上で動作するシェルのzshについて記述しています, 私は職場でも自宅でも, zshを使っています. zshがデフォルトのシェルになっているシステムがないため, 使ったこともなかったですが, いざ使ってみたら, 目から鱗ものです. 特にプログラマブル補間は必見です. オプションが多いアプリケーションの補間をプログラムすれば, 毎日が幸せになれる子とまちがいなしです. (tcshでもかのうですがそれでも, zshのほうが, 素晴らしい. ) zshのいいところzshの使える機能はいろいろいわれているが,
などの機能があり大変便利である. プログラマぶる補完機能以下は, 私のカレントディレクトリで, cd [TAB][TAB]と押したときの スクリーンショットです. zshのプログラマブル補完機能を使用すると, 以下のような効果を得られます.
私は, 補間用に以下の設定(~/.zshrcへの追加)を行っています. # compinitの初期化 autoload -U compinit compinit # 色つきの補完 zstyle ':completion:*' list-colors di=34 fi=0 # 補完候補をカーソルで選択できる zstyle ':completion:*:default' menu select=1 #補完リストに8ビットコードを使う setopt PRINT_EIGHT_BIT 4.2.0以前での補間方法は, コマンド毎に 補間プログラムを記述する必要があります. (サンプルはどこかのサイトを参考にしたかもしれません. 思い出せばそのURLを記述します. ) # man/nohupの引数はコマンドになる. (-cオプション) compctl -c man nohup # echo の引数にはファイル名補間をさせない compctl -cf echo # オプションを指定するには -o, # 変数を指定するには -v, # そしてバインディングを指定するには -b を使う. compctl -o setopt unsetopt compctl -v typeset vared unset export compctl -b bindkey # 自分用のキーワードを使うには -k tphosts=(sakaihdt.gozaru.jp hogehoge.hoge) compctl -k ftphosts ftp # グロブパターンは-g # *( ) の括弧の中には, # / ディレクトリ # - シンボリックリンク # x 実行ファイル # などを使用できる. compctl -g '*(-/)' cd # おまじない setopt autolist setopt automenu 数値演算機能zsh中では, 数値演算機能を使用できます. 通常のBorne Shellでは, a=`expr 1 + 2` のように, exprコマンドの助けが必要ですが, zshには組込みの数値演算機能があります. # 演算の出力を行う $ echo $[ 1 + 2 ] 3 $ echo $(( 1 + 2 )) #<=どちらでもいけるみたい 3 # 演算結果を変数に格納する. $ f=$[ 1 + 2 ] $ echo $f 3 # 小数点演算も行える $ echo $[ 1.2 + 2.2 ] 3.4000000000000004 #<= 適当なところで四捨五入して欲しいも野だ デフォルトでは, 四則演算しか行えませんが, 数値演算モジュールを導入することで, sin/cos/tanなどの数値演算も行えます. # 数学関数の有効化 $ zmodload -i zsh/mathfunc $ echo $[ sin(3.1418) ] -0.00020734640872096304 zshのドキュメントには, 以下の関数が使えると記述があります. acos, acosh, asin, asinh, atan, atanh, cbrt, ceil, cos, cosh, erf, erfc, exp, expm1, fabs, floor, gamma, j0, j1, lgamma, log, log10, log1p, logb, sin, sinh, sqrt, tan, tanh, y0, y1 **, rand48 zsh/mathfuncモジュールですが, Cygwinには, 4.2.0バージョンから導入されています. 一時ファイルの作成コマンドが終了したら自動で削除されるようなファイルを 作りたい場合は, zshの一時ファイル機能を使うと便利です. $ vi =( nkf -e hoge.txt ) 個人的に, lessよりもvi(vim)の方をよく使用するため, zshの一時ファイル機能は重宝しています. zshのグロブパターンshellを使っていると rm hoge* などと 得的条件のファイルを指定するのに グロブパターンを使用するが, zshではファイル名だけでなくファイル属性でも グロブパターンを使用できる. $ ls -Fd *(/) GNUstep/ erdtest/ my_doc/ csc/ jman/ my_syukudai/ # <= ディレクトリのみヒットする $ ls -Fd *(*) a.out* termtest.sh* # <= 実行ファイルのみ それ以外には, (r): 読み込み権限があるファイル (s): setuidビットが立っているファイル (@): シンボリックリンク などが使える. (その他大文字小文字でも区別があるが, 私が普段使うのは上記のパターンぐらいである. ) zshリンクZ-Shell Frequently-Asked Questions Japanese |
トップページ | Unix | Cygwin | Vim | WindowMaker | Zsh | テスト | H.O,K. | curry | 日記 |