【技术杂谈】shell和terminal

作者: kami陆分类: 计算机技术 发布时间: 2023-02-08 11:00:00 浏览:70139 次

【技术杂谈】shell和terminal

一摩尔炸鸡翅:
看到两个评论, 一个"省流"和一个抱怨"短视频平台不该做得像网课一样", 为 UP 主感到不平. 这样一期 30 mins 的长视频, 从撰稿到视频制作, 至少需要几天的工作, 却被一句只有几十个字的省流略去了(而且对视频地概况还不准) 哔哩哔哩是一个视频平台, 但绝对不是"短视频平台"(虽然现在短视频占比越来越大). 从百度百科或 CSDN 抄来两句对 Shell 和 Terminal 的定义, 再配上"解说小帅"的音频, 只需 20s 就能说完, 可是这样顶多让你知道两个名词干巴巴的定义, 刷完另外两个"解说小帅"视频后就忘得一干二净. "上帝藏在细节之中", 技术的魅力与复杂性正是在这种对一个知识点的深入挖掘中体现的

【回复】太帅了老哥,非常感谢您的支持和理解。上网冲浪自然免不了观点交锋,有则改之无则加勉,练一手厚实表皮还是不成问题的~
【回复】首先,b站不是短视频平台[灵魂出窍]
【回复】回复 @Hayashi-Lin :求知和创造都是人类高级的快乐
乐鱼吕:
长知识了。看完之后有一些理解,不知道对不对。 1. ubuntu server等开机后进入的命令行运行在内核态;ubuntu desktop桌面上的终端模拟器打开后运行在用户态。 2. python使用os.system调用终端命令依赖于操作系统的默认终端?那把windows的cmd删掉os.system会不会报错(不敢试 3. ssh客户端与服务端使用tcp交互数据流进行数据传输,而xshell在网络差的时候以整条命令为单位发送是对ssh的拓展?

【回复】不好意思刚看到 1. 是的,操作系统接管硬件之后运行init进程,调用getty让用户登录,输入密码后调用login,后从/etc/passwd 读取该用户指定的shell 2. 查阅文档(https://docs.python.org/3/library/os.html#os.system)后发现shell 由 Windows 环境变量给出 COMSPEC:一般为cmd.exe,可以使用echo %comspec%查看 3. 我认为说"是对ssh的拓展”不准确,我对xshell的实现猜测可能是它维护了一个键盘缓冲区,输入字符缓冲并且发送tcp给ssh服务器,如果计时器结束前没有收到tcp响应则直接在本地给pty master写缓冲的字符,等再接收到来自服务器的tcp数据包后再去做一个合并或者修改
【回复】任何shell,不论是图形的还是命令行的,都是运行在用户态,通过系统调用与内核交互。运行在内核态的代码是有最高权限的,它可以对你的电脑做任何事,是很危险的,所以所以只有受信任的代码比如内核和一些驱动的代码才能运行在内核态。一个现代的操作系统不可能会把内核态暴露给用户,用户态的代码和指令只有通过内核的把关才能被执行。
【回复】第二个我帮你试了,当cmd.exe 被删除后 os.system 方法返回 -1 并且没有执行传递给他的命令。 通过wmic 查询得知 Python 的os.system 是创建了一个cmd进程。具体是 (cmd /c 你传递的字符串) 当然这个字符串是经过解释器处理过的,把转义字符什么的处理之后传递的。
murphy2017:
省流,terminal是输入输出,shell是系统交互程序

【回复】省错了。 terminal抠掉teletyper其实可以不包含输入,console才是非得有输入的。shell实际上是一种语言,而不一定是实现,也不需要和系统交互。
【回复】省流没任何作用就不叫省流😒
一摩尔炸鸡翅:
厉害, 现在 Bilibili 好多都是杂谈性质的科普, 只是让外行过个眼瘾的那种, 难得遇见一个讲得如此深入的科普博主

清雨影:
深入浅出,这种技术考古的视频做的很棒啊,从古至今的标准由来等都说明白了!三连了。 不过PTS和后面的SSH讲的不是很清晰,最好把数据传输的路径和所属的部分(比如驱动从属Kernel这样的)绘制出来会更好(还有就是口误实在太多了,如果UP主去央视的话第一天就得借钱上班了(问题不大

冷面45:
涨知识了,感觉回到大学课堂听教授侃侃而谈的时候[热词系列_知识增加]

【回复】另外建议up可以关注下部分常见词汇的发音,比如parse,gnome。加油~
【回复】回复 @冷面45 : 是的是的,英语水平一般,好多单词发音都不是很标准,以后注意
【回复】回复 @kami陆 :加油呀[打call][打call][打call]
floating_stream:
提个小建议,可以把内核模块的终端用“终端模拟器”(terminal emulator)这个词来形容,gui下的终端用“终端”(terminal)或“伪终端”(pseudo terminal)来表示,这样可能区分的更清楚,我觉得比较容易搞混的一个原因也有这些词语的混用

【回复】都是终端模拟器,都是在图形模式下绘制字符,除了vt是内核模块之外,没区别。
【回复】不对,内核的终端虽然是模拟器但本质上还是同一套设备抽象,反倒是GUI终端是另外写了个应用单独算是纯粹的模拟器。
【回复】是的说的没错,我们现在使用的一般都是GUI下的伪终端pty,
bili_75432757393:
up主很棒!不用过分在意那些指出你口齿不够清发音不够准时而有错等不足,他们大多也是好意,希望你做的更好,没有恶意,能够坚持看就说明他有兴趣,相信其中吹毛求疵的人是少的。人是充分发掘并利用好自己的优势而成功的,正如你对专业知识的深入学习掌握和无私分享;要把更多的精力用到持续做强优势,使它们真正成为优势。当然,要防止自己有特别严重的短板,莫使它们成为自己成长的阻碍,这主要体现在道德情操修养层面,而非技术层面。看好你啊!

作业用BGM:
shell就是外壳的意思,系统调用的外壳,用于执行其他二进制。Linus自传:你必须首先运行的程序是外壳(shell)程序,而在有这个外壳程序之前,要运行什么很难的。而且,这个外壳程序包括了很多你所需的系统调用。它运行起来之后,你才会从中找到一长串你尚需完成的功能。

幻の上帝:
没有明显的技术错误,算是合格的科普,特别是提到了GUI shell,值得鼓励。(分析历史包袱设计缺陷有点超纲就不指望了。)不过字幕还是有gnu小写之类的问题。有些单词(如echo、null)发音有点问题。parseline请把parse和line分开来念。

KING_Sup:
up主为啥每隔一会就读错[笑哭][笑哭],有时候听得我出戏。内容很好[星星眼],如果能改掉这毛病,就完美了[喜欢]

Mana_Yuri_Knight:
最近正好在做一个进程重定向的功能和这个相关,给大家一些参考资料的链接,有兴趣可以了解 https://yakout.io/blog/terminal-under-the-hood/ https://www.linusakesson.net/programming/tty/ https://blog.nelhage.com/2009/12/a-brief-introduction-to-termios/ https://zhuanlan.zhihu.com/p/61369678

神の克星ing:
太强了orz,信息密度非常高,PPT讲得也非常流畅[打call]

浪浪山大马猴:
内核态的叫virtual console或者terminal emulator(二者不做区分),用户态与图形界面的都叫伪终端 可以这样总结吗。一直在介绍历史沿革,还是不能对应到现在的系统中存在的部件[笑哭][笑哭][笑哭]

【回复】终端是硬件概念,就是一套输入输出的设备,用户进程对设备的读写需要操作系统内核提供支持,提供这部分支持的程序叫设备驱动。平时用的那个命令行界面其实是终端模拟程序,是完全的软件概念,但是用户就是把它当做一个终端,伪终端可以看成是终端模拟程序的驱动。
【回复】是的,从终端设备到内核态的terminal emulator再到变成用户态的伪终端,历史总是不断向前发展的,图形界面兴起之后伪终端占据主流终端,这些名词的差异确实比较容易搞混
霍金之眼:
话说能讲下ssh端口堵塞吗,以前我的服务器被别人这么搞过[doge][doge][doge]

【回复】ssh是一个不错的话题,我觉得可以研究一下
Vyrmedea:
感觉和这篇文章很像https://segmentfault.com/a/1190000016129862

【回复】回复 @kami陆 : up可以把引用贴在简介里。
【回复】是的,这篇文章是参考之一 https://unix.stackexchange.com/questions/4126/what-is-the-exact-difference-between-a-terminal-a-shell-a-tty-and-a-con https://segmentfault.com/a/1190000009082089 https://docs.kernel.org/driver-api/tty/tty_ldisc.html https://xie.infoq.cn/article/a6153354865c225bdce5bd55e
kkklebron:
讲的很好!关于pty master和pty slave那部分要是再慢点就更清楚了[打call]

【回复】master本意老板,slave本意奴隶,老板发号施令,奴隶干活,这样是不是更清楚了[doge]
大芒果jd:
看完视频后感觉大二上的linux跟白学了一样🥹

kengrand:
如果up每次搞这种硬核科普视频,你早晚会火!!![打call][打call][打call]

shell terminal pty tty

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!