/dev/ttyから/dev/nullに出力をリダイレクトする方法は?

/dev/ttyから/dev/nullに出力をリダイレクトする方法は?

hello次のコードを含む実行可能なスクリプトがあります。

#!/bin/bash
echo "hello" > /dev/tty

出力を/dev/null

./hello > /dev/null 2>&1

stdoutとのみリダイレクトするため、機能しませんstderr

コマンドを使用してこれを行うことができると主張する2つの答えを見つけましたscriptが、方法は説明しません。

https://unix.stackexchange.com/a/297237/421466

https://unix.stackexchange.com/a/296108/421466

それとも出力を抑制する他の方法はありますか?

答え1

スクリプトの変更

ファイル記述子3がまだ使用されていないと仮定する。

#!/bin/bash
exec 3>/dev/tty
#exec 3>/dev/null
echo "hello" >&3

/dev/ttyfd 3をまたはで開くと/dev/null簡単に切り替えることができます。それから> /dev/ttyすべて>&3

スクリプトは変更されていません。

スクリプトの外側の回避策は、マウントネームスペース(man unshare)を生成mount --bind /dev/null /dev/ttyしてその中で実行し、そこから変更されていないスクリプトを実行することです。

関連情報