rcmdnk's blog

貝殻セット瓶詰め 送料別

/dev/tty関連でもう一つ、 今度は出力について。

スクリプトの出力ががファイルリダイレクトされても無理やり端末に表示させる

a.sh
1
2
3
#!/usr/bin/env bash

echo aaaaa

なんでもいいんですが、単にechoするだけのスクリプトです。

これを

$ ./a.sh > file

とするとfileaaaaaが書き込まれて画面には表示されません。

これだけなら

a.sh
1
2
3
#!/usr/bin/env bash

echo aaaaa >&2

みたいにエラー出力にしてしまえば良いわけですが、 エラー出力も含めてログに残したいとした場合、 上のaaaaaはログには残したくない場合 1 、出力先を/dev/ttyにすればOK。

a.sh
1
2
3
#!/usr/bin/env bash

echo aaaaa >/dev/tty
$ ./a.sh 2>&1 file
aaaaa
$ cat file

$
Sponsored Links
  1. 単に画面にも出力したい、というだけなら./a.sh 2>&1 | tee logとかすれば良いので

Sponsored Links

« シェルスクリプトでパイプからの入力とキーボード入力を区別する シェルスクリプトでサブシェルのプロセスIDを取る方法 »

}