问题标签 [screenrc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1403 浏览

linux - screenrc 中的 shell 命令

我正在尝试改进我的屏幕软件,所以我会有很多问题,因为我很难在互联网上找到很多答案......无论如何,这个是关于我希望 screen 的 shell 命令打开时执行,并没有...

在屏幕的新会话上,我要求屏幕打开一些窗口并命名它们并在每个窗口中打开一个文件,然后垂直拆分并打开新的空窗口:

但是这些文件像往常一样创建 .file.txt.swp 和 .file.txt.swo 隐藏文件,所以当我的计算机关闭并且文件没有正确关闭时,当我重新打开屏幕时,它会询问我必须对 . sw* 文件...我想先运行这个命令rm /path/to/folder/.*.sw*,这样它在打开时就不会要求执行操作(“.file.txt.swp 已经存在![O]open, [E]dit Anyway, [R] ecover,[Q]uit,[A]bandoned")

在 shellrm path/to/folder/.*.sw*中按预期删除每个交换文件,但我无法使其在 .screenrc 中工作

这不起作用:

这也不是:

也不是这个:

甚至这个:

还有很多其他的“盲目”尝试......

好吧,我不知道我在做什么:p

0 投票
0 回答
314 浏览

gnu-screen - GNU 屏幕动态标题

我的设置适用于一台计算机(linux mint 18.3 sylvia),而不适用于另一台计算机(Ubuntu 14.04.5 LTS),我真的不知道要检查什么才能找到问题:

我正在使用 GNU 屏幕,我输入了每个窗口的名称,当我更改目录或运行任务时,它们会动态变化。

例如,如果我提示cd ~/desktop它会显示~/desktop cd ~/desktop. 如果然后我提示cd ..它会显示~ cd ..

问题是,在第二台计算机上,它不起作用,或者更确切地说,它工作了一半,但我不明白如何。

以下是配置的工作方式:一部分在 .screenrc 文件中,另一部分在 .zshrc 文件中。

.screnrc:

%t是标题的一部分,应该用 PATH_SPACE_STRING 展开

它的工作原理归功于我在 .zshrc 文件中放入的内容,它使 shell 输出标题转义序列(esc k title esc),如此处要求的https://www.gnu.org/software/screen/manual/html_node/动态标题.html

.zshrc:

where%~代表当前路径,$1是在提示符中输入的字符串

但是经过几次测试,我知道运行 ubuntu 的计算机不会听我在 .zshrc 文件中放入的内容,但它无论如何都会扩展%t到路径中(所以我将路径作为标题,而不是路径加提示命令)

如果不是我在 .zshrc 文件中写的,什么可以给屏幕动态地将当前路径作为标题的指令?以及如何覆盖它?

0 投票
1 回答
60 浏览

gnu-screen - 你如何从你的screenrc设置复制模式?

我想默认从屏幕进入复制模式。现在,我正在使用stuff启动服务器。然后我想进入复制模式,这样我就可以使用鼠标向上滚动。

我不能只是使用stuff "Ctrl-a ESC"(即使Ctrl-a ESC从终端设置屏幕模式输入就好了)。

Ctrl-a我可以填充的特殊字符吗?(比如^M退货)

0 投票
1 回答
209 浏览

linux - 将屏幕会话配置为与 xterm 终端完全相同

我希望能够通过 screenrc 或在会话中配置屏幕会话,使其行为类似于 xterm 终端。目前我有一个 ac# 应用程序,它使用 ssh.net 库从 Windows 机器 ssh 到 Linux 机器,我在该机器上附加到屏幕会话并发送命令并接收回复。如果我附加到屏幕会话与我未附加到屏幕会话时相比,我会看到同一命令的两种不同类型和响应。为了演示这个问题,我将使用 putty 终端复制该问题并记录数据。

  1. 从 Windows 打开一个腻子终端
  2. 更改 Session->Logging 设置并选择 SSH Packets,同时浏览到保存 putty.log 文件的位置
  3. 设置您的 IP 地址并连接到 Linux 机器
  4. 登录后,发出以下命令 printf "abc\6\n",该字符串包含一个 ack 字符
  5. 响应将打印 abc 当然它不会显示 \6 因为它不是可打印字符
  6. 打开 putty.log 文件,您将看到响应数据包数据包含 \6,这是正确的行为。
  7. 现在通过发出以下命令创建会话:screen -dmS test
  8. 通过发出以下命令附加到会话:screen -Rr test
  9. 再次发出以下命令 printf "abc\6\n"
  10. abc 将按预期打印,但是如果您查看 putty.log 中的响应数据包数据,它将不再具有 \6 字符
  11. 我可以通过管道这样的命令来解决这个问题 printf "abc\6\n" | cat -v 将 \6 转换为可打印形式并在屏幕上显示 ^F,我宁愿在我的数据包数据中接收 \6,这不是一个理想的解决方案,但至少它为我的问题提供了一个解决方案。

以下是我无法解决的更严重的问题。为了演示,请执行以下操作:

  1. 从 Windows 打开一个腻子终端
  2. 更改 Session->Logging 设置并选择 SSH Packets 并浏览到保存 putty.log 文件的位置
  3. 设置您的 IP 地址并连接到 Linux 机器
  4. 登录后,通过发出以下命令更改 stty 设置(告诉终端不要用回车替换新行):stty -onlcr
  5. 然后发出命令 ls -al,
  6. putty.log 文件将包含没有额外字符的正确数据集。
  7. 现在通过发出以下命令创建会话:screen -dmS test
  8. 通过发出以下命令附加到会话:screen -Rr test
  9. 再次发出以下命令 stty -onlcr
  10. 再次发出 ls -al
  11. 如果您查看 putty.log 中的响应数据包数据,您会看到在收到一定数量的数据包后,响应将在每个响应前面包含额外的字符。额外字符采用以下格式 [13C. [ 和 C 之间的数字不同。

我想让我的响应与标准 xterm 终端的行为方式相同,为什么会有差异,是否有办法配置屏幕以获得与 xterm 类型的终端一致的响应。