Bash
如何將輸出從 /dev/tty 重定向到 /dev/null?
我有一個
hello
包含以下程式碼的可執行腳本,#!/bin/bash echo "hello" > /dev/tty
我想將它的輸出重定向到
/dev/null
../hello > /dev/null 2>&1
不起作用,因為它只重定向
stdout
andstderr
。我找到了兩個答案,聲稱這可以使用
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/tty
or/dev/null
,很容易切換。然後你> /dev/tty
用>&3
.不改變腳本
腳本之外的解決方案是創建一個掛載命名空間 (
man unshare
),在其中執行mount --bind /dev/null /dev/tty
,然後在那裡執行未修改的腳本。