找出我正在使用的 tty Linux / Unix 下的 tty 命令
Linux / UNIX 下的 tty 是什么?如何知道我正在使用哪个 tty?
TTY 只不过是计算机终端,是使用计算机的基本设备。让我们看看如何使用 tty 命令找出 Linux、macOS、FreeBSD、OpenBSD、NetBSD 和类 Unix 系统下当前连接或正在使用的tty。
在这个最后的例子中,我们将运行 ssh 命令并查明 tty 是否是交互式的:
TTY 只不过是计算机终端,是使用计算机的基本设备。让我们看看如何使用 tty 命令找出 Linux、macOS、FreeBSD、OpenBSD、NetBSD 和类 Unix 系统下当前连接或正在使用的tty。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux 终端 |
操作系统兼容性 | FreeBSD • Linux • macOS • NetBSD • OpenBSD • Unix • WSL |
预计阅读时间 | 3 分钟 |
使用 tty 命令找出我连接的是什么 tty
打开命令行终端(选择“应用程序”>“附件”>“终端”)。然后,要显示连接到标准输入的终端的文件名,请输入:
$ tty
这是我看到的:
/dev/pts/0
你也可以使用who命令或者w命令来找出自己或其他登录用户的tty:
$ who
$ w
Linux / UNIX / BSD / Apple OSX:我正在使用什么 tty?
tty 命令选项
GNU Linux 和 BSD 版本的 tty 带有两个选项。想要不打印任何内容,只返回退出状态?尝试传递-s/--silent或--quiet选项:
tty -s # works with both GNU/BSD tty tty --slient # gnu only tty --quite # gnu only
要显示 tty 命令的退出,请使用$?printf 命令或 printf 命令按如下方式使用 shell 变量:
echo "$?" printf "%d\n" $?
价值 | 描述 |
---|---|
0 | 标准输入是一个终端。 |
1 | 标准输入不是终端。 |
>1 | 出現錯誤。 |
tty 命令示例
在 GNU/Linux 上,可以输出版本信息并退出到命令提示符,如下所示:
tty --version
我们可以在我们的 shell 脚本中获取退出状态以及如何在 bash 中为 tty 命令设置退出状态,如下所示:
#!/bin/bash if tty -s then echo "Standard input is a terminal." # do_something_for_stdin else echo "Standard input is not a terminal." # do_nothing_print_error_as_script_needs_stdin fi
tty 命令示例
ssh vivek@backup.example.com -- bash -c 'tty -s && echo "This shell is interactive" || echo "This shell is not interactive"'
以下是我所看到的:
not a tty This shell is not interactive
您可能已经看到过类似这样的消息:
换句话说,我们可以通过传递以下内容强制 ssh 命令进行伪终端分配-t:
ssh vivek@backup.example.com -t -- bash -c 'tty -s && echo "This shell is interactive" || echo "This shell is not interactive"'
现在输出已改变:
/dev/pts/0 This shell is interactive
因此,tty 命令对于确定我们是否正在使用真正的伪终端至关重要。请查看我以下有关 ssh、shell 脚本和 tty 的教程,这些教程可解决实际问题或极端情况:
有不同类型的文本终端
- 哑终端
- 文本终端
- 文本终端的图形 GUI 功能
总结
您学习了如何显示连接到标准输入(如键盘)的终端的文件名并将其用于 shell 脚本。您还可以使用以下 man 命令或 help 命令查看 tty 上的手册页:
$ man 4 tty
$ man pts
$ man tty
$ man who
$ man w