通常なら他のツールと組み合わせたり,
エイリアス
エイリアスは手軽に設定できすぐに効果が得られる便利な機能である。他のシェルでも使える基本的なエイリアスの他に,
- 接尾辞エイリアス
- グローバルエイリアス
接尾辞エイリアス
接尾辞alias -s
で登録する。
alias -s pdf=xpdf
とすると,".pdf"
のファイルをコマンドラインのコマンド位置で
% ls foo.pdf hoge.pdf % foo.pdf zsh: command not found: foo.pdf (普通は起動できない) % ./foo.pdf zsh: permission denied: ./foo.pdf (これも起動できない) % alias -s pdf=xpdf % foo.pdf (xpdf foo.pdf が起動される)
グローバルエイリアス
通常のエイリアスはコマンドラインのコマンド位置でのみ展開されるが,
% alias foo=yes % echo foo foo (コマンド位置でないのでfooのまま) % alias -g foo=yes % echo foo yes (展開される) % unalias foo unalias: no such hash table element: yes (fooが先にyesに展開されるので,エイリアスを解除するには以下のようにする) % unalias \foo % echo foo foo
よく参照するファイル名などをグローバルエイリアスに定義しておいても便利だが,
% alias -g NL='>/dev/null' % echo hello NL ("echo hello >/dev/null" に展開されるので何も出力されない) % echo NL hello ("echo >/dev/null hello" に展開され,これも何も出力されない) % NL echo hello (">/dev/null echo hello" に展開され,これも何も出力されない) % NL chmod usage: chmod [-R [-H | -L | -P]] [-h] mode file ... % alias -g NLL='> /dev/null 2>&1' % NLL chmod (何も出力されない)
ファイル名処理
zshには,
基本オペレータ
多くのシェルで共通して使える記号をまず示しておこう。
*
(アスタリスク) - 0字以上の任意の長さの名前にマッチする。
?
(クェスチョンマーク) - 任意の1字。
[…]
- 括弧内に列挙した文字のいずれか1字にマッチ。列挙の代わりに`
0-9
'や`a-f
'のようにハイフンでつないだ文字範囲指定や,[:alnum:]
のようなlocaleに応じたシンボリックな文字種指定も利用できる。 [^…]
[…]
の逆転で,^
以降に列挙した文字にマッチしない1字にマッチする。
zsh固有のオペレータ
まずシェルオプション extended_
をセットzshrc
には記述済み
)
setopt extended_glob
これをセットすることで,
(…)
- グルーピングに用いる。後述の `|' による
「または」 の意味の及ぶ範囲や, 繰り返し指定の適用範囲を限定するために使われる。 <m-n>
- ファイル名の該当部分を整数として解釈したとき,
それがmからnの範囲にあるものにマッチする。以下の例を参照 (下限か上限の片方は省略可能)。 % ls 001 01 1 10 100 25 5 8 % echo <1-20> 001 01 1 10 5 8
x|y
- パターン x または y のいずれかにマッチする。プロセスをパイプでつなぐときの表記と区別するため,
必ず ( )
でグルーピングして用いる。% ls bar bar.
o bar. tex foo. c foo. obj bar. c bar. obj foo foo. o foo. tex % ls f*.(c|o|obj|s) foo. c foo. o foo. obj ^x
x というパターンにマッチするもの以外にマッチ。
z~x
- z というパターンにマッチするものから,xにマッチするものを除外。
x#
- パターン x が0回以上繰り返すものにマッチ。
x##
- パターン x が1回以上繰り返すものにマッチ。
最後から2番目の#
を利用し(*/)#
とすると,""
(空),"*/"
,"*/*/"
,"*/*/*/"
,**/
という簡略表記が用意されている。
また,
(#i)
- (小文字のエル)これより後ろに書いたパターンを大文字小文字を同一視してマッチングを行なう。
(#l)
- これより後ろに書いたパターンが小文字で書かれているときのみ,
大文字小文字を同一視してマッチングを行なう。
たとえば,/usr/(#i)x11R7
は/usr/
にも/usr/
いずれにもマッチするが,/usr/(#l)x11R7
は/usr/
にはマッチするものの/usr/
にはマッチしない。
ファイル修飾子
上記のオペレータは名前を規準としたファイル選択であるが,( )
を付け,
修飾子 | 意味 |
---|---|
/ | ディレクトリ |
. | 通常ファイル |
@ | シンボリックリンク |
* | 実行ファイル |
x | 所有者実行ビットの立っているもの |
s | setuidビットの立っているもの |
uID |
所有者UIDがIDのもの:ユーザ名: のようにユーザ名を同じ文字で挟んで指定する) |
a時刻指定 |
時刻指定 のアクセス時刻を持つファイル: 時刻指定 には整数 nを書くとn 日前の時刻指定, M ',w ',h ', `m ',s ' を前置した整数を書くとそれぞれ 月,+ ' を付けると- ' を付けると(am-20) ' とすると `* ' にマッチするファイルのうちアクセス時刻が20分未満のものが選ばれる。次の修飾子 m ,c での時刻指定もこれと同様 |
m時刻指定 |
時刻指定の修正時刻を持つファイル |
c時刻指定 | 時刻指定 のinode更新時刻を持つファイル |
Lサイズ指定 |
ファイルサイズが サイズ指定 で指定したもの: サイズ指定 には整数を書くとバイト数の指定, k ',m ',p ' を前置した整数を書くとそれぞれ KB,+ ' を付けると- ' を付けると(Lm-20) ' とすると `* ' にマッチするファイルのうち 20MB 未満のものが選ばれる |
- | 修飾子適用先をシンボリックリンクの指しているファイルとする |
^ | 以降に指定した修飾子の意味を反転 |
N | マッチするファイルがない場合は, |
D | ドットで始まる名前にもマッチさせる |
ox (小文字オー) |
o の直後の文字 x に従い,
|
Ox (大文字オー) |
ox と同様だがソート順を逆に |
[m] |
マッチするもののうち m 番目のみ取り出す |
[m,n] |
マッチするもののうち m 番目から n 番目のみ取り出す |