ls -la /dev/tty
显示输出:
crw-rw-rw- 1 root tty 5, 0 Dec 14 22:21 /dev/tty
开头的c是什么意思?当我做pwd > /dev/tty
之类的事情时,它会打印到标准输出。文件/ dev / tty包含什么?
答案 0 :(得分:77)
'c'表示它是一个角色设备。 tty是一个特殊文件,代表当前进程的“控制终端”。
角色设备
Unix支持“设备文件”,它们根本不是真正的文件,而是支持硬件设备的文件类访问点。 “字符”设备是逐字节接口的设备(与缓冲IO相反)。
<强> TTY 强>
/ dev / tty是一个特殊文件,表示当前进程的终端。因此,当您echo 1 > /dev/tty
时,您的消息(“1”)将出现在您的屏幕上。同样,当您cat /dev/tty
时,您的后续输入会重复(直到您按Ctrl-C)。
/dev/tty
不会“包含”任何内容,但您可以从中读取并写入(为了它的价值)。我不能想到它的好用,但有类似的文件对简单的IO操作非常有用(例如/dev/ttyS0
通常是你的串口)
此引用来自http://tldp.org/HOWTO/Text-Terminal-HOWTO-7.html#ss7.3:
/ dev / tty代表当前的控制终端(如果有) 处理。找出哪些tty附加到哪些进程使用 shell提示符下的“ps -a”命令(命令行)。看着那(这 “tty”栏目。对于你所在的shell进程,/ dev / tty就是 您正在使用的终端。在shell提示符下键入“tty”以查看内容 它是(参见手册第tty(1)页)。 / dev / tty就像链接一样 具有一些附加功能的实际终端设备名称 C程序员:参见手册页tty(4)。
答案 1 :(得分:9)
/dev/tty
是当前进程的控制终端(如果有)的同义词。正如jtl999所说,它是一个字符特殊文件;这就是c
输出中ls -l
的含义。
man 4 tty
或man -s 4 tty
应该会为您提供更多信息,或者您可以在线阅读手册页here。
顺便说一下,pwd > /dev/tty
必然必须打印到shell的标准输出(尽管它是pwd
命令的标准输出)。如果shell的标准输出已被重定向到终端以外的其他位置,/dev/tty
仍然引用终端。
您也可以阅读/dev/tty
,通常会从键盘上读取。
答案 2 :(得分:3)
&#39; c&#39;意味着它是一个角色特殊文件。