PCを使って何か作業をするということは、つまるところデータの作成、編集を行っているということになります。そしてPC上でデータは「ファイル」という単位で保存されているのはご存知の通りです。データを新規作成する場合は新しいファイルが作成されますし、アプリケーションがデータを閲覧、編集する場合は既存のファイルを開きます。場合によっては、外部メディアにファイルをコピーや移動したり、あるいは不要なファイルを削除したりすることもあります。Linuxではcp, mv, rmといったコマンドでファイルの操作を行いますが、ほとんどの人は何らかのファイルマネージャを用いてファイル操作を行っているのではないでしょうか。
今週のレシピは基本に戻り、Ubuntuでファイル操作を便利に行うツールの紹介です。
Nautilus
NautilusはUbuntu(Gnome)の標準ファイルブラウザです。パネルの「場所」メニューを開くことで表示される「ファイル・ブラウザ」がNautilusになります。Windowsのエクスプローラと似た操作感を持つNautlisですが、実は様々な便利機能が搭載されていたりします。
実はNautlisはタブ型ファイラとしての機能を持っています。フォルダを開く際に中クリックするか、右クリックして「新しいタブの中に開く」を選択してみてください。すると新しいタブでそのフォルダを開くことができます。タブ部分にファイルアイコンをドロップすれば、別のタブで開いたフォルダにファイルをコピーや移動することもできます。ファイルのコピーや移動は当然、コピー元とコピー先のフォルダが存在するわけですが、たくさんのウィンドウを開くとデスクトップが散らかりがちです。このようにタブを使うことで、ウィンドウをすっきりさせることができます。
タブを使えば一つのウィンドウ内に複数のフォルダを開いて切り替えることができますが、同時に表示できるタブは一つだけです。場合によっては「二つのフォルダの内容を並べて表示」した方が効率がいいこともあるでしょう。そのような場合はF3キーを押してみましょう。Nautilusのウィンドウを左右二つのペインに分割し、それぞれのペインを独立して操作することができます。単一のペインに戻したい場合は、再度F3キーを押してください。
Gnomeの「場所」メニューには「サーバに接続」という項目があり、Windows共有フォルダのようなリモートフォルダを簡単にマウントすることが可能になっていますが、実は事前にマウント処理を行わなくてもNautilusからこれらのフォルダにアクセスするだけで、自動的にマウントが行われるようになっています。Nautilus上でCtrl+lキーを押すと、ロケーションバーの表示形式がパンくずリスト形式からテキストボックス形式に切り替わります。この状態でsmb://スキーマやsftp://スキーマを利用して、接続先のサーバ名を入力してみましょう。認証が完了すれば、gvfsによって共有フォルダがマウントされます。
GNOME Commander
Nautilusに2ペインのモードがあることからわかるように、古来よりファイラは二画面のほうが効率がいいと考える人は少なくないようです。GNOME Commanderも左右二つのペインをもつ、いわゆる「二画面ファイラ」です。GNOME Commanderはソフトウェアセンターからインストールすることができます。起動は「アプリケーション」->「アクセサリ」->「GNOME Commander」から行いましょう。
ウィンドウ下部にファンクションキーの機能が列挙されていることからわかるように、「編集」「コピー」「移動」といった機能は各ファンクションキーに割り当てられています。左右どちらかのペインでファイルを選択し、反対側のペインへ移動やコピーを行うというのが、GNOME Commander(に限らず、二画面ファイラ)の基本的なオペレーションになります。また、ペイン間を移動するにはTabキーを使用します。
内蔵ビューア
GNOME Commanderはファイルの内容を表示するビューアを自前で搭載しています。簡易なビューアながら、テキスト、バイナリ、16進、画像という表示モードをキーひとつで切り替えることが可能で、画像表示時には画像のメタデータまで表示することができます。ファイルを選択してF3キーを押すことでビューアが起動しますが、残念ながら日本語が表示できません。F4キーを押すことで編集用にgeditが起動しますので、日本語を含むテキストファイルを表示したい場合には、geditを使ってしまうのが手っ取り早いでしょう。「設定」->「オプション」->「外部プログラム」->「内部ビューアを用いる」のチェックを外せばF3キーでもgeditが起動するようになりますが、画像ファイルでもgeditが起動してしまうようになるため、お勧めできません。
リモートフォルダへの接続
「接続」->「リモートサーバ」を選択すると、リモートの接続先を管理することができます。ここでWindows共有フォルダやSSHサーバを設定しておくことで、ツールバーのボタンからリモートフォルダへ接続することが可能になります。当然、リモートフォルダはローカルフォルダと同様に扱うことができます。
コマンドラインの使用
GNOME Commanderのウィンドウ下部には、コマンドラインが一行存在します。ここにはシェルと同様にコマンドを入力することができます。例えば「rm hoge」と入力するとhogeファイルが削除されますし、「cd HOGE」のようにフォルダを移動すれば、移動先のフォルダがペインに表示されます。グラフィカルなファイラとはいえ、やはりコマンドを使った方が効率がよい場合もありますので、シチュエーションに応じて使い分けられるとよいでしょう。
フォルダの比較と同期
二画面ファイラには、ふたつのペインを並べるという特徴を活かした機能が多くあります。例えばShift+F2キーを押すと、左右のペインのフォルダを比較することが可能です。左右のペイン間で差分が存在した場合、差異のあるファイルが自動的に選択された状態になります。例えば片方のペインにリモートフォルダを表示させておき、フォルダを比較してコピーを行えば、ローカル上の最新版をリモートにコピーするような運用が可能です。
また「ファイル」->「ディレクトリの同期」を使えば、ファイルのdiffを詳細に表示しつつ左右ペインを同期させることができます。差分の取得に使う外部プログラムはオプションで設定できますが、デフォルトではmeldが指定されています。ですのでmeldパッケージを別途インストールしておきましょう。
meldが起動されると、左右ペインのフォルダの比較画面が表示されます。片方にのみ存在するファイルは緑色の太字で表示され、存在しないファイルには打ち消し線がついています。また差分の存在するファイルは赤色で表示されています。赤色のファイルを選択して「比較」をクリックすると、グラフィカルな差分が表示されます。「左」「右」ボタンをクリックすると、選択しているファイルを反対のペインへコピーします。差分内容を確認し、よければ上書きコピーしてしまいましょう。ただし残念ながら、ディレクトリの同期機能はリモートファイルシステム上での動作がサポートされていません。
高度なファイル名変更
ファイルの名前を変更する、というのはよくある話です。通常ですとmvコマンドや、Nautilus上でF2キーを押して手作業でリネームを行う必要がありますが、これはなかなか面倒です。そこでGNOME Commanderに用意されている、高機能なリネーム機能を使ってみましょう。
まずリネームしたいファイルを選択した状態で、「ファイル」->「高度な名前変更ツール」を起動してください。ここではテンプレートと正規表現を用いてファイル名を変更することが可能です。
テンプレートには、ファイル名や拡張子、連続した番号、日時といったデータをファイル名に埋め込むことはもちろん、ファイルのメタデータを読み出す機能までが用意されています。例えばすべてのファイルに連番を振ってみたり、ファイル自身のID3タグから情報を引っ張ってきて、MP3ファイルのファイル名にトラックナンバーやアーティスト名を適用するようなことができます。
Midnight Commander
Midnight Commander(以下、mc)は、端末上で動作するテキストベースの二画面ファイラです。GNOME Commander同様、エディタやビューアの機能を内蔵しており、ファイラ上からファイルの閲覧や編集が可能になっています。また仮想ファイルシステムをサポートしており、tarやzipアーカイブを展開することなく、通常のディレクトリのように扱えます。Midnight Commanderもソフトウェアセンターからインストールが可能で、パッケージ名は「mc」です。
mcもGNOME Commander同様にファンクションキーを用いて操作を行いますが、Gnome端末を使用しているとファンクションキー入力が端末に横取りされてしまうことがあります。例えばmcの終了はF10ですが、F10を入力してもGnome端末のメニューが開いてしまう、などです。これを回避するには、Gnome端末の「編集」->「キーボード・ショートカット」を開き、「メニューのショートカット・キーを有効にする」のチェックを外してください。またショートカットキー一覧の中で、ヘルプがF1キーに割り当てられていますが、これも無効にしておきましょう。これでF1キーでmcのヘルプを呼び出すことができるようになります。
ツリーモード
mcは通常の二画面モードの他に、ツリーモードを搭載しています。Windowsのエクスプローラのように、左側のペインにフォルダツリーを表示し、右側のペインにフォルダの内容を表示するというモードです。メニューの「Left」->「ツリー」を選択すると[1]、左側のペインがツリー表示に変更されます[2]。元に戻すには「Left」->「一覧方法」で表示スタイルを選択してください。
シェルモード
ファイラ操作中に、シェルを使いたいこともあるでしょう。GNOME Commander同様、最下行に一行のみのコマンドラインが用意されていますが、Ctrl+oでこれを全画面に広げることが可能です。この際のカレントフォルダは選択中のペインのフォルダになり、シェルの中でフォルダ移動するとファイラに復帰した際には移動後のフォルダがペインに表示されています。ファイラへの復帰はやはりCtrl+oです。
wdired
さあ、今週もみんな大好きEmacsの出番がやってまいりました。当然ですがEmacsにもファイラ機能が搭載されていて、dired(ダイアード、ディレクトリエディタなど)と呼ばれています。C-x C-fかC-x dでディレクトリを開けば、diredが起動します。
diredの基本
diredではファイルに「マーク」をつけ、マークのついたファイルに対して操作を適用するという方法をとります。例えばファイルを削除したい場合は、ファイルにカーソルを合わせてmキーかSpaceキーを押してマークをつけます[3]。その後Dキーで削除操作を適用して、実際の削除を行います。なおCキーだとコピー、Rキーだと移動(リネーム)が行えます。また、削除を行う場合に限り、dキーで削除用マークをつけてからxキーで削除操作を適用することもできます。
NautilusやWindowsのエクスプローラのように、Ctrl+クリックで複数のファイルを選択してドラッグ&ドロップする操作では、うっかりCtrlキーを離してクリックしてしまうと、最初から選択をやりなおさなければなりません。また、ドラッグ中にうっかりマウスボタンを離してしまうと、どこか知らないフォルダにファイルが移動してしまい、ファイルを見失ってしまうこともあります[4]。しかし、キーボードでマークをつけてコマンドを適用するdiredの操作では、そういったオペレーションミスがそもそも存在しません。
ファイルのプレビュー機能
前述の他のファイラと同様、diredでもファイルをプレビューすることができます。dired上でファイルを選択してvキーを押してください。Emacsはテキストエディタですからテキストファイルはもちろんそのまま表示することができますし、驚くことにpngやjpegといった画像や、PDFファイルまでもEmacs上で開くことが可能です。プレビューを終了する場合はqキーを押してください。
リネームにEmacsのテキスト編集パワーを
diredをさらに便利に使うための拡張が、wdiredです。wdiredはemacs-goodies-elパッケージに収録されていますので、別途インストールしておきましょう。.emacsにはwdiredモードに入るキーを設定しておくと便利です。筆者はrキーを割り当てており、.emacsの記述は以下のようになっています。
diredが起動している状態でrキーを押すと、wdiredモードに入ります。diredのバッファは通常リードオンリーですが、wdiredモードに入ることで、diredのバッファをテキストとして「編集」することができるようになります。バッファに表示されているファイル名をEmacs上で書き換えることで、実際のファイルのリネームを行うことができるのです。ファイル名の書き換えが完了したら、C-c C-cでrdiredモードを抜けるか、C-x C-sでバッファの保存を行えば、変更が反映されます。
Emacs上でテキスト編集ができるということは、ファイルのリネームに正規表現置換をはじめとしたEmacsの強力な編集能力を活用することができるということに他なりません。wdired上でのM-x replace-regexpやM-x query-replaceの便利さを、ぜひ体験してみてください。