当 /dev/stderr 指向 /dev/null 时,该如何修复,因为所有错误消息都被重定向到 /dev/null,而无需使用该>
操作。
~ tty
/dev/pts/0
~ l /dev/stdout
lrwxrwxrwx 1 root root 15 Jun 1 18:06 /dev/stdout -> /proc/self/fd/1
~ l /dev/stdin
lrwxrwxrwx 1 root root 15 Jun 1 18:06 /dev/stdin -> /proc/self/fd/0
~ l /proc/self/fd/0
lrwx------ 1 avirukbasak avirukbasak 64 Jun 1 18:20 /proc/self/fd/0 -> /dev/pts/0
~ l /proc/self/fd/2
l-wx------ 1 avirukbasak avirukbasak 64 Jun 1 18:20 /proc/self/fd/2 -> /dev/null
~ l /proc/self/fd/1
lrwx------ 1 avirukbasak avirukbasak 64 Jun 1 18:20 /proc/self/fd/1 -> /dev/pts/0
还附上了终端的图像这里
答案1
用于exec
改变当前 shell 的文件描述符:
exec 2>/dev/tty
用于command -v
检查程序是否已安装:
if [ -t 0 ]; then
if command -v zsh >/dev/null 2>&1; then
zsh
fi
fi