UNIXのコマンド 1

ファイルの中身を表示するコマンド

C言語のプログラムやMAYAのデータファイルのようなテキストファイルの中身を表示するにはviなどを使用しても良いが、ファイル表示用のコマンドを使った方が誤ってファイルの中身を書き換えたりするトラブルを避けることができる。

テストデータのダウンロード

以下の2つのファイルをホームディレクトリの下のunix2の中にコピーする。

more と less

more と lessはテキストファイルの中身を表示するためのコマンドである。

more
UNIXに古くからあるコマンド。
古いバージョンのものは後戻りができなかったが、 今のものはできるものが多い。
# more file1       <- moreでfile1を表示
less
moreに機能を追加したコマンド。
普通はこちらを使えば良いが、lessが無いマシンもあるので moreも覚えておいた方が良い。
# less file1       <- lessでfile1を表示

覚えておくと良いmore, lessの基本的なコマンドは以下の通り。

Space
次の画面を表示
q
more, lessを終らせる
b
前ページへ戻る。(後戻りの機能があるmore, lessの場合)
v
viを起動しファイルを書き換える。
(行番号)G
(行番号)の部分を表示

cat

小さなファイルの場合は、catコマンドで表示するという方法でも良い。
ただし、このコマンドはファイルの表示だけでなく色々な目的のために使用することがある。 例えば、2つ以上のファイルを1つのファイルにまとめる時などである。
以下の例ではfile1とfile2をfile3にまとめている。 (file3の中身はfile1とfile2が合体したものになって入る。)

# cat file1 file2 > file3

head と tail

head と tailはファイルの最初と最期の部分だけを表示する単純なコマンドである。
これだけだと、あまり役にたたないが下の例題のように組み合わせると色々なことができるようになる。

head
ファイルの先頭の部分を表示する。
デフォールトは10行分。
# head file1       <- file1の最初の10行を表示
# head -20 file1       <- file1の最初の20行を表示
tail
ファイルの最期の部分を表示する。
デフォールトは同じく10行分。
# tail file1       <- file1の最後の10行を表示
# tail -15 file1       <- file1の最後の15行を表示

コマンドを組み合わせて使う

シェルを使うと複数のコマンドを リダイレクションパイプ などと組み合わせることによって 一つ一つのコマンドではできないことができるようになる。

例題

あるファイル(file1)の11行目から20行目までだけを表示するにはどのようにすれば良いか。

headtailの2つのコマンドだけを知っている時、 この例題を解くためにどうすれば良いか考えてみる。
この2つのコマンドのどちらか一つでは目的を達成できない。
そこで、この2つのコマンドを組み合わせることによってできないかと考えてみる。
そのためには以下のように考えれば良いだろう。

  1. headによって最初の20行分を取り出す。
  2. その20行分からtailによって後ろの10行分を表示する。

上の考え方をリダイレクションを使って実行すると以下の様になるだろう。

# head -20 file1 > tmp
# tail tmp

これでも良いが、tmpという余計なファイルができてしまうことと、 コマンドを2回にわけて打ち込むという手間がかかる。
そこで、あるコマンドの出力を別のコマンドの入力として渡すときには、 パイプを使うと2つのコマンドを一つにまとめることができる。

# head -20 file1 | tail

まとめ

参考


Prev | Next
Home | Contents
abe@injapan.net