いろいろ備忘録日記

主に .NET とか Java とか Python絡みのメモを公開しています。最近Go言語勉強中。

シェルの標準出力をリダイレクトする

概要

よく忘れるコマンドのメモ。

試験しているときとかに、よく実行した結果を取っておく必要があるときもあります。

また、動作確認のために出力結果を見たい場合とか。

そういうときに、毎回リダイレクト書いたりするのが面倒って時があります。(めんどくさがりやなので。。)

たとえば、以下のような手順で実行されるコマンドの出力結果を取っておく必要があったとして

$ echo 'hello'
hello
$ echo 'world'
world
$ echo 'helloworld'
helloworld

例なのでechoですが、実際は作成したコマンドなりシェルスクリプトなりで脳内置換してください。

出力結果を取っておきたいので

$ echo 'hello' >> cmd.log
$ echo 'world' >> cmd.log
$ echo 'helloworld' >> cmd.log
$ cat cmd.log
hello
world
helloworld

ってしてもいいんですが、毎行リダイレクト書くのが面倒。。

シェルの組み込みコマンド exec でリダイレクト

こんなときは、シェルの組み込みコマンド exec つかってリダイレクトしておくと一時的に現在動作しているシェルの標準出力をリダイレクトできます。

$ exec > xxx

これでシェルの標準出力がリダイレクトされます。

元に戻す場合は

$ exec > /dev/tty

ってすればオッケイ。

$ exec > cmd.log
$ echo 'hello'
$ echo 'world'
$ echo 'helloworld'
$ exec > /dev/tty
$ cat cmd.log
hello
world
helloworld

ちゃんとリダイレクトされていますね。


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com