コマンドラインインタフェースを活用するためのティップス

文:Vincent Danen(TechRepublic) 翻訳校正:村上雅章・野崎裕子
2008-11-26 08:00:00
  • このエントリーをはてなブックマークに追加

 私の記事を過去に読んだことのある人であれば、私がコマンドライン派だということを知っているはずである。コマンドラインはGUIよりも高速で、効率が高く、パワフルである。もちろん、よくできたGUIは見た目に優れているものの、実際に仕事をやり遂げなければならない場合、私ならば必ずコマンドラインインタフェース(CLI)を選択する。私は未だにテキストモードの電子メールクライアント(Mutt)やテキストモードのIRCクライアント(Irssi)を使用している。GUIのクライアントでも同等の機能が提供されていてしかるべきであるが、実際には提供されていないことも多く、そういった場合にはイライラさせられることになるのである。

 そうは言ったものの、CLIは取っつきにくく判りにくいと思っている人もいるだろう。しかし、そんなことはないのだ。CLIの使用時に役立つティップスや小ワザは数多くある。本記事ではそういったものをいくつか紹介する。

 ファイル名の変更という作業は、よくできたGUIマネージャで行う方がCLIで行うよりも簡単に行えると言われている。通常の場合、ファイル名をクリックすることでファイル名の編集が可能になる。ファイル名が長い時、この方法は特に便利なものとなる。しかし、こういったことはシェルでも簡単に行えるのである。すなわち、タブキーを用いたファイル名の補完機能を使用するか、以下のようなちょっとした小ワザを使用すればよいのだ。

$ mv thisisareallylongfilename{,.txt}

 これは、「thisisareallylongfilename」というファイル名を2度入力することなく「thisisareallylongfilename.txt」というファイル名に変更するコマンドである。タブキーを用いたファイル名の補完機能も使えるため、この方法はそれほど魅力的なものには見えないかもしれない。しかし、こういった表記法をシェルスクリプト内で使用することにより、数多くのファイル名をとても簡単に変更することができるようになるのである。拡張子の付いているファイル名を変更するには以下のようにするだけだ。

$ mv foo.{jpeg,jpg}

 これによってファイル名を「foo.jpeg」から「foo.jpg」へと変更することができる。

 また、バッチファイル中でのファイル名変更にはrenameコマンドも有用である。例えば、「.php4」という拡張子のファイルを「.php」という拡張子のファイルに変更したいとしよう。こういったことは、以下のようにファイル名の変更コマンドを使うことで簡単に行うことができる。

$ touch 1.php4 2.php4 3.php 4.php4
$ rename .php4 .php *.php4
$ ls *php*
1.php  2.php  3.php  4.php

 シェルの拡張文字も見過ごされがちなものである。例えば、あるコマンドを実行した後、そのコマンドラインの前後に何かを追加して再実行する必要が出てきた場合、!!文字列を用いることで直前のコマンドラインをその場所に(無編集で)展開することができる。具体例を挙げると、実行可能ビットが設定されていないシェルスクリプトファイルをコマンドライン上で直接指定して実行しようとすると以下のようなエラーとなる。

$ ~/foo.sh
-bash: /home/vdanen/foo.sh: Permission denied

 この場合、以下のようにすることで子プロセスのシェルにシェルスクリプトファイルを引き渡して実行させることができる。

$ sh !!
sh ~/foo.sh

 同様の用例として、sudoをコマンドラインの前に付加することで、直前のコマンドに上位権限を付与したうえで再実行するということもできる。

 この他にも以下のような有用な拡張文字の並びがある。

  • !*によって、直前のコマンドの引数を展開することができる(!!は直前のコマンドライン全体を展開する)
  • !$によって最後の引数を展開することができる
  • !:3によって直前のコマンドの3番目の引数を展開することができる

 以下は実際の使用例である。

$ ls /tmp/somedir
ls: cannot access /tmp/somedir: No such file or directory

$ mkdir -p !*
mkdir -p /tmp/somedir

$ touch 1 2 3
$ cp !:2 /tmp/somedir
cp 2 /tmp/somedir

 最後のティップスとして、私のお気に入りとなっているウェブリソースの1つを紹介する。[shell-fu]$というウェブサイトには現在、シェル関連のティップスが400個近く掲載されており、CLIをもっと使いこなしたいと思っている人にとって読むに値するものとなっている。

この記事は海外CNET Networks発のニュースをシーネットネットワークスジャパン編集部が日本向けに編集したものです。海外CNET Networksの記事へ

  • 新着記事
  • 特集
  • ブログ