SE 上有很多问题显示了如何从被cat /dev/urandom
. 对于那些不熟悉这个问题的人 - 这里是关于:
cat /dev/urandom
或等效(例如,cat binary_file.dat
)。那没问题……除非您的终端在命令完成后继续打印垃圾!这是实际上是 g++ 输出的错误渲染文本的屏幕截图:
我想人们对 C++ 错误有时太神秘的看法是正确的!
通常的解决方案是 run stty sane && reset
,尽管每次发生这种情况时都运行它有点烦人。
正因为如此,我想在这个问题中关注的是发生这种情况的原始原因,以及在发出此类命令后如何防止终端中断。我不是在寻找解决方案,例如将有问题的命令通过管道传递给tr
or xxd
,因为这要求您在实际运行/打印之前知道程序/文件输出二进制文件,并且每次碰巧输出此类数据时都需要记住.
我注意到 URxvt、PuTTY 和 Linux 帧缓冲区中的相同行为,所以我认为这不是特定于终端的问题。我的主要怀疑是随机输出包含一些翻转字符编码的 ANSI 转义码(事实上,如果你cat /dev/urandom
再次运行,它可能会打开终端,这似乎证实了这个理论)。如果这是正确的,这个转义码是什么?是否有任何标准方法可以禁用它?
我执行通过 SSH 输出大量信息的命令。例如,我愚蠢地在执行数百万次的循环中添加调试信息,或者只是cat /dev/urandom
为了踢球而运行。
终端充斥着信息。
我想尽快终止命令并修复我的程序。我不在乎它打印什么。现在,问题是我按Ctrl+ CASAP(在上面的示例中,我在运行命令后立即按了它),但是打印我什至不需要的所有信息仍然需要时间。
我尝试按Ctrl+C如此努力,以至于当终端终于赶上时它产生了有趣的结果:
OUTPUT HERE^C
rr-@burza:~/xor$ ^C
rr-@burza:~/xor$ ^C
rr-@burza:~/xor$ ^C
^C^C
^C^C^C^C^C^C^C^C^C^C^C
^C^C^C^C^C^C^C^C^C^C
^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C
^C^C^C^C^C^C^C
^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C
^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C
^C^C^C^C^C^C^C^C^C^C^C^C^C
rr-@burza:~/xor$ ^C
rr-@burza:~/xor$ ^C
rr-@burza:~/xor$ ^C
rr-@burza:~/xor$ ^C
rr-@burza:~/xor$ ^C
rr-@burza:~/xor$ ^C
rr-@burza:~/xor$ ^C
rr-@burza:~/xor$ ^C
rr-@burza:~/xor$ ^C
Run Code Online (Sandbox Code Playgroud)
我还阅读了关于Ctrl+S显然是用来告诉终端“停止输出,我需要赶上”但显然它什么都不做。
我不想改变我运行的命令,这样我就可以在任何情况下自救,即使我不记得我运行的程序可能会像那样结束。
我的 SSH 客户端CYGWIN_NT-6.1-WOW64 luna 1.7.30(0.272/5/3) 2014-05-23 10:36 i686 Cygwin
在 MinTTY 中的Cygwin( ) 上运行,终端类型设置为xterm-256color …
...没有投票。
我想检测当前聚焦的窗口何时发生变化,以便我可以更新系统中的一个自定义 GUI。
兴趣点:
xdotool getactivewindow getwindowname
每隔半秒运行一次,效果很好……但是每秒生成 2 个进程对我的系统来说是否友好?在 中bspwm
,bspc subscribe
每次窗口焦点发生变化时,都可以使用它打印一行包含一些(非常)基本统计信息的行。这种方法一开始看起来不错,但是监听它不会检测到窗口标题何时自行更改(例如,以这种方式更改 Web 浏览器中的选项卡将不会被注意到。)
那么,在 Linux 上每半秒产生一个新进程是否可以,如果不是,我该如何做得更好?
我想到的一件事是尝试模仿窗口管理器的作用。但是我可以独立于工作窗口管理器为诸如“窗口创建”、“标题更改请求”等事件编写钩子,还是我需要自己成为窗口管理器?我需要root吗?
(我想到的另一件事是查看xdotool
的代码并仅模拟我感兴趣的事情,这样我就可以避免所有进程产生样板,但它仍然会进行轮询。)
就像标题一样。在 Windows 上,我可以这样做:
explorer /select,"C:\folder\file.txt"
Run Code Online (Sandbox Code Playgroud)
这将导致打开explorer.exe
,即会立即打开C:\folder
并选择file.txt
。
我相信 ROX 也有这个功能。
我可以对 thunar 做同样的事情吗?
假设我有一段时间不升级系统了。一旦我最终运行pacman -Syu
,我显然会收到很多包裹。在这种情况下,输出是完全不可接受的 - 所有包都写在一行中,没有任何对齐方式,只有简单的换行。
那么,我可以pacman
像 那样以列的形式显示包ls -C
,或者至少像 那样垂直地显示包ls -1
吗?
到目前为止,我一直在使用pacman -Syu --print-format '%n %v'
,但这是次优的(特别是传递--print-format
强制pacman
在空运行模式下运行,所以我实际上需要pacman -Syu
在检查包后再次运行)。编写包装脚本,或者切换到另一个前端,感觉有点矫枉过正。