问题标签 [stty]
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.
macos - STTY 可能已被删除?
我正在安装 ruby/rails/gem 和 homebrew 并感到沮丧。我想我删除了 stty 文件夹。无论如何,我能做什么?这似乎从未在互联网上发生过。
运行 stty 返回命令未找到...
macos - mac 命令键在终端中的表示是什么?
就像控制键在终端中用'^'表示,命令键(mac)的等价物是什么?
我正在尝试使用 stty 重新映射我的 bash 快捷方式
例如
stty eof ^D
但不是控制,我想使用命令键。
编辑:
好的,所以我试图解决的问题是我想交换命令和控制键,因为我在 osx 和 linux 上工作,不同的组合键给我带来了很多痛苦。
所以我使用 osx 首选项交换了修饰键。但是现在所有 bash 快捷键(如 Ctrl+C 等)都等同于使用键序列 'cmd+c' - 这是不可接受的。
值得庆幸的是,iTerm2 也支持修改键的重新映射,所以对于 iTerm2,我再次反转了它们,这意味着 iTerm2 将命令识别为命令,将控制识别为控制。
所以问题暂时解决了。
bash - stty 命令在 bash 点文件中的位置?.bash_profile?
我正在尝试确保在我的所有终端/shell/tmux 中关闭流控制、xon-xoff、Control-S Control-Q 功能(以便我可以可靠地将 Control-S 用于其他用途)它应该在 X、urxvt、tmux、控制台、ssh 等任何地方工作。
配置应该放在哪个点文件中?应该是什么?我最好的猜测:
我在我的机器上找到的示例使用 .bash_profile,但这似乎并没有抓住我的非登录 shell。另一方面,在 .bashrc 中放置 stty 调用假定有一个终端,我应该只测试一个终端( if [ -to ] )还是检查 $PS1?
也许有比“stty”更好的方式来配置我的终端?也许我应该让所有 bash 实例登录 shell?
stty 是我想避免的那些神秘的谜团之一。
sigint - 覆盖 "^c" 或 "ctrl-c" 是 shell 解释器的中断信号
我想覆盖 ctrl-c 作为我所有 shell 的信号中断字符,并用其他东西替换它。我查看了 stty 和 xmodmap,但还没有找到任何我理解的东西。
如果有人有一些想法,我将不胜感激。
linux - 使用串口与 stty 不工作,minicom ok
我正在尝试写入串行端口并通过 bash scrpts(echo、printf 和 read)读取结果。就我可以锻炼而言,我已经正确设置了 stty,但我无法读回任何字符。
如果我将端口放在环回中,我可以使用 minicom 发送和接收字符。耶 :)
但是当我退出 minicom 并向设备回显一些字符时,串行端口闪烁 rx led 一次,并且读取不显示任何字符。进一步的回显命令不会导致 rx 导致闪烁,所以看来我只能发送一次。
任何想法可能发生的事情以及我如何使事情正常进行。
谢谢,布伦丹。
perl - 在 Windows 上使用 perl 读取密码
我们有一个 perl 脚本,在我们使用 stty 读取密码。由于 stty 在 Windows 上不可用,因此此脚本失败。我们做了一些搜索,发现 ReadKey 是一个替代方案。但是,我们默认情况下不提供此包裹。
有什么方法可以在不使用 stty 和 ReadKey 的情况下在 perl 中读取密码?
如果有人可以在这方面帮助我,那将是非常有帮助的。
ruby - Ruby:read_nonblock(???) 破坏“系统”命令
我有两个版本的方法,我都遇到了同样的问题。
版本 1
第 2 版
我对两者都有同样的问题。具体来说,它们修改了 Kernel#system 命令的行为。
举个例子:
很容易看到系统的行为发生了变化,并且在第二个版本中,输入输出不是从 tty 中提取的。
请注意,当您按下任何键时,这不会发生,只是一个被转换为转义序列的键,例如光标键。
那么这是如何修复的呢?
附言
有人建议我在第二个位置运行 system("strace -o logfile irb") 并检查读取语句。相反,我跟踪了两个 irbs 并进行了比较。除了最后一个之外,所有的读取语句都是相同的,而且它们都是如此。最后的阅读看起来不同:
聚苯乙烯
我在linux系统上做这个。
mmap - 如何在 EAGAIN 错误后重置标准输入?
这是我在大型 ruby 脚本中遇到的错误。我设法将其归结为问题的本质。在讨论这个问题时,脚本是由某人在 OS/X 上运行而没有遇到同样的问题,所以与其说是 ruby 问题,不如说是 linux 问题。
对于非 Ruby 主义者,需要提及的关于此代码的内容<<
附加到数组[1]中。
反引号的行为与sh
. 目前,我不知道 Ruby 是如何具体实现read_nonblock
. 我正在研究它。如果问题仍未得到解答,将提及它。
稍后我会将C++源代码发布到“跟踪”函数中,但没有源代码很容易理解。读取命令行并写入预定文件。然后请求输入。从 STDIN 读取一些输入后,将其保存到同一个文件并退出。它本质上是一个调试功能,暂时替代了一些更复杂的功能。
问题
第三个系统调用行为不当,有点像从/dev/zero
.
从 STDIN 读取的日志条目如下所示:
那么为什么第三条trace读内存映射IO呢?
分配内存的命令的条目是:
为什么mmap
命令以fd
-1 作为参数?[2]
附加评论。根据我到目前为止所描述的内容,我几乎必须得出结论,当 EAGAIN 错误发生时,某些东西没有正确清理,或者标准输入状态以某种方式混乱,现在标准输入被阻塞。然后这会被系统命令继承。因此标题问题:您如何重置标准输入,以便它的行为与最初的行为一样。
[1]是的,作为一名 C++ 程序员,我知道这很烦人。
[2]我对 Unix 内存映射 IO 不是很熟悉,我自己从来没有用它写过任何东西。我很久以前使用过的 Windows 内存映射 IO。
bash - 当从 bash 的绑定调用时,为什么脚本不接受标准输入上的输入?
我已经编写了许多 bash/bind 工具来简化我的命令行存在,并且最近想让其中一个工具具有交互性。如果我尝试在这些脚本之一中从标准输入读取,执行会在读取时锁定。我的示例是在 python 中,但是当调用的脚本是用 ruby 编写时,我看到了完全相同的行为:
所以脚本有效。当我调用它时,我可以给它输入并打印我输入的内容。
bind
按预期工作。绑定的击键调用命令。我一直在使用这些东西,但直到现在,我只调用了不需要读取标准输入的脚本。
让我们将 [Alt-H] 绑定到脚本:
现在我们配置为让脚本在被绑定击键调用时从标准输入读取。点击 [Alt-H] 启动脚本,但没有回显任何键入的内容。即使按下 [Crl-D] 也不会结束它。退出的唯一方法是点击 [Crl-C],杀死 readline 中的进程。(sys.stdin.read() 遭受同样的命运。)
正如我在顶部提到的,我看到了与 ruby 相同的问题,所以我知道这与我使用的语言无关。(我省略了脚本。)
我已经查看了 Bash 参考手册关于 bind 的条目,它没有说明输入限制。有什么想法吗?
编辑:
如果我在进程卡住时 cat /proc/[PID]/fd/0 ,我会看到正在显示脚本的输入。(奇怪的是,相当数量的字符 - 似乎是随机的 - 没有出现在这里。这个症状只有在我输入了几百字节后才会出现。)
找到了这个,描述了终端如何以及何时在熟模式和生模式之间切换。呼叫stty cooked
和stty echo
在提示开始时,然后stty sane
或stty raw
之后触发一系列新的问题;主要与如何处理绑定字符有关,但只要说它破坏了大多数 alt 绑定(以及更多)就足够了,直到 return 被击中几次。
bash - 如何不将此处的文档回显到终端?
我有一个脚本提示用户输入他们的 sudo 密码,然后遍历主机列表并在远程主机上执行命令。我可以“读取 -s”以静默获取他们的密码,但是每次在远程主机上使用他们的密码时,它都会回显到终端。在本地主机上更改 stty 没有帮助。例子:
输出仍然包含密码:
在远程主机上使用 stty 也无济于事:
FWIW,我主要关心 OSX bash/sh