Unixコマンドラインの操作方法


コマンドラインの操作方法は覚えることが多く学習に苦労します。しかしCUI(Character User Interface)上でのコマンド操作を覚えると、高速にファイルの探索やテキスト編集ができます。普段使いの環境ならともかくサーバ運用をするとなると、コマンド操作を使わざるを得ないような状況に出くわします。Unixコマンドは覚えておいて損はないでしょう。

一方で実際にCUI上で作業する必要があるにしても、操作の手順書が用意されているか、実行すべきコマンドが限られている・明記されている場合がほとんどです。たとえば「このディレクトリ(directory)に移動してこのコマンドを実行せよ」、「このファイル(file)をこのように編集してこのコマンドを実行せよ」といった具合です。このような指示が与えられたのであれば、特定のディレクトリに移動する方法さえわかってさえいればいいのです。したがって、このページでは必要最低限のコマンドのみを紹介するにとどめます。

なお、本ページのコマンド実行例はすべてNetBSD-current/amd64上で確認したものであり、他バージョンや別アーキテクチャ・他プラットフォーム上でまったく同じ動作ができることを保証するものではありません。しかし本ページ上で述べている内容は多少の差はあれどFreeBSDやGNU/Linuxディストリビューションでも共通しています。

  1. 絶対パスと相対パス
  2. 現在位置を確認する
  3. ディレクトリの中身を見る
  4. ディレクトリを移動する
  5. ディレクトリを作る
  6. ディレクトリを消す
  7. ファイルの中身を見る
  8. ファイルを移動する・名前を変える
  9. ファイルを消す

絶対パスと相対パス

Unixのシステムは図1-1のように木構造となっています。頂点のルートディレクトリ(root directory)から枝が伸び、俯瞰すると樹木のようなかたちになっているわけです。

Example of unix directory hiearchy
図1-1: Unixのディレクトリ構造の例。スペースの都合上省略していますが、実際はもっとディレクトリやファイルが存在します。この図では一部のみ抜粋しています。

頂点のルートディレクトリから見たディレクトリやファイルの所在を「絶対パス(absolute path)」と呼びます。ユーザが位置しているディレクトリを「カレントディレクトリ(current directory)」と呼びますが、そのカレントディレクトリから見たディレクトリやファイルの所在を「相対パス(relative path)」と呼びます。たとえば図1-2を見てください。図中のファイルmyprogのパスは/home/uki/src/myprogです。一方/home/ukiディレクトリにいるユーザから見たmyprogの相対パスはsrc/myprogまたは./src/myprogとなります。ここで、「.(ドット)」はカレントディレクトリをあらわします。

Example of absolute/relative path
図1-2: 絶対パスと相対パスの例。相対パスが示すディレクトリやファイルはカレントディレクトリによって決まります。

単に「パス」と書いてある場合、絶対パス・相対パスどちらを使っても構いません。

現在位置を確認する

いまどこのディレクトリにいるのか、つまりカレントディレクトリを確認するにはpwd(1)を実行します。

pwd
/home/uki

キーボードからpwdと打鍵してEnterキーを入力すると、カレントディレクトリの絶対パスが画面に表示されます。この実行例では/home/ukiがカレントディレクトリのようです。

システム構築の手順書によっては、相対パスを用いてコマンド実行の指示をおこなうものもあります。相対パスが指し示すファイルやディレクトリはカレントディレクトリによって左右されます。したがって慣れないうちは常にカレントディレクトリを確認するといいでしょう。

ディレクトリの中身を見る

ディレクトリの中身を表示するにはls(1)を実行します。

ls
src
file src
src: directory

この実行例では、カレントディレクトリにsrcというディレクトリかファイルがあるようです。一見どちらかわからないのでfile(1)コマンドで種類を判定してみたところ、ディレクトリだとわかりました。

info

ディレクトリの中身を表示するにせよもっと効率よくファイルかディレクトリかを判別できないものでしょうか。実は多くのUnixコマンドでは、ユーザがコマンドへあるオプションを渡すことでコマンドの動作や出力結果を変更できます。そのオプションはコマンドによってそれぞれ異なります。コマンド特有のオプションを調べるにはオンラインマニュアルを読むのが一番ですが、Unixそのものに慣れないうちはGoogle検索に頼ってもいいでしょう。

ls(1)にディレクトリへのパスを渡して実行すると、そのディレクトリの中身が出力されます。

ls src
myprog
warn

上記コマンドライン例では、lsのあとに半角スペースが1つ付いてます。コマンドにファイル名やディレクトリ名、オプションなどを渡すときは半角スペースで区切ることを忘れないでください。コマンド例に半角スペースがあるかどうかも注意し、その通り打鍵し実行しましょう。

ディレクトリを移動する

カレントディレクトリから別ディレクトリへ移動するにはcd(1)を実行します。

pwd
/home/uki
ls
src
cd ./src
pwd
/home/uki/src
ls
myprog

オプションをなにもつけずにcd(1)すると、ログインユーザのホームディレクトリまで移動します。

cd
pwd
/home/uki

最初のうちはcd(1)したあとにpwd(1)ls(1)を実行し、自分がいまどこのディレクトリにいてそのディレクトリにはどのようなファイルがあるのかを常に把握しておく癖をつけておくと混乱しにくくなります。

ディレクトリを作る

ディレクトリの作成にはmkdir(1)に作りたいディレクトリのパスを渡します。たとえばmydirという名前のディレクトリをカレントディレクトリに作りたいときは次のように実行します。

mkdir mydir

当然/home/uki/mydir./mydirといったように絶対パスや相対パス指定でも構いません。

ディレクトリを消す

ディレクトリを削除するにはrmdir(1)に削除対象のディレクトリへのパスを渡します。上で作ったばかりのディレクトリを消すには次のように実行します。

rmdir mydir

なお、削除対象のディレクトリにディレクトリやファイルが存在するとrmdir(1)の実行は以下のように失敗します。

rmdir not_empty_dir
rmdir: not_empty_dir: Directory not empty

中身ごとディレクトリを削除したいときは後述するrm(1)コマンドの-f-rオプションを使うといいでしょう。しかし、削除されたディレクトリやファイルは基本的には復元不可能です。注意して実行してください。

ファイルの中身を見る

ls(1)でファイルの一覧を取得しても、それらのファイルになにが書かれているのかを調べたいときもあります。less(1)のようなページャソフトウェアを使うことで、画面上にファイルの中身を映せます。less(1)に中身を読みたいファイル名を渡し実行してください。

less test.txt

画面上にtest.txtの内容が表示されます。less(1)の操作方法はおおよそ以下の表のとおりです。前方一致・後方一致の検索もできますが、ここでは説明を省きます。他の機能についてはオンラインマニュアルなどを参照してください。

操作 入力
一行下へスクロールする j
一行上へスクロールする k
一ページ下へスクロールする SPACE
一ページ上へスクロールする b
less(1)を終了する q

ファイルを移動する・名前を変える

ファイルやディレクトリのパスを変えたり名前を変更するにはmv(1)を使います。このコマンドの書式は次のようになっています。

mv [移動元のパス] [移動先のパス]

ここで、ファイル/home/uki/test.txt/home/uki/src/test.txtへ移動したいとしましょう。/home/uki/srcディレクトリは既に存在するものとします。このときmv(1)を次のように実行します。

mv /home/uki/test.txt /home/uki/src/test.txt

mv(1)にはファイルやディレクトリの名前変更もできます。いま移動した/home/uki/src/test.txt/home/uki/src/renamed.txtにしたいとき、次のようにmv(1)を実行します。

mv /home/uki/src/test.txt /home/uki/src/renamed.txt

絶対パスではなく相対パスでの指定も可能です。

ファイルを消す

ファイルやディレクトリの削除にはrm(1)を使います。削除対象のファイルやディレクトリのパスを指定します。たとえばtest.txtを削除したいときは以下のように実行します。

rm test.txt

このコマンド実行によりtest.txtは完全に削除され、復元できません。このコマンドを使うときは細心の注意を払ってください。