第9回 bashの便利な機能を使いこなそう

「シェル」。人とOS(カーネル)をつなぐもの。シェルの使い勝手はOSの使い勝手とほぼ同義である。bashの機能を使いこなせば、Linuxはさらに使いやすく、快適になるだろう。そこで、操作をサポートする機能の使い方やbashのカスタマイズ方法を紹介する。

関野史朗
2002/3/12

コマンドに別の名前を付けて使いやすく

 まず最初に紹介するのは、「エイリアス」(alias:別名)です。文字どおり、コマンドに別名を付ける機能です。

 例えば、日本語化されたlsがあって、jlsという名前だとしましょう。いちいち「jls」とタイプするのは面倒なので、「ls」とタイプするだけでjlsを実行するようにしたい場合などに利用します。具体的な方法は、

$ alias ls=jls

です。これで、「ls」とタイプするとjlsが実行されます。ただし、エイリアスが効くのはコマンドラインからタイプしたときだけで、シェルスクリプト中ではlsはlsのままです。

 引数の付いたコマンドを実行させたい場合は、「'」(シングルクオート)でくくります。Emacs上で動作するMUA「mew」は、Emacsから実行することもできますが、

$ emacs -e mew

として直接コマンドラインから実行することも可能です。このエイリアスを作る場合は、

$ alias mew='emacs -e mew'

とします。

 シェルスクリプトでもエイリアスと同じことを実現できます。ただ、シェルスクリプトだとコマンドごとに独立したファイルを作らざるを得ません(工夫によって、いくつかを統合できますが)。作成したスクリプトは、コマンドパスに指定されたディレクトリに格納しておく必要があります。単純なコマンドの置き換えだったらエイリアスの方が手軽ですね。

ファイル名補完でタイプの手間とミスを減らす

 bashを使っていて何がありがたいかといえば、「ファイル名補完」でタイプの手間が省けることでしょう。[Tab]キーを押すと、bashが残りの文字列を入力してくれるのです(編注)。

編注:ちなみに、Windows NT/2000のコマンドプロンプト(cmd.exe)にもファイル名補完機能がある(レジストリの編集が必要)。HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionCharのDWORD値を9(デフォルトは0)にして再起動すればよい。bashと同じく[Tab]キーでファイル名を補完するようになる。Windows XPはデフォルトで補完機能が有効になっているので、レジストリの編集は不要だ。

 補完機能を理解するには、試してみるのが一番です。取りあえず、「le」とタイプしてから[Tab]キーを2回押してみましょう。

$ le
leaftoppm    lessecho     lesspipe.sh  lex
less         lesskey      let
$ le

と表示されます。これが「le」で始まるコマンドです。続けて「a」とタイプして、もう1度[Tab]キーを押します。すると今度は一覧表示が出ず、コマンドライン上に

$ leaftoppm

と表示されます。「lea」までタイプすると、これで始まるコマンドは1つしかないので対象が確定するわけです。

 コマンドだけでなく、引数も補完できます。例えば、/etcディレクトリで、

$ less c[Tab]キー

とすると、

cdrecord.conf  cron.d         cron.hourly    cron.weekly    csh.cshrc
cipe           cron.daily     cron.monthly   crontab        csh.login
$ less c

と表示されます。続けて「r」をタイプして[Tab]キーを押すと、今度は一覧表示ではなく、

$ less cron

というコマンドラインが表示されます。この状態でさらに続けて2度[Tab]キーを押すと、cronで始まるファイルの一覧が、

cron.d        cron.hourly   cron.weekly
cron.daily    cron.monthly  crontab

のように表示されます。コマンドラインは変わっていないので、もう1文字「t」をタイプしてから[Tab]キーを押せば、

$ less crontab

となります。「cront」で始まるファイルは1つしかないので、ファイル名はこれで確定です。よく見ると、crontabの後ろに空白があるのでそれと分かります。これで、[Enter]キーを押すとcrontabファイルの中身を表示できるというわけです。

 ファイル名補完を使うと、タイプの手間を大幅に減らせます。さらに、タイプミスも少なくなるというおまけ付きです。どんどん活用しましょう。

ワイルドカードで複数ファイルを一括指定

 複数のファイルに対して同じ処理を行う際に便利なのが、「ワイルドカード」です。MS-DOSやWindowsでもおなじみの、「*」や「?」です。「*」は任意の文字列、「?」は任意の1文字を表します。「*.txt」なら拡張子がtxtのファイルすべて、「cron*」なら名前が「cron」で始まるファイルです。「*rom*」とすると、途中に「rom」という文字列を含むファイルということになります。

 正規表現の一部である「クラス表現」も使えます。クラス表現とは、「[a-z]」のような表記です。これで小文字のアルファベット「aからz」までのいずれか1文字にマッチします。否定の「!」を使って「[!a-z]」とすると、「aからz以外」の1文字にマッチすることになります。「test.[co]」なら、test.cとtest.oを意味するわけです。

 ワイルドカードを展開するのはbashの仕事で、コマンドには展開された結果である複数のファイル名が引数として渡されます。つまり、コマンド側でワイルドカードを展開する必要はない、ということです。なお、「*」などの文字をワイルドカードとして展開してほしくないときは、シングルクオートでくくります。

過去に入力したコマンドを実行する

 以前入力したのとまったく同じ、あるいは引数だけ違うコマンドを再実行することはよくあります。これを簡単に行えるのが「ヒストリ機能」です。

$ history

とすると、過去に実行したコマンドがリストされます。それぞれに数字が付いているので、「!」に続けて実行したいコマンドの数字をタイプし、[Enter]キーを押すとそのコマンドを再実行できます。また、「!」に続けて文字をタイプすると、その文字で始まる過去のコマンドが実行されます。

 この辺りは、いにしえのテレタイプベースでの動作を前提とした機能です。もちろん、bashにはビデオ端末に即したヒストリ機能もあります。まず[Ctrl]+[P](あるいは[↑]キー)を押すと、過去に入力したコマンドを順番にさかのぼって表示します。行き過ぎたら、[Ctrl]+[N](あるいは[↓]キー)で戻れます。目的のコマンドが表示されたら、[Enter]キーで実行です。

 コマンドをそのまま実行せず、引数などを変更したい場合は、Emacsに準じたキーの組み合わせで編集できます。単純にカーソルを1つずつ動かすだけなら、カーソルキーも使えます。

  行頭に移動 [Ctrl]+[A]
  行末に移動 [Ctrl]+[E]
  1文字左に移動 [Ctrl]+[B]
  1文字右に移動 [Ctrl]+[F]
  1単語左に移動 [ESC]+[B]
  1単語右に移動 [ESC]+[F]
  1文字削除 [Ctrl]+[D]、[Ctrl]+[H]

 察しのよい方はお気付きかもしれませんが、インクリメンタルサーチもできます。[Ctrl]+[R]でこのモードに入ります。適当に文字をタイプすると、その文字を含んだ過去のコマンドが表示されます。複数の文字をタイプすれば、その順番で入力された過去のコマンドを表示します。

 
1/2

Index
Windowsユーザーに教えるLinuxの常識
  コマンドに別の名前を付けて使いやすく
ファイル名補完でタイプの手間とミスを減らす
ワイルドカードで複数ファイルを一括指定
過去に入力したコマンドを実行する
  bashのカスタマイズ
 bashの設定ファイル

連載 Windowsユーザーに教える Linuxの常識


 Linux Squareフォーラム Linux/システム学習関連記事
連載:Windowsユーザーに教えるLinuxの常識(全12回)
Windowsのセオリーが通用しないLinux。Linux初心者向けに、LinuxというOSの考え方/常識をゼロから伝授!
連載:LFSで作って学ぶLinuxの仕組み(全4回)
管理者(root)は、何をしなければならないのか? 管理に際して検討すべきことは? 管理のための技術とは? など、駆け出し管理者のための考え方や方法論を検討する
連載:Linux管理者への道(全8回)
「Linux From Scratch」というシンプルなLinuxをインストール&環境構築する作業を通して、LinuxがOSとして機能するための仕組みや設定を見直そう
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

TechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ



- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH