展开/etc/passwd
GECOS 字段获取用户全名时,我们应该只展开第一个 & 号(&
字符),还是展开所有 & 号?
在以逗号 ( ,
) 分隔的子字段的 GECOS 字段中,应该仅在第一个子字段(即用户的全名)中还是在所有子字段中扩展 & 号?
如果 Unix 用户名包含大写字母,我们应该在&
扩展中保留它们,还是应该只将用户名的第一个字母大写,其余的小写?
有没有办法只安装 Alpine Linux 及其apk
软件包的安全更新,跳过不能修复安全漏洞的更新?
我写了一些带有命令行界面的开源 Linux/BSD 软件,想知道我是否也可以轻松地让它在 Solaris 上运行。对于对 Solaris 几乎一无所知的人来说,用 Solaris 或其衍生产品之一安装 amd64 虚拟机有哪些简单的选择(即与 Linux/BSD 一样容易)?
它应该具有(开箱即用或易于安装):
是否有一种简单的方法可以使whois
来自终端的查询在输出中具有语法着色,以便更容易阅读?
一些基本的东西,比如NOT FOUND
用红色着色,不同颜色的字段名称和日期已经很有用了。如果着色不是 100% 准确也没关系。
为什么终端仿真器绘制基于文本的应用程序时仍然存在视觉伪影?这在最近渲染 3D 游戏和 GUI 窗口的计算机上,包括没有伪影的抗锯齿矢量字体。
我经常看到以下工件,它们揭示了屏幕更新过程的中间步骤:
这些伪影仅在亚秒间隔内可见,在大多数屏幕更新期间不会出现,但在无闪烁 GUI 上长大后,我仍然想知道如何避免它们。一旦开始绘制更复杂的屏幕,就可以在例如以下 ASCIInema 视频中看到上述所有工件(滚动除外):MapSCII - 控制台中的整个世界!
我也特别不是在谈论缓慢的更新。如果更新总是即时的,那就太好了,但由于网络和处理延迟,这并不总是可能的。我的意思是,部分绘制的屏幕通常会在短时间内可见。在大多数现代 GUI 中,只向用户显示完全完成的屏幕,部分绘图的工件非常罕见。
我的印象是终端仿真管道是这样的:
curses
或其他库将字符单元格网格转换为 ANSI 转义码,这将在终端上呈现等效屏幕上述哪个步骤可以减慢进程,使终端模拟器向我们显示中间渲染步骤,而不是只显示最终结果?
似乎硬件终端(串行端口连接)的速度由它们的波特率决定,可以改变tcsetattr()
但我从多个来源了解到波特率设置对终端使用的伪终端(pty)设备没有影响模拟器。这是否意味着 Unix 内核不会故意限制 pty 通信的速率?
应用程序或渲染库(诅咒等)是否在多次写入中发送文本和 ANSI 代码,而不是尝试只使用一个write()
?
Unix 内核对其内部 I/O 缓冲区有大小限制,这会影响诸如可以通过管道发送而不会阻塞的最大数据量。这是否会影响渲染具有大量细节的终端屏幕(一屏文本、大量颜色等)?我想组合的文本和 ANSI 转义码可能会包含太多数据,以至于它不适合 pty 驱动程序的缓冲区,这会将屏幕更新拆分为应用程序的多个写入操作和终端仿真器的多个读取操作。如果终端仿真器急于在处理下一次读取之前显示每次读取的结果,这将导致显示闪烁,直到处理完批处理中的最终读取。
终端仿真器或 pty 驱动程序是否有故意的批处理超时,以便它们的行为更接近于模仿硬件终端,感觉更自然,或者解决一些其他被认为比显示速度更重要的问题?
最近有一些努力使新的终端仿真器渲染速度更快(例如,通过将字体预渲染到视频内存中的 OpenGL 纹理中)。但这些努力似乎只是在计算网格后加速将字符单元网格渲染到屏幕位图上。
似乎还有其他事情正在发生,即使在非常快的计算机上,这些东西也会从根本上变慢。想一想:如果终端仿真器在将任何内容渲染到屏幕位图之前处理所有 ANSI 代码以获得字符单元格网格,那么字符网格到位图渲染例程有多慢并不重要 - 应该有没有闪烁(至少不是那种明显对应于硬件终端上的光标移动的闪烁,这是我们经常看到的)。即使终端模拟器花了整整一秒钟在屏幕上绘制任何给定的字符单元格网格,我们也只会得到一秒钟的不活动,而不是一秒钟的闪烁。
一个类似的问题是 Unixclear
和reset
命令的执行速度非常慢(从 GUI 用户的角度来看,它们不会做任何比重绘位图更复杂的事情)。也许出于相关原因。
有什么方法可以制作简单的命令
sudo pkg_add some-package
在不从源代码重新编译任何内容的情况下进行 NetBSD 的普通安装?我尝试过的所有其他 Unix 系统都毫不费力地提供了开箱即用的等效命令。
我能想到的最好的就是添加
export PKG_PATH="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/$(uname)/$(uname -m)/$(uname -r)/All/"
to/root/.shrc
但 sudo 不读取.shrc
.
pkgsrc 常见问题解答,“将 'sudo' 与 pkgsrc 一起使用”说您可以调整“pkgsrc 的即时 su(1) 功能”以使用 sudo,但它需要编辑生成文件并重新编译某些内容。对于这样一项基本任务,这似乎是一个苛刻的要求。即使没有此修改,当我尝试以普通用户身份安装软件包时pkg_add
也不会要求我这样做- 它只是说su
pkg_add: Can't create pkgdb entry: /var/db/pkg/<...>: Permission denied
OpenBSD 有一个用于此目的的/etc/installurl文件,但我找不到与 NetBSD 等效的文件。