问题标签 [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.
python - Python 诅咒 unsets 'onlcr' 并破坏了我的终端;如何重置*正确*
我在 Python3 中有以下基本的诅咒实现。
几乎所有事情都发生了我所期望的:Shoggoths 被召唤,Razzes 被matazzed,但是当我进入时,git status
我的换行符被打破了。
在显示之前和之后进行差异stty -a
:
在调查了这些选项之后,我发现发布stty onlcr
修复了终端。然而,我很惊讶,因为我认为这curses.endwin()
会让我重新振作起来:
取消初始化库,并使终端恢复正常状态。
我认为这可能是 iTerm2 中的问题,所以我尝试使用 Terminal.app。这产生了相同的行为。
我很难过还有其他一些重置技术吗?我在基于 C 的实现中看到 stty 数据通常保存到结构中以进行恢复……这可能是一种追求途径。
谢谢你的帮助!
go - golang 中的终端:syscall vs os/exec stty
这就是在 go 中通过系统调用获得(POSIX)终端大小的方式:
现在,同样的事情,用 os/exec 调用 stty:
在实践中,第一个解决方案可能会变得非常繁重且难以阅读,当一个人必须将终端置于原始模式、设置选项等时。当一个人习惯于 stty 时(例如在 shell 脚本中),第二个解决方案要容易得多!
所以我的问题是:使用第一个解决方案有什么好处?是速度?是不是我们不能依赖 stty 命令安装在宿主机上?还有什么我没有想到的吗?
简而言之,使用 stty 与系统调用的“风险”或“成本”是什么?
python - 任何想法如何替换 os.system("stty echo") 在 Windows 中工作?
我的一个朋友在 Mac 上编写了 python 代码,现在我正试图让它在 Windows 笔记本电脑上工作。
这条线尤其令人讨厌:
有人知道windows等价物吗?我已经用 msvcrt 替换了 tty,但我完全坚持这一点。
bash - bash 中的 SSH while 循环。不会分配伪终端,因为 stdin 不是终端
我正在尝试将文件循环到 ssh 到服务器列表,并在这些服务器上为某些日志文件执行查找命令。我知道 ssh 会吞下整个输入文件。所以我使用 -n 参数来 ssh。这工作正常,但在某些服务器上我遇到了一个新错误。
输入文件的构建方式如下: servername:location:mtime:logfileexention
我使用的 Bash 中的代码是:
在某些服务器上,我收到以下错误:
不会分配伪终端,因为 stdin 不是终端。stty:标准输入:设备的 ioctl 不合适
我尝试了多种选择来解决这个问题。我使用了 -t、-tt、-T 选项,但是当使用这些选项时,相同的错误仍然存在,或者终端变得无响应。
有人对此有解决方案吗?
go - 在测试中调用“stty size”会产生“Inappropriate ioctl for device”错误,如何解决?
我需要获取终端窗口的尺寸,我发现这个问题为我提供了一个可行的解决方案。
但是,现在我正在为它编写一个测试,两个顶级提供的解决方案(使用cmd.Stdin = os.Stdin
和Syscall
)都为我返回一个错误:
我正在使用 Goland IDE,但测试似乎完全无法从 IDE 和命令提示符运行。也许你们中的任何人都知道如何解决或找到这个问题的根源?
linux - 使用 bash 和树莓派 3 从 USB 设备读取数据?
我正在尝试捕获连接到 USB 的设备的响应。使用此代码:
在端口就绪时,向设备发送命令请求
然后阅读日志并将响应粘贴到另一个文件中正确转换它 xxd -plain /home/received.log > /home/output.txt
所以我可以显示数据, cat -v < /home/output.txt
但是我需要更稳定的东西,该代码向我显示了这个错误:
这很奇怪,因为它正在工作......
我想捕捉响应并将其存储在变量中。
linux - 用于奇偶校验的 stty 串行端口设置不持久
我有一个打开串行端口的 netcore 应用程序,一旦检测到奇偶校验错误,就会在控制台上写入“奇偶校验错误”。它在 Windows 10 中运行良好,但无法在 Linux 下运行。
我的假设是操作系统没有将奇偶校验错误传递给 netcore。
为了检查我运行的端口设置:
然后我运行:
并且设置似乎按预期正确设置(-ignpar inpck)。
然后我运行我的 netcore 3 应用程序,但未检测到奇偶校验错误。
所以我跑
用于验证设置,但这些似乎已重置(-ignpar -inpck)
如何强制我的应用程序在启用了 inpck 属性的情况下运行?
有没有办法让 inpck 默认启用?
谢谢。
更新:netcore 3 应用奇偶校验错误检测在 windows 10 中工作正常,但在 linux 下不起作用。我的假设是:
- A) netcore 运行时没有将奇偶校验设置传递给驱动程序(不太可能)
- B)操作系统忽略了指令。
bash - Bash:读取输入可用(是否有任何按键?)
问题
我正在使用 Bash 5 并且有一个长时间运行的循环,需要偶尔检查用户可能按下的各种键。我知道如何使用stty
- 请参阅下面的答案 - 但它比应该的更难看。
本质上,我正在寻找一种干净的方法来做到这一点:
非解决方案:读取 -t 0
我已阅读bash
手册并了解read -t 0
. 这不符合我的要求,即检测是否有任何输入可用。相反,它仅在用户按 ENTER(完整的输入行)时才返回 true。
例如:
c - Unix(Mac OS)终端不将 Ctrl+D 视为 EOF
我遇到的问题:当我玩getchar()
行为时,我发现我的终端(macOS Mohave 版本 10.14.6 18G87)不支持 Ctrl+D 作为 EOF。
我是如何遇到问题的:
下面附上代码getchar()
,基本上这个代码是 echo getchar() 如果输入字符不是空白,否则,对于多个连续空白字符,它只输出一个空白字符。代码本身可以工作,但是在终端中运行它时,终端不会将 Ctrl+D 视为 EOF,因此代码永远不会终止。
我确信这是由于我错误地使用了system ("/bin/stty raw");
,system ("/bin/stty cooked");
但是,我不知道如何修复它。
我检查了stty
,但是,它确实配置EOF
为Ctrl +D
. 但是,现在,如果我按Ctrl + D
,它只会将终端从一个窗口拆分为两个。
我可以做些什么来允许EOF
重新启用?
谢谢!