tty
是 Linux/Unix 系统中一个常用的命令,用于显示当前终端(terminal)的设备文件名。它的名称来源于 Teletypewriter(电传打字机)的缩写,是早期计算机的输入输出设备。
显示当前终端
直接输入 tty
命令会返回当前终端对应的设备文件路径,例如:
$ tty
/dev/pts/0
/dev/pts/*
表示伪终端(如 SSH 连接或图形终端模拟器)。/dev/tty*
表示物理终端或虚拟控制台(如 Ctrl+Alt+F1
切换的终端)。检查是否在终端中运行
在脚本中可通过 tty
判断是否在交互式终端中执行:
if tty -s; then
echo "Running in a terminal."
else
echo "Not in a terminal (e.g., running as a cron job)."
fi
$ tty
/dev/pts/1
重定向输出到其他终端
将消息发送到另一个用户的终端(需写权限):
echo "Hello from $(whoami)" > /dev/pts/2
禁用终端输出
将输出重定向到空设备(/dev/null
):
command > /dev/null
选项 | 作用 |
---|---|
-s |
静默模式,不输出设备名,仅通过退出码返回状态(0:是终端,1:不是终端) |
示例:
$ tty -s
$ echo $? # 返回 0 表示当前是终端
tty
返回 not a tty
?cron
任务或后台进程)中执行 tty
会返回此提示。/dev/console
、/dev/tty
和 /dev/pts/*
的区别?/dev/console
:系统控制台(通常指向物理终端或内核日志)。/dev/tty
:当前进程的控制终端(抽象设备,指向实际终端)。/dev/pts/*
:伪终端(如 SSH 或图形界面终端)。查看所有已登录终端
使用 who
或 w
命令:
$ who
alice pts/0 2023-10-01 09:00 (192.168.1.100)
bob tty2 2023-10-01 10:00
强制写入终端(即使被重定向)
使用 write
命令或直接写入 /dev/tty
:
echo "Alert" > /dev/tty
通过 tty
命令,你可以快速识别当前终端环境,并在脚本或系统管理中灵活控制输入输出流向。