我正在尝试使用-e选项提供的命令打开gnome-terminal(尽管我认为它与任何x-terminal-emulator有关)gnome-terminal -e 'ls'.一旦命令完成工作,终端就会关闭,所以我需要一种方法来等待用户输入能够读取结果然后最后用Enter按下关闭窗口.
我试过gnome-terminal -e 'ls; read -p "..."',如果我ls; read -p "..."在已经打开的终端中运行,它会工作,但是带有-e选项的终端会一直关闭.
那么有什么方法可以保持终端打开,直到使用-e选项时提供一些用户输入?
我有以下简单的程序:
# -*- coding: utf-8 -*-
GREEK = u'???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ????'
print GREEK
Run Code Online (Sandbox Code Playgroud)
在终端上运行此产生,如下所示:
$ python test.py
???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ????
Run Code Online (Sandbox Code Playgroud)
但是将输出传递给另一个程序会导致错误:
$ python test.py | less
Traceback (most recent call last):
File "test.py", line 5, in <module>
print GREEK
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
Traceback (most recent call last):
File "ddd.py", line 5, in …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Swift 语言创建一个终端模拟器(目前使用 Swift 4.0)
到目前为止,我已经创建了一个用户界面,唯一的问题是我的一些命令不起作用,例如:
diskutil mount disk0s1
Run Code Online (Sandbox Code Playgroud)
这会在 Xcode 控制台输出中出现以下错误:
"Could not start up a DiskManagement session"
Run Code Online (Sandbox Code Playgroud)
一些命令的工作原理如下:
echo Hi
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止实际执行命令的代码:
@discardableResult
func shell(_ args: String) -> Int32 {
let task = Process()
task.launchPath = "/usr/bin/env"
let cmd = args.characters.split(separator: " ").map(String.init)
task.arguments = cmd
task.launch()
task.waitUntilExit()
return task.terminationStatus
}
Run Code Online (Sandbox Code Playgroud) 我正在为 Zebra 移动数据终端 TC25/TC20 创建一个用于扫描条形码的应用程序。为此,在安装 Emdk for Zebra 后,我可以看到 EMDK api,但系统映像不可用于创建模拟器。
谁能帮我获取 Zebra 设备的这些系统映像文件。
我正在研究一个学校项目来构建一个伪终端和文件系统.终端正在扫描System.in并将字符串传递给控制器.
输入到控制台: abc\r\nabc\r\nabc
这是我试过的代码
Scanner systemIn = Scanner(System.in);
input = systemIn.nextLine();
input = input.replaceAll("\\\\r\\\\n",System.getProperty("line.separator"));
System.out.print(input);
Run Code Online (Sandbox Code Playgroud)
我希望java将\ r \n我键入的控制台视为行分隔符,而不是实际的\和r.它现在做的是按原样打印输入.
期望的输出:
ABC
ABC
ABC
更新:我试过input = StringEscapeUtils.unescapeJava(input);,它解决了这个问题.
当在终端模拟器(例如终结器)中使用 Fish shell 以及输出大量文本的命令时,在输出上获取一些颜色编码可能会很有用。我知道脚本可以将颜色代码信息添加到输出中,例如“ grep --color=auto ”。我想可以修改鱼终端以扫描输出并将其添加到特殊位置吗?
我想要做的是,任何脚本的输出中出现的文本“错误”始终标记为红色,而“警告”始终标记为黄色。任何人都知道这是否可以通过在~/.config/fish/functions目录或类似目录中引入函数文件来实现?
诸如resize询问终端其大小之类的程序。最终,他们将向标准输出发送一些(ANSI)转义序列,并期望终端对这些序列本身做出反应,返回一些字节。
该机制的效果通过以下交互式 Python 代码片段可见:
\n\n>>> print('\\x1b[21;t')\nRun Code Online (Sandbox Code Playgroud)\n\nGnome 终端将在标准输入上插入与窗口标题相关的可见内容。
\n\n哪个脚本片段将促使终端写入\xe2\x80\x99s 大小(以字符为单位)?如果返回的大小不可见,则应进行一些简单的转换才能看到某些内容。Shell、Python、Perl,任何语言都可以。由于这将是特定于终端的,因此任何常见的终端仿真器都可以(例如 xterm、gnome-terminal、terminator 等)。
\n\n澄清:我不关心告诉我大小的程序。我知道 TIOCGWINSZ,它不能通过串行线路工作。我想查看使用转义序列的代码,它实际上在串行线路上工作。
\n我想在 Qt 中从 Linux 上的运行进程中获取输出。
我的代码如下所示:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <qprocess.h>
#include <qthread.h>
QProcess process;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
process.start("htop");
connect(&process, SIGNAL(readyReadStandardOutput()), this, SLOT(getData()));
}
void getData(){
QByteArray out;
out = process.readAllStandardOutput();
}
MainWindow::~MainWindow()
{
delete ui;
}
Run Code Online (Sandbox Code Playgroud)
但是我想从htop获取实时(更改)输出并将其保存到字符串。