アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » DEVELOPER STAGE » 連載 » zshで究極のオペレーションを » 第4回 使いこなしポイント 一撃編

zshで究極のオペレーションを

第4回 使いこなしポイント 一撃編

通常なら他のツールと組み合わせたり,2~3ステップが必要な処理もzshの多様な展開処理を用いれば一発で結果が得られることが多い。

エイリアス

エイリアスは手軽に設定できすぐに効果が得られる便利な機能である。他のシェルでも使える基本的なエイリアスの他に,zshには以下のエイリアスが用意されている。

  • 接尾辞エイリアス
  • グローバルエイリアス

接尾辞エイリアス

接尾辞(suffix)エイリアスは,ファイルの拡張子とそれを開くアプリケーションプログラムの関連付けとも言える機能で,特定の拡張子を特定のプログラム起動に結び付ける。接尾辞エイリアスは alias -s で登録する。

alias -s pdf=xpdf

とすると,拡張子が ".pdf" のファイルをコマンドラインのコマンド位置で「起動」するとxpdfを起動して開く。

% 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_globをセット(サンプル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/X11R7にも/usr/x11r7いずれにもマッチするが,/usr/(#l)x11R7/usr/X11R7 にはマッチするものの/usr/x11r7にはマッチしない。

ファイル修飾子

上記のオペレータは名前を規準としたファイル選択であるが,ファイルの属性を規準とした選択をすることができる。ファイル名指定の末尾に括弧 ( ) を付け,その内部にファイル修飾子を1つ以上指定する。指定できるファイル修飾子のうち使用頻度が高く有用なものを選んで示す。

修飾子意味
/ディレクトリ
.通常ファイル
@シンボリックリンク
*実行ファイル
x所有者実行ビットの立っているもの
ssetuidビットの立っているもの
uID 所有者UIDがIDのもの(IDは整数か:ユーザ名:のようにユーザ名を同じ文字で挟んで指定する)
a時刻指定 時刻指定 のアクセス時刻を持つファイル:
時刻指定 には整数 nを書くとn 日前の時刻指定,`M',`w',`h', `m',`s' を前置した整数を書くとそれぞれ 月,週,時間,分,秒が単位となる。整数の直前に `+' を付けると「より大きい」,整数の直前に `-' を付けると「未満」の意味となる。たとえば,`*(am-20)' とすると `*' にマッチするファイルのうちアクセス時刻が20分未満のものが選ばれる。次の修飾子 mc での時刻指定もこれと同様
m時刻指定 時刻指定の修正時刻を持つファイル
c時刻指定時刻指定 のinode更新時刻を持つファイル
Lサイズ指定 ファイルサイズが サイズ指定 で指定したもの:
サイズ指定 には整数を書くとバイト数の指定,`k',`m',`p' を前置した整数を書くとそれぞれ KB,MB,ブロック(512バイト)単位, 整数の直前に `+' を付けると「より大きい」,整数の直前に `-' を付けると「未満」の意味となる。たとえば,`*(Lm-20)' とすると `*' にマッチするファイルのうち 20MB 未満のものが選ばれる
-修飾子適用先をシンボリックリンクの指しているファイルとする
^以降に指定した修飾子の意味を反転
Nマッチするファイルがない場合は,空文字列に展開する
Dドットで始まる名前にもマッチさせる
ox
(小文字オー)
o の直後の文字 x に従い,展開後のソート規則を決める:
  • n ファイル名(デフォルト)
  • L ファイルサイズ
  • l リンクカウント
  • a アクセス時刻
  • m 修正時刻
  • c inode更新時刻
  • d ディレクトリ優先
  • N ソート無し
Ox
(大文字オー)
ox と同様だがソート順を逆に
[m] マッチするもののうち m 番目のみ取り出す(最初は1番目)
[m,n] マッチするもののうち m 番目から n 番目のみ取り出す

著者プロフィール

広瀬雄二(ひろせゆうじ)

1968年,山梨県塩山市(現甲州市)生まれ。慶應義塾大学理工学研究科(管理工学専攻)から慶應義塾大学インフォメーションテクノロジーセンターを経て,東北公益文科大学(山形県酒田市)へ。

必修科目として教えているRubyで,学生によるグループ作成プログラムの質が年々上がっていることにゆとり教育の恩恵を感じている。今年の学生も粒ぞろいで満足だが,この状態があと何年続くか気がかり。

URLhttp://www.gentei.org/~yuuji/

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

読むウェブ ~本とインタラクション

ディスプレイで読む活字とそのインタラクション(interaction:相互作用)について,最新Webを紹介しながら読み解いていく。

いま,見ておきたいウェブサイト

この連載では,国内外の最新のウェブサイトを隔週更新で取り上げ,これら最新サイトの特徴や素晴らしい部分を,さまざまな角度から解説していきます。

Windows phoneアプリケーション開発入門

Windows Marcketplace for Mobileがサービス開始され,作成したアプリケーションを個人でも世界をターゲットに公開できる環境が整ってきました。これを機にWindows phoneアプリケーションの開発をしてみませんか?

ここは知っておくべき!Windows Server 2008技術TIPS

5年ぶりのサーバOSとなったWindows Server 2008が出荷されて早2年。2009年にはR2が出荷され,再び注目を集めています。発売前から実施したトレーニングによって感じた,インフラエンジニアの方々に知っておいていただきたい機能を中心にご紹介します。

キーパーソンが見るWeb業界

本連載はWeb Site Expert/gihyo.jpとの連動企画です。阿部淳也, 長谷川敦士, 森田雄のお三方による,Web業界をテーマにした座談会です。

きたみりゅうじの聞かせて珍プレー

ソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。みなさんからの投稿もお待ちしてます!

ActionScript 3.0で始めるオブジェクト指向スクリプティング

野中文雄氏が,簡単なスクリプトは書いたことがあるという初級者を対象に,ActionScript 3.0の基本からクラス定義までを解説します。

まだ間に合う「ITパスポート」受験対策 原山先生の短期合格塾

この連載では,4月18日のITパスポート試験の受験に向けて,短い期間で効率良く受験対策を行う方法や,確実に得点するための裏ワザなどを伝授していきます。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス