标签: terminal-emulator

在不放弃本地回滚/历史记录的情况下使用 Mosh?

mosh没有不放弃本地回滚的使用方法?

基本上,在某些情况下,IP 漫游确实有用且需要,但额外的终端仿真和密钥预测似乎只是摆脱了本地回滚缓冲区行和会话历史记录。

terminal-emulator terminal scrolling console mosh

78
推荐指数
3
解决办法
4万
查看次数

每个伪终端 (PTY) 组件(软件、主端、从端)的职责是什么?

我试图弄清楚tty如何工作的1(每个元素的工作流程和职责)。我已经阅读了几篇关于它的有趣文章,但仍然有一些模糊的地方。

这是我到目前为止的理解:

  • 仿真终端/dev/ptmx对伪终端的主控部分进行不同的系统调用。
  • 伪终端的master部分分配了一个文件/dev/pts/[0-N],对应过时的串口,并在其上“附加”了一个slave伪终端。
  • 从伪终端保存会话ID、前台作业、屏幕大小等信息。

以下是我的问题:

  1. ptmx除了分配从属部分之外还有什么用途吗?它是否提供某种“智能”,或者模拟终端(例如 xterm)具有像终端一样运行的所有智能?
  2. 为什么 xterm必须与 master 部分交互,因为它只转发 slave 部分的 stdout 和 stdin?为什么不能 直接读写pts文件
  3. 会话 ID 是否总是附加到一个 pts 文件,反之亦然?我可以输入 ps 命令并找到2 个 sessionId 的相同 /dev/pts/X吗?
  4. pts商店还有什么其他信息?Xterm 是自己更新所有字段,还是在其上ptm添加一些“智能”?

1. 我的理解基于Linus Akesson 揭秘TTYAndries BrouwerLinux Kernel帖子,以及这些网站上的其他几个问题

kernel terminal-emulator terminal tty pty

77
推荐指数
3
解决办法
2万
查看次数

我使用的是哪种终端类型?

我已经用 Ubuntu 12.04 和 Debian 7 对此进行了测试。当我这样做时

echo $TERM
Run Code Online (Sandbox Code Playgroud)

我得到

xterm
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用下拉菜单“帮助”>“关于”,那么它会显示gnome terminal 3.4.1.1.

这是否意味着我只使用 gnome-terminal?还是只是xterm?还是 gnome-terminal 是 xterm 的扩展?我糊涂了。

terminal-emulator terminal xterm gnome-terminal

57
推荐指数
3
解决办法
11万
查看次数

如何设置终端打开的位置?

我希望终端在屏幕底部附近打开。有没有办法设置默认大小和位置?

我正在使用 Linux Mint 13、Cinnamon。

terminal-emulator x11 cinnamon window-management

52
推荐指数
3
解决办法
8万
查看次数

如何从另一个终端连接到一个终端的输出?

我需要从虚拟终端连接到当前正在运行的终端 (tty1) 的输出并捕获它(运行 X 服务器)。

terminal-emulator terminal tty

51
推荐指数
4
解决办法
14万
查看次数

是什么让我的光标在使用 gnome-temal 时“随机”消失?

经常发生我的光标gnome-terminal消失,迫使我在新选项卡/窗口上工作。这似乎是一个随机事件。有没有其他人经历过这种情况?其他 X 终端模拟器呢?我该如何解决这个问题(或者它可能只是一个错误)?

更新:一个简单的解决方法是从终端切换回来。

更新 2:我不再遇到这种情况,可能是因为我使用的是 GNOME 3 版本的终端。

gnome terminal-emulator

45
推荐指数
4
解决办法
4万
查看次数

Linux 终端如何工作?

如果你启动一个终端并调用一个可执行文件(为了简单起见,假设它是面向行的),你会从可执行文件中得到对命令的回复。这如何打印给您(用户)?终端是否做类似的事情pexpect?(轮询等待输出)还是什么?它如何获得要打印输出的通知?终端如何启动程序?(它类似于 python 的 os.fork() 吗?)我很困惑终端是如何工作的,我一直在玩一些终端模拟器,但我仍然不明白所有这些魔法是如何工作的。我正在查看 konsole (kde) 和 yakuake(可能使用 konsole)的来源,但我无法理解所有这些魔法发生的地方。

terminal-emulator terminal tty architecture pty

35
推荐指数
2
解决办法
2万
查看次数

是否有任何开源 Linux 终端和字体支持连字?

PragmataPro字体有一些真正的杀手的例子,他们渲染==为单个字符,并清理了很多其他的东西。

PragmataPro 示例

任何 Linux 终端都支持这个吗?有没有 PragmataPro 的替代品?

terminal-emulator terminal fonts

33
推荐指数
1
解决办法
3万
查看次数

如何避免终端中的转义序列攻击?

阅读CVE-2009-4487 的细节(这是关于日志文件中转义序列的危险)我有点惊讶。

引用CVE-2009-4487

nginx 0.7.64 将数据写入日志文件而不清理不可打印的字符,这可能允许远程攻击者通过包含终端模拟器转义序列的 HTTP 请求修改窗口的标题,或可能执行任意命令或覆盖文件。

显然,这实际上并不是 nginx 中的安全漏洞,而是终端模拟器中的安全漏洞。

当然,也许cat将日志文件写入终端只是偶然发生的,但是将日志文件写入grep是很常见的。less也许清理转义序列,但谁知道什么 shell 命令不会改变转义序列......

我倾向于同意Varnish 的回应

终端响应转义的智慧通常定期受到质疑,但仍然没有一个主要的终端仿真程序认为适合丢弃这些序列,这可能是在与不再使用的 1970 年代技术兼容的误导尝试中。[..] 从安全的角度来看,让终端仿真程序停止做愚蠢的事情,从而解决这个和其他安全问题,而不是责怪任何和所有写入日志文件的程序,这将更有效率和所有人。

因此我的问题:

我如何保护我的 xterm,以便不再可能通过转义序列执行命令或覆盖文件?

X 的哪些终端模拟器可以抵御这种攻击?

security terminal-emulator xterm special-characters escape-characters

30
推荐指数
2
解决办法
7866
查看次数

我们如何知道谁在伪终端设备的另一端?

如果我做:

echo foo > /dev/pts/12
Run Code Online (Sandbox Code Playgroud)

某些进程foo\n将从其文件描述符中读取到主端。

有没有办法找出那个(那些)过程是什么?

或者换句话说,我怎么能找出哪个 xterm/sshd/script/screen/tmux/expect/socat... 在 的另一端/dev/pts/12

lsof /dev/ptmx将告诉我在任何 pty 的主端具有文件描述符的进程。一个进程本身可以使用ptsname()TIOCGPTNioctl)根据自己的fd找出从设备到主端,所以我可以使用:

gdb --batch --pid "$the_pid" -ex "print ptsname($the_fd)"
Run Code Online (Sandbox Code Playgroud)

对于lsof构建该映射而返回的每个 pid/fd ,是否有更直接、可靠且侵入性更小的方法来获取该信息?

terminal-emulator open-files pty

29
推荐指数
2
解决办法
6391
查看次数