Bash

如何將輸出從 /dev/tty 重定向到 /dev/null?

  • July 7, 2020

我有一個hello包含以下程式碼的可執行腳本,

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

我想將它的輸出重定向到/dev/null.

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

不起作用,因為它只重定向stdoutand stderr

我找到了兩個答案,聲稱這可以使用script命令來完成,但他們沒有解釋如何。

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

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

或者有沒有其他方法可以抑制它的輸出?

更改腳本

假設文件描述符 3 尚未使用:

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

你打開 fd 3 到/dev/ttyor /dev/null,很容易切換。然後你> /dev/tty>&3.

不改變腳本

腳本之外的解決方案是創建一個掛載命名空間 ( man unshare),在其中執行mount --bind /dev/null /dev/tty,然後在那裡執行未修改的腳本。

引用自:https://unix.stackexchange.com/questions/597137