Cpt*_*rkt 5 shell terminal shell-script
找到我的问题的答案有点麻烦,也许是因为我可能问错了问题。
我了解 bash 脚本。我一直在写它们,反复做一些有用的事情。
但是我想知道 shell 脚本和在 shell 中运行的程序之间的区别。例如,什么是松树?它是用什么语言编写的?它在一个 shell 中运行,但据我所知,它不是一个 shell 脚本,它是一个独立的程序,您可以在其中导航,当您退出时,您将返回到您启动时所在的 shell。
如果我想编写一个功能类似于 pine 的程序,因为它在 shell 中作为具有各种功能的程序运行,我该从哪里开始?我在哪里可以找到一些以这种方式编写的程序示例?
我认为您将shell(命令行解释器)与终端模拟器混淆了。
一个 shell,当以交互方式运行时,pine需要终端或终端模拟器与用户交互。pine虽然与外壳无关。
过去的终端是一种带有显示器和键盘的设备,通过串行线路连接到计算机以与计算机(它本身没有显示器或键盘)进行交互。界面简单且基于文本。
计算机上的串行线是一个字符设备文件(例如/dev/ttyS0在 Linux 上)。与终端交互的应用程序将数据写入该设备以在终端上显示。
例如,在最简单的情况下,pine将 ASCII 写入a到/dev/ttyS0将导致a通过串行线路发送与该字符对应的位序列,并且终端a在当前光标位置的屏幕上显示 a 。
当用户按下a键盘时,在最简单的情况下,终端在通往计算机的另一条线上发送相同的位序列,系统将a字符放在缓冲区中,当pinea read()on 时/dev/ttyS0,它返回a特点。
终端已经从像电传打字机(没有屏幕,a打印在纸上)这样的东西发展到带有 CRT 显示器的东西,然后一些具有更多功能,如光标定位、区域清除/滚动、颜色支持所有这些pine使用,或甚至图形功能。X 后来提供了一种更先进的方式,这次通过网络与计算机交互,而不是串行线路和窗口功能,这次使用更复杂的协议,而不仅仅是要发送的字符序列和一些转义序列。
尽管如此,已经为终端编写了数十年的应用程序。有很多事情可以用终端完成,而 X 不能完成。因为数据只是两个双向的字符流,所以很容易通过网络导出终端会话(想想telnet、ssh),以及类似的应用程序cat可用于写入终端以显示文件内容供用户在其屏幕上查看,并且可以以完全相同的方式使用,无需修改即可将相同的内容存储在一个文件或通过网络发送到某个服务器......(所有需要的是重定向输出的位置)。同样的事情,一般只有一种用途,不能轻易相互配合的X应用是做不到的。
由于这些原因以及更多原因,即使在 X 广泛传播很久之后,终端也一直在使用。
只是,现在,我们拥有终端模拟器,而不是真正的终端,例如xterm, gnome-terminal, eterm... 那些模拟终端但本身只是 X 应用程序(在计算机上运行并显示在 X 服务器、同一台计算机或另一台计算机上) )。
默认情况下,当您启动这样的终端模拟器应用程序时,会在其中启动一个 shell,这就是为什么有时两者之间存在混淆的原因。您不必在终端仿真器中运行 shell,pine不必由 shell 启动,但它确实需要一个终端。它是一个半图形终端应用程序。它与终端设备交互,在该设备的另一端,它需要一个终端或终端模拟器,它具有最少的一组功能,如光标定位、突出字符突出显示......
| 归档时间: |
|
| 查看次数: |
637 次 |
| 最近记录: |