Articles of terminal

在Linuxterminal应用程序中接收按键和键释放事件?

我想写一个简单的C程序,它将根据“关键”事件和“关键事件”执行不同的操作。 这个程序将从rxvt内部运行。 我应该使用什么样的库或机制来访问按键和版本? 阅读/dev/tty只会提供密钥发布是真的吗? termcap,terminfo,ncurses和slang也是这样吗? 有没有办法从terminal应用程序内实现这一点?

用C ++代码在Linux中清除terminal

好吧,我一直在研究如何做到这一点,但说我正在运行一个程序,在terminal上有一个输出端,我怎样才能清除我的程序内的屏幕,使我可以保持我的程序运行? 我知道我可以在terminalinputclear ,清除它,但正如我所说,这个程序对我来说会更有益处。 我发现了一些有用的东西,但是我不确定它是什么或者它在做什么。 cout << "\033[2J\033[1;1H"; 这很有效,但我不知道它是什么,如果你能解释它,我不会感激它。

命令在terminal中工作,但不通过QProcess

ifconfig | grep 'inet' 通过terminal执行时正在工作。 但不通过QProcess 我的示例代码是 QProcess p1; p1.start("ifconfig | grep 'inet'"); p1.waitForFinished(); QString output(p1.readAllStandardOutput()); textEdit->setText(output); 没有什么是显示在textedit。 但是当我在qprocess的开始只使用ifconfig时,输出显示在textedit上。 我有没有想过构build命令ifconfig | grep 'inet'任何技巧? ifconfig | grep 'inet' ,就像用' \| '和\| 为| ? 为特殊字符? 但我也试过,以及:(

/ dev / random极慢?

一些背景信息:我正在寻找在Red Hat服务器上运行脚本来从/ dev / random读取一些数据,并使用Perl unpack()命令将其转换为hexstring以供以后使用(基准testing数据库操作)。 我在/ dev / random上跑了几个“head -1”,好像运行的很好,但是几次之后,它就挂了。 几分钟后,最后输出一小段文字,然后结束。 我切换到/ dev / urandom(我真的不想,它更慢,我不需要这种随机性质量),它的前两个或三个调用罚款,然后也开始挂起。 我在想,如果这是轰炸它的“头”命令,所以我尝试使用Perl做一些简单的I / O,而且它也挂起来了。 作为最后一个努力,我使用“dd”命令将一些信息直接转储到文件而不是terminal。 我问的是1MB的数据,但是在我杀了它之前花了3分钟才得到~400字节。 我检查了进程列表,CPU和内存基本未变。 究竟是什么原因可能导致/ dev / random像这样废话,我能做些什么来防止/修复它呢? 编辑:感谢帮助家伙! 我似乎有随机和随意混淆。 我现在已经启动了脚本。 看起来我今天学到了一些新东西。 🙂

在bash脚本中使用“备用屏幕”

备用屏幕被诸如vim,htop,screen,alsamixer,less等许多“用户交互式”terminal应用程序所使用。它就像terminal内容的不同缓冲区,当应用程序退出时消失,所以整个terminal得到恢复,它看起来应用程序没有输出任何东西。 我想在我自己的shell(bash)脚本中实现完全相同的事情,除了它不必是便携式的。 我会坚持只有Linux和基于xterm的terminal仿真器; 但如果可能的话,解决scheme应该使用tput之类的东西。 但是,我不想使用一些外部脚本语言(甚至是像C这样的东西)。 尽pipe我不想使用C(因为它应该是一个尽可能less依赖的bash脚本),但我查看了less的源代码。 它似乎使用terminfo作为数据库,并在其初始化过程中查找“ti”terminal能力。 当删除线,它不使用替代sceen,所以我认为我find了负责任的代码行。 但是,我无法在man terminfofind这样的能力。 但是,也许我正在寻找解决scheme的错误path。 也许terminfo / tput不是我的朋友。 那么(如何)可以在bash脚本中使用备用屏幕? 有人知道一个简单的应用程序,其中的源代码,我可能会发现一个提示? (C应用程序或bash脚本或其他…)

JPanel中的Java Linuxterminal

我正在编写一个脚本编辑器,并希望能够运行Bash / Shell / Python /等。 在程序中的脚本…到目前为止,我有一个运行它们的方式,但脚本没有办法让用户input; 这是代码: package com.hightide.ui.terminal; import javax.swing.*; import java.awt.*; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; /** * Created by peter on 9/1/15. */ public class JTerminal extends JPanel { private final JTextArea jta; public JTerminal(){ super(); setLayout(new BorderLayout()); jta = new JTextArea("– HIGH TIDE SCRIPTING EDITOR VERSION 0.0 –\n"); jta.setBackground(Color.BLACK); […]

防止Gnometerminal执行后退出

在给定的命令退出后,如何防止gnometerminal退出? 我从cronjob调用gnome-terminal,以创build一个用户可访问的terminal。 terminal最初被赋予一个特定的程序来运行。 例如 gnome-terminal –tab -e "/usr/bin/myprog" 这工作正常,除了“myprog”退出时,gnometerminal也一样。 我如何保持它运行,但只是回到terminal提示?

检测NUL文件描述符(isatty是假的)

下面的C文件在NUL被传送给它时给出了一个伪造的结果: int main() { printf("_isatty = %d\n", _isatty(0)); } 结果是: C:\Users\Edward\Dev\nulltest> test.exe < NUL _isatty = 64 我很确定NUL(aka / dev / null)不是terminal设备! 所以我需要以另一种方式检测文件描述符是否对应于NUL。 这个数字没有任何具体的含义; 当我确实有一个terminal连接时,我看到它。 我该怎么办? 这个问题build议使用一个粗略的未logging的函数来获取底层名称,大概是将它与NUL进行比较,但这对我来说并不理想。 有没有更好的办法? PS这将有助于解决这个GHC错误 。

Vim:Windows下terminal的编码(Unicode)

我不知道为什么,但是这个话题似乎被logging得很差,而且有争议,因为没有人知道真正的答案(除了也许很less有人回答的穆勒纳尔先生之外)。 所以基本上我在这里提出了一个讨论,并且很快就死了,可能是因为在Windows上没有太多人在terminal模式下使用Vim。 我的编码设置如下所示: if has('multi_byte') if empty(&termencoding) let &termencoding = &encoding endif let &encoding = 'utf-8' let &fileencoding = 'utf-8' endif 当然,我在GVim下运行也没有问题:可以input任何字符,我修补的Powerline的Consolas工作得很好。 当我尝试在terminal模式下运行Vim时,问题就开始了。 我使用ConEmu ,一个function丰富的Windowsterminal模拟器。 它声称正式支持Unicode的开箱即用。 例如,我可以运行以下testing脚本: chcp 65001 & (cmd /c type "%~dpn0.cmd") & pause & goto :EOF English: texts, web pages and documents Graves,etc: à á â ã ä å æ ç è […]

在Cygwin上找不到sudo命令

我目前正在尝试在Windows操作系统上安装和更新一些软件包。 唯一的问题是,我正在使用Cygwin来通过terminal键入命令(正如我所知,我可以在Cygwin上键入Linuxtypes的命令,如cd,ls等 – 我可能是错的)。 但是,当我尝试安装一个包如: sudo apt-get install paparazzi-dev 我得到了答复: -sh: sudo: command not found. 有没有人有一个想法,我该如何解决这个问题?