リダイレクトを活用する (1/2)

いくつかのコマンドの記事(treemore他)で、 何度か登場した「>」や「<」などのリダイレクト機能。
各コマンド記事でも出てくるたびに何度か説明しましたが、
もう一度、確認のつもりで記事にまとめてみました。
なお、ここではコマンドとリダイレクトの組み合わせ以外の使用例も掲載しています。
参考までに、興味のある方はご覧下さい。

このページのトップへ
はじめにリダイレクトとは何なのかという事について簡単に触れます。
通常、コマンドを使用するときには、キーボードから情報を入力し、
行った処理の結果を画面に出力します。
キーボードという入力装置

↓

コマンド

↓

出力装置(ディスプレイ)
リダイレクトを使用すると、このデフォルトの入出力先を変更する事ができます。
例えば、入力元の変更という事であれば、 キーボードから文字を入力して実行するのではなく、 ファイルやキーボード以外のデバイスなどを入力元としてコマンドを実行するという事になります。
ファイルであれば、そのファイルの内容を読み込むという事になりますし、 デバイスならばポートに接続した入力装置などからの入力という事です。
また出力先の変更においては、 通常ならばディスプレイに出力されるはずの処理結果を、 ファイルを作成して書き込んだり、プリンターでプリントアウトしたり・・・
※デバイスやファイルを介して入出力されるデータは、どちら(デバイスもファイル)も同列のものとして扱われます。
いずれにしてもこのリダイレクトを使用すれば、わざわざ決まった内容を 毎回入力する手間が省けますし、出力に関しても、処理内容を コピーしてファイルに保存するなどという手間が省けます。
リダイレクトの使用法には様々なものがありますが、 多分出力先の変更を行うリダイレクトの方が、使用する機会が多いのではないかと思います。
このページのトップへ

では、早速リダイレクトに使用する記号やその意味などを説明します。
> コマンドの出力をファイルやプリンタ等のデバイスに変更する
< コマンドへの入力をファイルから取り出す
>> コマンドの出力を既にデータの入っているファイルに追記する
>& 処理中に発生したエラーなどをファイルにリダイレクトしたりします。

 Stdin(標準入力) 0
 Stdout(標準出力) 1
 Stderr(標準エラー出力) 2
>」は、コマンド実行後、通常ならば画面に出力される処理結果を、
ファイルやプリンタなどに出力します。例えば・・
C:¥>tree /f bbb ←treeコマンド bbbフォルダのツリー構造を表示
フォルダ パスの一覧
ボリューム シリアル番号は 4CC2-05DF です
C:¥BBB
    aaa.jpg
    bbb.jpg
    cc.txt
    ccc.jpg
    ddd.jpg
    eee.jpg
    fff.jpg
    qq.txt
    zz.txt

サブフォルダは存在しません

C:¥>
通常ならば、処理結果はこのように画面に出力されますが、
>」を使用すると・・
C:¥>tree /f bbb > sam1.txt
               ←画面に何も出力されない
C:¥>
画面には何も出力されません。
その代わりに・・
リダイレクトの例
出力先のファイルとして指定した「sam1.txt」に、処理内容が出力されました。
このページのトップへ

次に「<」は、コマンドへの入力元を、
通常デフォルトで設定されているキーボードではなく指定したファイルへ変更します。
このリダイレクトについてはmoreでも詳しく書きましたので、 簡単にサンプルを記述しておきます。
C:¥sample>more < sample.txt
moreコマンドへの入力元を、sample.txtに変更します。
そうする事で、sample.txtの内容を入力したのと同じ事になるので、画面にsample.txtの内容が表示されます。
このページのトップへ

>>」は、コマンドを実行することによって出力された内容を、 既にデータが入っているファイルに追記する事ができます。
もしも「>」の出力先にデータの入ったファイルを指定した場合、 データは上書きされて消えてしまいますが、「>>」ではファイルのデータの最後に 新しいデータが追記されるので、元のデータは消えません。
以下のファイルをご覧下さい。
リダイレクトの例
このファイルにコマンドの出力を「>>」を使用してリダイレクトします。
C:¥>tree /f aaaaa >> sam2.txt
リダイレクトの例
元々のデータ後に、出力内容が追記されました。
リダイレクトの使い方   ←元々あったデータ
フォルダ パスの一覧
ボリューム シリアル番号は 4CC2-05DF です
C:¥AAAAA
    aaa.jpg
    cc.txt
    
サブフォルダは存在しません 
このページのトップへ

そして最後の「>&」ですが、 これはコマンドの処理中に発生したエラーなどをファイルに出力したりする記号です。 一見した所では、少しややこしく見えるかもしれません。
わかりやすい例をあげてみましたので、以下の例をご覧下さい。
リダイレクトの例
C:¥sample>dir f:¥ > err.txt
デバイスの準備ができていません。

C:¥sample>
これは、空のfドライブ(フロッピードライブ)のディレクトリの一覧を、
err.txtに出力させようとしています。
ですが、fドライブは空なので 「デバイスの準備ができていません。」というエラーメッセージが画面に表示されてしまいました。
そしてもちろん、出力先に指定したerr.txtの中身も・・
リダイレクトの例
このように空でした。
なぜ出力先にファイルを指定したのに、エラーメッセージは出力されなかったのでしょうか?
理由としては非常に単純な事なのですが、もしリダイレクトを使用していてエラーが出てしまった場合、 そのメッセージまでもがファイルに出力されてしまうと、ユーザーはエラーに気づく事が出来ません。
またコマンドによっては「・・・・よろしいですか (Y/N)?」などと ユーザーに入力を促す場面もありますが、こちらもファイルなどに出力されてしまうと とても具合の悪い事になってしまいます。
その為、リダイレクトを使用して出力先を変更した場合でも、 常にエラーメッセージだけは画面に出力されるようになっているのです。
このページのトップへ
しかし、場合によってはそのエラーメッセージをファイルに出力したい事もあるかもしれません。
そういう時に「>&」が役立ちます。
以下をご覧下さい。
リダイレクトの例
C:¥sample>dir f:¥ > err.txt 2>&1
先ほどと同じ例ですが、後に「2>&1」を追加しています。
これを実行すると・・
リダイレクトの例
C:¥sample>dir f:¥ > err.txt 2>&1

C:¥sample>
はじめの例のように、エラーメッセージが表示されませんでした。
err.txtを確認してみます。
リダイレクトの例
デバイスの準備ができていません。
エラーメッセージがファイルに出力されていました。
これで「>&」の使用方法が何となく理解できたでしょうか?
>&の左に記述した「2」という数値は Stderr(標準エラー出力)、右側の「1」は Stdout(標準出力)を意味します。
Stdin(標準入力) 0
Stdout(標準出力) 1
Stderr(標準エラー出力) 2
これらは多分余り使用しないのではないかと思うのですが、 一応こういうものもあるのだと頭の隅に留めて置いてください。
このページのトップへ

とりあえず、今日はここまでにしておきます。
本当は1ページで簡単に終わらせようと思っていたのですが、かなり長くなってしまいそうなので 2ページに分割する事にしました。
と言っても、もうそれほど内容が長く続くわけではなく、 moreコマンドでも記載した「物理デバイス」と「論理デバイス」 の話を少しと、2、3の例だけで終わると思います。
なお、前にも書きましたが、入力元を変更するリダイレクト(ファイルのデータを 入力元にする)で「コマンド < ファイル名」などとする所を 誤って「コマンド > ファイル名」としてしまうと、 ファイルの中身が消えてしまいます。
リダイレクトを使用する際は、不等号の向きにはくれぐれも注意して下さい。
では、また次回も宜しくお願い致します。
このページのトップへ
I/O(アイオー,Input/Output)とは
デバイスとは
リダイレクトとは

※キーマンズネットのIT単語帳ページへ飛びます。
様々なIT専門用語の意味を詳しく知る事ができます。
サイト上の情報利用により生じた損害等には一切責任を持ちません
2009.10.05 Monday | 初心者でも簡単コマンドプロンプト | comments(0) | trackbacks(0) | 記事URL
▲PAGETOP
同カテゴリーの記事 最新5件
Comment:
Add a comment:











※コメントは管理者が承認後表示されます。
Trackback:
http://shop.denkaseihin.com/trackback/595
※記事と関連性が低い等、管理人が不適当と判断したものについては削除させて頂きます。
新着記事
CATEGORY
まめ知識
COMMENT
  • 巨大なサイズのファイルも一瞬で削除出来るコマンド del
    denkaseihin (04/15)
  • 巨大なサイズのファイルも一瞬で削除出来るコマンド del
    原田 (04/14)
  • HPの h8-1080jpレビュー 内蔵GPU〜GTX580まで可のSandy Bridge搭載マシン
    denkaseihin (09/18)
  • HPの h8-1080jpレビュー 内蔵GPU〜GTX580まで可のSandy Bridge搭載マシン
    ヨーイチ (09/18)
  • HPの h8-1080jpレビュー 内蔵GPU〜GTX580まで可のSandy Bridge搭載マシン
    denkaseihin (09/14)
  • HPの h8-1080jpレビュー 内蔵GPU〜GTX580まで可のSandy Bridge搭載マシン
    MN (09/13)
  • Firefoxでcookieが保存されないという現象が発生したら
    denkaseihin (10/28)
  • Firefoxでcookieが保存されないという現象が発生したら
    KEKE (10/27)
SMTWTFS
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< June 2019 >>
RSS
ARCHIVES
MOBILE
qrcode
LINK

Copyright © 2005 - denkaseihin. All Rights Reserved.