本节介绍在使用终端时如何控制终端-计算机接口和/或更改终端设置。它解释(或指向解释)终端用户如何控制和检查接口,以及如何使用设备驱动程序提供的各种命令。它不解释如何使用许多应用程序、shell 或大多数 Linux 实用程序。终端上常用的两个命令是
当然,终端要工作,电源必须打开。如果你没有看到登录提示符,请按几次“return”(或“enter”)键。然后输入你的帐户名(后跟回车/enter),并在提示时输入你的密码(也后跟回车/enter)。确保不要全部输入大写字母。如果你这样做,计算机可能会认为你有一个旧终端,无法发送小写字母,并且串行驱动程序可能会将自身设置为仅向终端发送大写字母。
如果没有任何反应,请确保主机和终端都正常。如果主机已关机(无电源),你在终端键盘上输入的内容可能会显示在屏幕上,因为计算机上的发送和接收引脚可能连接在一起,导致“关闭”的计算机回显字符。如果主机运行时你无法登录,请参阅 故障排除。
在命令行输入时,shell(例如 Bash shell)正在读取你输入的内容并对其做出反应。你输入的内容首先通过操作系统中的终端驱动程序部分。此驱动程序可能会转换某些字符(例如将“return”键生成的“return”字符更改为 Linux 文件的“换行”字符)。它还识别你可能在键盘上输入的某些控制代码,例如 ^C 来中断程序的执行。它通常还会将你输入的内容回显到显示器。Stty 可用于配置此终端驱动程序的行为,包括禁用其某些(或全部)功能。
在某些终端上使用 emacs 和 vi 可能会出现一些问题。少数终端没有 escape 键 (ESC),因此你可能需要键入 Ctrl-[ 来获取 ESC。
如果存在软件流控制,则 emacs 中的 ^S 命令将冻结显示。^Q 命令将解冻显示。一种解决方法是通过配置 emacs 将其映射到另一个按键。一些终端具有 meta 键,尽管你可能需要设置终端以创建 meta 键。
Vi 使用 esc 键作为退出插入模式的命令。不幸的是,对于大多数终端,箭头键会向主机发送转义序列(以 ESC 字符开头)。Vi 必须区分 ESC 的这两种含义。一个智能的 vi(例如配置好的 vim)能够通过注意 ESC 和下一个键之间的时间来检测差异。如果时间很短,则很可能是按下了光标键。在 vim 中使用 "help cursor-keys" 查找更多信息。
这是另一种解决此问题的方法。在 VT 终端上,左箭头键可以设置为发送 ESC [ D 或 ESC O D。其他箭头键类似,但使用 A、B 和 C 代替 D。如果你遇到问题,请选择 ESC [ D,因为另一个替代方案中的 "O" 可能会被 vi 解释为 "打开一行" 的命令。"[" 应被 vi 解释为表示已按下箭头键。如果未设置“光标键应用程序模式”,则将发送 ESC [ D。ESC [ D 通常是默认设置,因此一切看起来都正常。除非许多 termcap 包含一个字符串(不是 init 字符串),它设置了你想避免的内容:“应用程序模式”。编辑器可能会在编辑器启动时将此字符串发送到终端。现在你遇到麻烦了。
此字符串具有 termcap 代码 "ks"(terminfo 中的 smkx),意思是启用功能(和相关)键(包括箭头键)。应用程序通过将 "ks" 字符串发送到终端来启用这些键。编写 termcap 的人认为,如果应用程序想要启用这些键,那么它们应该被放入“应用程序键模式”,因为这是一个“应用程序”,但你不想这样。
Linux 控制台没有 "ks" 字符串,因此你不会在控制台上陷入此陷阱。对于其他终端,你可能需要编辑 termcap(或 terminfo)或使用另一个 termcap 条目。你不仅需要更改 "ks" 字符串,还需要更改它们发送内容的 termcap 定义:kd、kl、kr、ku。然后运行 tic 来安装它。
对于 vim (vi iMproved),有一种方法可以将其设置为与 ESC O D 配合使用(因此你无需编辑 termcap):请参阅 vim 帮助中的 "vt100-cursor-keys"。你可以运行 "gitkeys" 然后按下光标键来查看它们发送的内容,但当你在编辑器中时,它们可能会设置为发送不同的内容。
文本终端的滚动速度受到串行线路速度的限制。这种限制在一个方面是好的,因为滚动速度足够慢,以至于你几乎可以在屏幕上的内容消失在屏幕底部之前阅读它。
但这也有缺点。例如,如果你复制大量文件(例如硬盘驱动器上的所有内容),并使用选项显示每个复制文件的完整名称(路径名),则串行线路的速度限制可能仅在屏幕上每秒显示 30 个文件。但是你的硬盘驱动器可以比这快很多倍地复制,但终端会将传输速度减慢到终端可以显示的速度。它通过 流控制 来实现这一点。
解决方法是禁用在屏幕上显示的“进度”信息,以防止其减慢“进度”。如果它只是每秒或更少次数更新进度数字,则不应该有问题。
仍然存在的一个问题是,如果某些终端键发送高位设置为 1 的字节,则 Bash 似乎忽略了 terminfo 条目中定义的含义。这可能是因为,除非使用 7 位 ASCII,否则高位设置为 1 的字节可能表示非英语字母。我将此报告为 Bash 中的错误(但多年后意识到这可能不是错误)。其他程序(如 vim 编辑器和 lynx 浏览器)在使用此类键时工作正常(当它们设置为使用 7 位 ASCII 时)。
为了解决此问题,可以在 Bash 中定义这些键应执行的操作,方法是将此类定义放入 /etc/inputrc.
例如,当箭头键被按下时,Wyse 60 将发送 D0-D3,前提是终端处于“应用程序键模式”。在修改 terminfo 以反映这一点后,它们仍然无法在 Bash shell 中的命令行上工作。所以我像这样在 /etc/inputrc
中显式定义了箭头键
# Arrow keys in 8 bit keypad mode: Sends d0-d3. -ap means application.
$if term=wy60-25-ap
set enable-keypad on
"\xd0": backward-char
"\xd1": forward-char
"\xd2": next-history
"\xd3": previous-history
$endif
如果终端已经处于“应用程序键模式”,则无需“set enable-keypad on”。enable-keypad 将向终端发送 terminfo 中名为 smkx 的转义序列(对于 wyse60 是 \E~3),并使箭头键发送 D0-D3。许多其他应用程序(Bash 以外)在不需要告知的情况下也会发送此序列。
Bash shell 的 readline 接口曾出现问题。Bash 2.01 (1998) 有一个 readline 接口,如果使用哑终端,则该接口会严重损坏。这在以后的版本中得到了修复。
如果 ls
的颜色功能损坏了你的终端仿真,请将其关闭。ls --color
和 ls --colour
都使用颜色功能。某些安装默认情况下将 ls
设置为使用颜色。检查 /etc/profile
等中的 ls
别名。有关如何让 ls
为控制台使用颜色并为终端使用单色的信息,请参阅 ls 函数示例。
终端挂起的症状是你输入的内容不显示在终端上(或者在某些情况下显示但没有任何作用)。如果你输入的内容不可见(或没有任何作用),请键入 ^Q 以重新启动流(如果流控制停止了它)。挂起也可能是由于
发送终端二进制数据 或 程序异常退出
如果你没有执行这两项操作中的任何一项,那么你正在运行的程序可能有 bug,或者你与它的交互可能是致命的非法操作。
如果你想退出正在运行的程序,并且无法通过常用方法(某些程序有必须按下的特殊键才能退出)来执行此操作,请尝试从另一个终端使用 "top" 或 "kill" 来杀死它。如果进程拒绝终止,则从 top 中使用信号 9 杀死它(或在命令行上使用 "kill")。"9" 类型的强制退出可能会留下一些临时文件以及损坏的界面。如果这不起作用,杀死登录 shell 应该会导致 getty 启动并显示新的登录提示符。如果所有方法都失败,你可能需要重新启动计算机甚至关闭电源。仅仅重新启动可能不会改变串行端口硬件寄存器中可能已损坏的内容。
Linux 新手可能会无意中按下 Ctrl-S (^S)(或“No Scroll”键),这会神秘地冻结屏幕(尽管如果你使用软件流控制,这就是此键应该执行的操作)。要恢复正常的屏幕交互,请按 Ctrl-Q (^Q)。请注意,在“冻结”期间输入的所有内容都会被执行,但在你点击 ^Q 之前,你不会看到任何报告。因此,当它冻结时,不要输入任何可能破坏文件等的极端操作。使用硬件流控制的一个论点是为了防止此类冻结。
这包括上一节中的“显示冻结”=“终端挂起”的情况。
当显示看起来不正确,或者当你输入的内容显示不正确(如果显示),或者当你键入命令时没有任何反应时,你可能遇到了终端界面损坏。在极少数情况下,当串行端口硬件本身被损坏时,唯一的修复方法可能是循环电源(关闭 PC 并重新启动)。在某些情况下,仅循环终端电源即可修复它。有时重新登录会解决问题。为此,请杀死在终端上运行的 shell 进程(或杀死正在运行的 getty)。你可以从另一个终端执行此操作。一旦被杀死,一个新的 getty 进程会重新生成,这有望结束损坏。循环终端电源(或重置)也可能有所帮助。
损坏可能是由于以下原因造成的,例如
如果终端被发送了某些转义序列或控制字符,它将更改其特性。如果你不小心尝试显示二进制文件,它可能会偶然包含此类序列,这可能会使你的终端进入某些奇怪的操作模式,甚至使其无法使用。始终使用为此目的设计的程序查看或编辑二进制文件,以避免这种情况发生。大多数编辑器和分页器都可以正常处理二进制文件,以免损坏界面。有些可能会显示一条消息,告诉你它们无法编辑二进制文件。但是,如果你执行以下操作,则很可能会损坏内容:“cat ....” 或 “cp .... /dev/tty..” 或运行将二进制输出发送到 “标准输出” 的程序(除非你使用 > 等重定向此类输出)。
当使用通信程序时,远程计算机可能会将二进制数据发送到你的屏幕,也可能发生损坏。还有许多其他可能发生这种情况的方式,因此请做好准备。即使是所谓的文本文件也可能包含不需要的控制代码。
要修复此问题,请重置终端。键入 “reset” 或 “tset” 或 “setterm -reset”(当然,后跟 <return> -- 你键入的内容可能在屏幕上不可读)。这将从 terminfo 条目将重置字符串发送到终端。作为替代方案,如果正确的设置已保存在终端内部,则按下特殊键(可能在设置模式下)可能会恢复设置。然后,如果你使用 “reset” 来设置终端,你可能仍然需要使用 “reset” 来发送 init 字符串。
请注意,在 2000 年,“reset” 命令对于需要设置 “clocal” 的终端似乎已损坏,因为 “reset” 似乎取消设置了 “clocal”。在 2001 年,它似乎已修复,因此你可能不需要阅读本段的其余部分。如果你遇到此问题,使用 “reset” 只会通过禁用终端和计算机之间的通信使情况更糟。你可能需要再次登录并希望 getty 设置 “clocal”。如果你看到登录提示符而没有要求它,那么你很幸运。否则,请参阅 症状和一些修复方法,了解如何获取登录提示符。你应该在你需要它之前尝试 “reset”,如果 “reset” 注销你或以其他方式无法正常工作,请使用 “setterm -reset”。我在 2000 年 3 月提交了一个错误报告,但从未收到 “已修复” 通知。
对于你看到奇怪的 “图形” 字符而不是正常字符的情况,按下 ^O 可能会切换回正常字母。“reset” 命令也会执行此操作,但它也会重置所有其他内容。
还有一种情况是,所有字母都具有错误的属性(太暗、太亮、闪烁,甚至不可见 :-),但制表符字符创建的空格是正常的。这是由设置此属性的转义序列引起的,但该属性不适用于制表符字符创建的空格。通过重置等来修复。
大型应用程序(例如编辑器)通常在其代码中使用 stty 命令(或类似命令)来在你运行程序时临时更改 stty 配置。这可能会使设备驱动程序进入“raw”模式,以便你键入的每个字符都直接传递到应用程序。驱动程序的回显被禁用,因此你在屏幕上看到的所有内容都直接来自应用程序。因此,许多控制命令(例如 ^C)可能在此类应用程序中不起作用。
当你告诉此类应用程序退出时,应用程序首先将 stty 设置恢复到应用程序启动之前的状态。如果你异常退出程序,那么你可能仍然处于命令行上的 “raw 模式”。当你键入的内容不再显示在屏幕上时,你应该怀疑发生了这种情况。
要退出 raw 模式并恢复正常的 stty 设置,请键入 “stty sane”。但是,你必须在 “return” 之后立即键入此命令,并以 “return” 结尾。但是,按 “return” 键不起作用,因为 “return” 代码不再转换为 shell 正在等待的换行符。因此,只需键入换行符 (^J) 而不是 “return”。“sane” 终端界面可能与正常的界面不完全相同,但它通常有效。“stty sane” 也可用于摆脱由于其他原因造成的损坏界面。
你可以在键盘上键入的许多控制字符被终端驱动程序“捕获”并执行各种任务。要查看这些控制命令,请键入:stty -a 并查看第 2-4 行。它们在 stty 手册页中进行了简要解释。可以使用 stty 命令将它们更改为不同的控制字符或禁用它们。因此,你的控制字符可能与下面描述的字符不同。它们用于命令行编辑、中断、滚动以及透明地传递下一个字符。
虽然终端驱动程序有一些用于命令行编辑的命令,但某些 shell 具有内置的真实编辑器(例如 Bash shell 中的 “readline”)。此类编辑器通常默认开启,因此你无需执行任何操作即可启用它。如果它可用,你无需学习以下许多命令,尽管它们通常仍然可以与命令行编辑器一起使用。最重要的是学习 ^C(中断)、^D 以及如何停止滚动。
如果想要查看的内容滚动出屏幕底部,你可以通过向主机发送 “停止” 信号(^S 或 Xoff)来防止这种情况(前提是启用了 Xon-Xoff 流控制)。发送 “开始” 信号以恢复 (^Q 或 Xon)。某些终端具有 “No Scroll” 键,该键将交替发送 Xoff 和 Xon 或可能发送硬件流控制信号 ?? 以下是 ctrl-S (^S) 和 ctrl-Q (^Q) 的作用
如果既要停止滚动又要退出,请使用 ^C。如果想要停止滚动以执行其他操作,但希望将生成输出的程序保留在内存中以便稍后可以恢复滚动,请使用 ^Z 暂停。
另一种滚动方法是通过管道将输出传递给分页器,例如 more、less 或 most。但是,输出可能不是标准输出,而可能是分页器无法识别的错误输出。要解决此问题,你可能需要使用重定向 “2>&1” 以使分页器正常工作。通常,除非你需要向后滚动,否则只需使用 ^S 和 ^Q 会更简单。
在 PC 控制台(模拟终端)中,你可以使用 Shift-PageUp 向后滚动。这通常是必需的,因为滚动速度通常太快而无法使用 ^S 停止。一旦你向后滚动,Shift-PageDown 将再次向前滚动。
^V 将下一个键入的字符(通常是控制字符)直接通过设备驱动程序发送,而无需任何操作或解释。回显的是两个 ASCII 字符,例如 ^C。
某些 “文本” 文件是 8 位 Latin1 (=ISO-8859-1)。请参阅 字符集。如果你的终端无法显示 Latin1(或未安装 Latin1 字符集),则某些符号(例如项目符号)将显示错误。查看手册页(它们是 Latin1)时,你可以为 man 提供 -7 选项,以便将所有内容翻译为 ASCII。是否有一些分页器可以进行这些翻译?
如果使用 “man” 命令查看手册页,但将输出重定向到文件,则该文件将包含叠印。叠印是指某些打印字符通过在同一位置打印两次而显得粗体。因此,要打印叠印字符,文件在字符后包含一个退格符,然后重复相同的字符。如果这在文件中,那么如果你要在打印机上打印它,这很好(除非打印机的正常输出太暗,以至于叠印几乎没有改善)。但是,如果你想使用该文件发送电子邮件或编辑,则不太好。
消除叠印的一种方法是使用 “ul”(下划线)命令。你键入:ul -t dumb my_overstruck_file > output_file ul 命令将叠印转换为指定终端的粗体,并将转义序列添加到 output_file 以生成粗体。但是 “dumb” 类型的终端没有转义序列,因此你获得了所需的结果。还有其他方法可以做到这一点,但这是 “dumb” 类型终端的一种可能用途。
这些实用程序将提供有关终端界面的信息
终端设置通常在安装终端时使用终端手册中的设置程序设置一次。但是,某些设置可能会在终端使用时更改。你通常不会在使用终端时给出任何 “stty” 或 “setserial” 命令,因为它们很可能会损坏终端界面。但是,你可以更改终端屏幕的外观或其行为,而不会破坏界面的完整性。有时,这些更改由应用程序自动完成,因此你可能不需要处理它们。
进行此类更改的一种直接方法是使用终端上的设置键(或类似键),然后使用菜单(或类似菜单)进行更改。为此,你可能需要熟悉终端。 其他 3 种方法是从计算机向终端发送转义序列以进行更改。以下 3 个示例显示了设置反向视频的不同方法
这是最容易使用的命令。它使用长选项(但不使用正常的 -- 前缀)。它查阅 terminfo 数据库以确定要发送的代码。你可以更改颜色、亮度、自动换行、键盘重复、光标外观等。
“tput” 命令类似于 “setterm”,但它不使用普通单词作为参数,而是必须使用 terminfo 使用的缩写。许多缩写非常简洁且难以记住。
在示例 “echo ^[[7m” 中设置反向视频,^[ 是转义字符。要键入它,请键入 ^V^[(或 ^V 后跟 escape 键)。要使用此 “echo” 方法,你必须从终端手册或 terminfo 或 termcap 中找出要使用的代码。如果你在命令行上键入,则使用 setterm 或 tput 更简单。由于 “echo ...” 将执行得更快(因为它不执行任何查找),因此它非常适合在启动时等运行的 shell 脚本中使用。
当你关闭终端时,你所做的更改将丢失(除非你通过进入设置模式并保存将其保存在非易失性终端内存中)。如果你想再次使用它们而无需重新键入它们,请将命令放入 shell 脚本或使其成为 shell 函数。然后在你想进行更改时运行它。使更改半永久性的一种方法是将命令放入每次登录或启动计算机时运行的文件中。
“screen
” 软件包运行多个会话,类似于控制台上的虚拟终端:请参阅 控制台:/dev/tty?。你可以在会话之间来回切换。非免费的 Facet Term 软件也执行此操作。请参阅 FacetTerm
要注销,请键入 “logout” 或 “exit”。在某些情况下,你的请求将被拒绝,但你应该被告知原因。拒绝的原因之一是你不在你登录的同一个 shell 中。另一种注销方法是按 ^D。由于 ^D 也用于其他目的,你可能不希望它注销你。如果你在 Bash shell 中设置 IGNOREEOF,则 ^D 将不再注销你。
如果登录到同一主机上的终端的两个人想要互相聊天,他们可以使用 “write” 或 “talk”(更好)程序。可以使用 “mesg” 命令阻止任何人(超级用户除外)向其终端写入(发送消息)。
要窥探其他人在其终端上执行的操作,请使用 “ttysnoop” 程序。在 “ttysnoop” 中,两个终端具有相同的状态,并且在任一键盘上键入的任何内容都会同时显示在两个屏幕上(在相同的位置)。因此,如果你真的在窥探并且不想被发现,则不应键入任何内容。
“ttysnoop” 可用于培训,讲师和学员并排坐在各自的终端旁。讲师可以观看学员正在键入的内容,并通过正确键入来纠正任何错误。学员可以观看讲师键入的内容,然后尝试键入它。这就像他们使用一个终端,两个人同时将手放在键盘上。
“ttysnoop” 的一个缺点是,所涉及的终端都应是(或模拟)相同类型的终端(例如 vt100)。由于控制台(监视器)完成的 “Linux” 仿真和 “minicom”(或 “picocom”)仿真都接近 vt100,因此可以使用 ttysnoop 使用两台 PC,一台运行 “minicom” 来模拟终端。
有一个非自由程序叫做 "DoubleVision",它有点像 ttysnoop,但功能更多。终端可能是不同类型的,它可以记住和回放终端上的会话,以便你可以观察过去发生的事情。 网页地址是 http://www.tridia.com。
可以将同一个串行端口用于文本终端和另一个串行设备,例如打印机或调制解调器。 使用以下方法之一可以轻松进行物理连接
当您不将串行端口用于终端时,您需要确保不会错误地将 предназначенные для 终端的字符发送到另一个设备。 一种不安全的方法是让在终端上运行的程序保持运行,前提是当您使用另一个设备时,它们不会为终端发送任何内容。 这有时有效,因为在串行端口上运行的终端不会阻止另一个程序(进程)打开同一个端口。 如果另一个设备是打印机,这有时会有效。 但是,如果另一个设备应该向计算机上的串行端口发送字节,那么仍在端口上运行的终端程序通常会发回一些用于终端的字节,这些字节实际上会作为垃圾发送到另一个设备。
为了避免这种情况,最好在使用另一个设备之前终止所有在终端上运行的程序(进程)。 这并不像听起来那么容易。 您通常在端口上运行一个 shell(例如 Bash),如果您终止 Bash(例如通过注销),程序 "getty" 将会在端口上启动以尝试再次登录您。 如果您终止 getty,它将重新生成并再次启动。 因此,乍一看,似乎不可能终止终端串行端口上的所有进程。
解决此问题的一种方法是切换运行级别,以便端口上不运行 getty 程序或 shell。 对于运行级别修复,您可以创建另一个运行级别,其中端口上不运行 getty 程序。 然后,您进入这个新的运行级别,并将串行端口用于其他用途。 要进行设置,您需要编辑 /etc/inittab
并检查和/或设置 getty 运行的运行级别。 例如,行:"S1:23:respawn:/sbin/getty
..." 意味着 getty 将在运行级别 2 和 3 中运行(在 ttyS1 上)。 现在您可以使其仅在级别 2 中运行(通过删除 "3"),然后在您想使用另一个串行设备时转到运行级别 3。 因此,要将串行端口用于其他用途,超级用户将键入 "init 3" 以切换到运行级别 3。 键入 "init 2" 以返回到运行级别 2。 请注意,每个运行级别可能有一组不同的初始化脚本,但您可以根据需要更改此设置,以便在两个运行级别中运行相同的脚本。 脚本和运行级别的工作方式取决于发行版。 对于 Debian 发行版,对此的解释在 /usr/doc/sysvinit
中,也可以在 /usr/share/doc.
中查找。
还有端口的 stty 配置问题。 当端口用于终端时,它具有某些配置,但是当例如使用 "init 3" 切换运行级别并禁用端口上的 getty 时,端口的原始(启动时)配置不会恢复。 您很可能会以 "raw" 模式配置端口结束。 这意味着串行端口可能需要通过 stty 完全重新配置,可以通过您编写的脚本或通过在端口上运行的下一个应用程序进行配置。 某些应用程序(例如从串行端口打印)可能无法完全重新配置。 过时的 /etc/printcap 版本只能部分重新配置(但 "lprng" 下的新版本可以)。 因此,您可能需要编写一个脚本来完成它。 终端的 stty 配置将因其上是否运行 shell、是否处于 "login" 提示符等而异。 因此,切换运行级别后的 stty 配置可能会有所不同。
请参阅 2005 年文本模式浏览器综述 以获取文本浏览器的评论。
"lynx" 浏览器可以与所有文本终端正确配合使用。 还有一些其他的文本浏览器:"w3m"、"links2"(以前是 "links")和 "elinks",它们仅在 Linux 控制台、xterm 或 vt100 终端上完美运行。 但是,links2 和 elinks 可以通过将类型分类为像 最早的终端 一样的 "dumb" 类型,从而与任何终端一起工作。 但是,这样的界面速度较慢。
"netrik" 浏览器需要彩色终端。 对于 "links2" 和 "elinks",您必须将终端设置为 8 位,无奇偶校验。 (多年前我为 elinks 提交了一个错误报告,因为它应该可以与奇偶校验一起工作,最终在 2008 年我收到消息,它已在 0.13 版本中修复,并且也可能在 0.11 和 0.12 版本中修复)。 所有浏览器(包括 netrik ??)都支持 ssl(安全套接字层)用于加密通信。
"w3m"、"links2" 和 "elinks" 克服了 "lynx" 的一些缺陷。 "elinks" 只是更高级的 "links"。 它们通常可以更好地显示表格,并且可以并排显示框架。 不幸的是,它们尝试显示的内容(对于表格和框架)的宽度通常比终端宽度更宽,因此文本可能会超出屏幕右侧。 这需要横向滚动才能看到所有内容。 这样做可能会导致表格行的名称从屏幕上消失。 因此,在某些情况下,使用 "lynx" 可能会更好。
不幸的是,"w3m"、"links2" 和 "elinks" 没有像 lynx 那样的编号链接,它们对 cookie 的支持也不好。 对 Javascript 的支持可能是一个问题。 Elinks 和 netrik 有部分支持。 Links2 也支持(完整?)。 netrik 和 links2 都具有用于 X Window 的图形模式。
还有其他文本浏览器项目。 其中一些似乎已经停止开发。