shellリダイレクション実習

ichikawaです。今日もよろしくお願いします。

昨日に引き続きshellコマンドのお勉強です。いくつか習ったコマンドを紹介します。

cat > ファイル名
これは指定したファイルに、shell上で文章を入力することができます。ただし、入力した内容がそのまま上書き保存されてしまうので注意。文章入力を終わらせる場合は C-c (コントロール+c) で終了します。
cat >> ファイル名
こちらは上書きではなく ” 追記 ” です。なにか文章を書くと、指定したファイルに書いた文章が足されます。 こちらもC-cで入力を抜けます。
sort ファイル名
指定したファイルの中身を名前順にきれいに並び替えて表示します。表示するだけですので、保存はしません。ちなみに数字と日本語とアルファベットだと、数字→アルファベット→日本語の順で並び替えられます。
sort -r ファイル名
これは先ほどの並び替えの逆順で表示します。
sort < ファイル名
標準入力で並び替えて表示します。見た目は「sort ファイル名」と同じなのですが、内部の動きは違うみたいです。今回ここでは皆、頭を悩まされてました。後日詳しい説明が聞けるようです。
ls *.php 2> ファイル名
前回の授業の終わりのほうで、出力の「> &」を習いましたが、これはエラーが表示された場合、エラー部分とそうでない部分もすべて指定 siたファイルに上書き(もしくは新規作成)するものですが、こちらは、「ls*.php」だと、その表示結果のエラー部分のみをファイルに上書き(もしくは新規作成)します。

これらのコマンドを使い、今日は以下の課題を行ってみました。

課題1:  netstat -p tcp の実行結果をファイル( netstat.log )に保存しなさい

これは前回の復習です。コマンドは

netstat -p tcp > netstat.log

で完成です。netstat.logが作成され、結果が保存されました。


課題2: 作成した netstat.log の中身を逆に並び替えてファイル( reversed.log )に保存しなさい

これは先ほどの並び替えコマンド「sort -r」 を使います。さらに出力コマンドと合わせて

sort -r netstat.log > reversed.log

とするとできます。reverse.logが作成され、netstat.logの中身が名前の逆順に並び替えられて保存されました。


課題3: find /var/ -name "*log" -printの実行結果を、エラーも含めてファイル ( result_ls.log) に保存しなさい

これは「>&」を使います。

find /var/ -name "*log" -print >& result_ls.log

こうすることで、エラー表示も含めてすべての表示結果がresult_ls.logに保存されました。


課題4:find /var/ -name "*log" -printのエラーメッセージだけをファイル ( stderr.log )に保存しなさい。

先ほど紹介した「2>」 を使います。
全体で書くと

find /var/ -name "*log" -print 2> stderr.log

となります。エラーメッセージだけをstderr.logに上書きすることができました。簡単ですね。
ちなみに「2>」ですが、「1>」だと標準出力で、「>」と変わりはありません。


今回習ったことは様々な場面で使用できるものだと思いました。エラーだけを表示したいときやそうするとまずい場合など、これでその場に応じて使い分けをすることができそうです。

1 件のコメント so far »

  1. by sasimi, on 05.21.08 @ 7:40 PM

     

    講義の中でもお伝えしてるよう皆さんのシェルはbashで”2>”を使えます、がシェルの種類によって使えない場合があります。

Comment RSS · TrackBack URI

コメントをどうぞ

名前: (Required)

eMail: (Required)

Website:

Comment:

Spam Protection by WP-SpamFree