为什么终端有那么多的名称? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
James369
V2EX    Linux

为什么终端有那么多的名称?

  •  
  •   James369 2021 年 1 月 24 日 6768 次点击
    这是一个创建于 1859 天前的主题,其中的信息可能已经有所发展或是发生改变。
    自接触 linux 以来,关于终端听了很多的名词:

    如常见的:shell,terminal,consol
    不怎么常见的:tty,伪终端 pts,pty
    还有:串口线连接的 windows 超级终端。

    感觉有点懵了,它们都各有什么区别? 用起来好像又都差不多,都是命令行交互方式。。
    第 1 条附言    2021 年 1 月 24 日
    有点明白了,实际上 shell 是最接近 kernel 的,其它终端都是通过 shell 来和 kernel 打交道。
    18 条回复    2021-02-17 13:57:07 +08:00
    hxndg
        1
    hxndg  
       2021 年 1 月 24 日   1
    一般情况下,能表明是什么意思就不会引起误解。
    但是其实是有差别的,详情请见《 unix 环境高级编程》
    qieqie
        2
    qieqie  
       2021 年 1 月 24 日 via Android
    console 概念上偏物理实体,对于一台设备一般只有一个 console,terminal 是模拟的多用户的 console,而 shell 是输入命令的解释器。
    zhujinliang
        3
    zhujinliang  
       2021 年 1 月 24 日 via iPhone   7
    shell 指外壳程序,意思是与系统内核沟通的程序,对应的内核叫 kernel,就是 bash 、zsh 这样的程序

    逻辑上是我们通过输入输出设备连接到计算机硬件,通过 shell,调用 kernel 提供的接口,完成操作。

    tty 是电传打字机,早期计算机的输出设备,计算机通过串口线输出信号,电传打字机像人按动打字机似的,在纸上打出文字(据说 CR LF 也是电传打字机时代遗留下来的,CR 表示把打字头位置移到行首,LF 表示走一行纸)

    终端的概念,早期计算机体积大、造价高,所以一个机构或院校购买一台,然后通过终端设备(键盘、tty 、modem 等)接入,通过分时等形式供多人使用。各类操作系统就在这种操作逻辑上发展起来,以至于现在个人计算机仍保留这种原始的操作方式。现在已经没有了电传打字机之类的硬件设备,为了兼容,或者说情怀,于是在操作系统上虚拟了一个硬件。
    ImACat
        4
    ImACat  
       2021 年 1 月 24 日
    只说一个我知道的,Shell 是和 Kernel 相对的,一个是壳一个是核。早期没有图形化界面。交互方式也就是输命令行。但是后来有图像化界面了,Shell 就专指命令行了。https://imgur.com/c1YLzQP
    linux40
        5
    linux40  
       2021 年 1 月 24 日   1
    我还以为你要说 xterm vt100 这些。
    jdhao
        6
    jdhao  
       2021 年 1 月 24 日
    传统意义上终端是指专门连接服务器那种显示器,没有其他功能,主要就是输入指令,显示输出。咱们常用的 xshell, Alacritty, kitty 等等,其实都是 terminal emulator,终端模拟器,模拟那种传统意义上的终端。
    lululau
        7
    lululau  
       2021 年 1 月 24 日
    不是很懂的还是 google 一下再回复吧,不要误人子弟啊
    James369
        8
    James369  
    OP
       2021 年 1 月 24 日
    @zhujinliang 还想问一下,tty 终端在与 linux 通信的时候,此时是由哪个进程在负责处理的? 另外可以通过哪个命令来查询具体通信情况吗?
    hxndg
        9
    hxndg  
       2021 年 1 月 24 日
    > 实际上 shell 是最接近 kernel 的,其它终端都是通过 shell 来和 kernel 打交道。

    ??? 建议你还是去看书吧,上面的解释是有错误的。
    Jirajine
        10
    Jirajine  
       2021 年 1 月 24 日 via Android   1
    maokabc
        11
    maokabc  
       2021 年 1 月 24 日 via Android
    按自己理解,pty 这类是内核虚拟的设备,本地终端的话先 forkpty 然后里面运行 shell,终端模拟器只是读写 pty,解析 pty 输出序列用图形界面绘制,把键盘鼠标事件转义写入 pty 。
    cigarzh
        12
    cigarzh  
       2021 年 1 月 24 日
    这个要真的讲明白得去研究操作系统历史…
    liuxu
        13
    liuxu  
       2021 年 1 月 24 日
    哈哈笑死了,等你再发现 /sbin,/bin,/usr/bin,/usr/local/bin,/usr/local/xxx/bin,/opt 它们之间的的故事就好玩了
    billlee
        14
    billlee  
       2021 年 1 月 24 日
    基本上就分为两类:shell 和 terminal

    terminal 负责底层的输入输出,例如:缓冲一行数据,直到 enter 按下的时候才把数据发送给前台进程、把 backspace, 方向键等转换成对应的转义序列,收到 ctrl+c 时给前台进程发送 SIGINT; 根据程序输出的转义序列给输出的文字设置颜色、粗体、闪烁、下划线等不同的格式。

    shell 负责解释用户输入的命令,根据输入的命令建立管道、fork, 调整 stdin/stdout/stderr 描述符,exec

    tty, pty, windows 超级终端都是各种不同的 terminal. bash, zsh, dash 等都是各种不同的 shell.

    至于 tty 是哪个进程负责的,如果这里的 tty 是指 linux 的虚拟 tty (ctrl + alt + F1-F6 调出来的那些) ,那只能说是内核本身负责的,不管对键盘输入的转义、还是对程序输出转义的解读,都是由内核内的虚拟 tty 驱动负责的。
    felixcode
        15
    felixcode  
       2021 年 1 月 24 日
    上面的也有不少人说的不对,还是自己找文章好好看看吧
    https://www.howtogeek.com/428174/what-is-a-tty-on-linux-and-how-to-use-the-tty-command/
    fantastM
        16
    fantastM  
       2021 年 1 月 25 日
    kernel 、system call 、shell 这几个的关系,看这段描述应该就清楚了

    julyclyde
        17
    julyclyde  
       2021 年 1 月 26 日
    shell 在上述一堆里面基本上是最远的了
    ashuai
        18
    ashuai  
       2021 年 2 月 17 日
    @liuxu 什么故事?能讲讲吗 :D
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3049 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 13:49 PVG 21:49 LAX 05:49 JFK 08:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86