unix tee命令将标准输入拆分为stdout AND文件.
我需要的是反过来的东西,将几个输入合并到一个输出 - 我需要连接两个(或更多)命令的stdout.
不确定这个应用程序的语义应该是什么 - 让我们假设每个参数都是一个完整的命令.
例:
> eet "echo 1" "echo 2" > file.txt
Run Code Online (Sandbox Code Playgroud)
应该生成一个包含内容的文件
1
2
Run Code Online (Sandbox Code Playgroud)
我试过了
> echo 1 && echo 2 > zz.txt
Run Code Online (Sandbox Code Playgroud)
它不起作用.
旁注:我知道我可以将每个命令的输出附加到文件中,但我想一次性执行此操作(实际上,我想将合并的输出传递给另一个程序).
另外,我可以自己动手,但只要我负担得起,我就懒得:-)
哦,是的,如果它在Windows中运行会很好(虽然我猜任何bash/linux风格的解决方案都可以通过UnxUtils/msys/etc运行)
默认情况下,STDOUT是否无缓冲?如果不是,它的默认缓冲类型是什么
谢谢
我正在尝试修改其他人编写的脚本,我想让我的脚本与他的脚本分开.
我写的脚本以print一行输出,该行输出由空格分隔的所有相关数据.
例如: print "$sap $stuff $more_stuff";
我想在另一个perl脚本的中间使用这些数据,我不确定是否可以使用系统调用我写的脚本.
例如: system("./sap_calc.pl $id"); #obtain printed data from sap_calc.pl here
可以这样做吗?如果没有,我该怎么办呢?
system():
我写了这个函数来与外部程序进行通信.这样的程序从stdin获取输入并在stdout上输出它的输出.为了使我的代码与该程序通信,我使用管道将stdin和stdout重定向到缓冲区.
int query_oracle(mpz * c,int *t, mpz * m) {
int out_pipe[2];
int in_pipe[2];
int saved_stdout;
int saved_stdin;
// REDIRECT STDIN
saved_stdin = dup(STDIN_FILENO); /* save stdin for later */
pipe(in_pipe); /* make a pipe */
close(STDIN_FILENO);
dup2(in_pipe[0], STDIN_FILENO); /* redirect pipe to stdin */
//write(in_pipe[1], in_buf, strlen(in_buf));
// REDIRECT STDOUT
saved_stdout = dup(STDOUT_FILENO); /* save stdout for display later */
if( pipe(out_pipe) != 0 ) { /* make a pipe */
exit(1);
}
dup2(out_pipe[1], STDOUT_FILENO); /* redirect stdout to …Run Code Online (Sandbox Code Playgroud) 我正在读一本维基百科条目它说:在类Unix操作系统为/ dev/null或空设备是丢弃写入的所有数据,但特殊的文件" 报道说,写操作成功了. "
本声明分为两部分.第一部分很清楚它是一个空文件.我不清楚句子的第二部分,在哪里/如何找到写操作成功?
我想制作bash脚本,向stdout发送一个只包含ASCII可写字符的文件映像.我的脚本应该只接收和接受一个包含应从/ dev/urandom读取的八位字节数的参数.因此,我需要从/ dev/urandom读取给定数量的八位字节以创建要发送到stdout的文件映像.我有这个:
!/斌/庆典
X = 1
如果[$ X -eq 0]则回显"错误:需要参数"
其他
strings/dev/urandom
回显结果科幻
基本上我正在检查是否有任何参数,如果有,请阅读dev/urandom.当然这只是一个草图.
我被告知有一个叫做字符串的命令可以从任何文件中读取和提取字符序列,但是我已经在互联网上查了一下,我找不到很多关于它的信息.
所以我的问题是:我如何读取/ dev/random参数中给出的八位字节数,以便我可以将它们放在stdout中(我知道如何放入stdout :))
我几天来一直在使用PySide程序遇到困难.我不认为这个问题难以置信,因为那里有答案.我遇到的问题似乎都不适合我.
我希望'监听'文件对象stdout和stderr,并在我的PySide程序运行时将内容输出到QText Edit小部件.现在,我已经意识到这个问题(或者类似的东西)之前已经被问过了,但就像我说的那样,由于某种原因无法让它为我工作,而其他大多数解决方案都基于我能做到的那个问题.工作,所以对我来说这几天非常令人沮丧.这个解决方案(OutLog)包含在我下面的代码片段中,以防你们其中一个人可以看到我的拙劣实现.
要记住的事情:
1我在Windows 7上做这个(duuuh,da,da,duh)
2我正在使用eclipse并在IDE中运行它(duh,da,da,duh,DUUUUH:如果建议适用于命令行或IDE,那将非常方便)
3我真的只想在程序运行时将stdout和stderr的输出复制到小部件.对于这种情况,逐行发生将是一个梦想,但即使它在一个循环结束时出现作为一个块或其他东西,这将是晶圆厂.
4哦,关于OutLog,有人可以告诉我,如果在init中将self.out设置为'None' ,这个类实际上可以工作吗?我的意思是,self.out 总是一个NoneType对象,对吧???
任何帮助将不胜感激,即使它只是指向我可以找到更多信息的地方.我一直在努力建立自己的解决方案(我有点像一个虐待狂),但我发现很难找到关于这些对象如何工作的相关信息.
无论如何,抱怨过来.这是我的代码:
#!/usr/bin/env python
import sys
import logging
import system_utilities
log = logging.getLogger()
log.setLevel("DEBUG")
log.addHandler(system_utilities.SystemLogger())
import matplotlib
matplotlib.use("Qt4Agg")
matplotlib.rcParams["backend.qt4"] = "PySide"
import subprocess
import plot_widget
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from PySide import QtCore, QtGui
class MainWindow(QtGui.QMainWindow):
"""This is the main window class and displays the primary UI when launched.
Inherits from QMainWindow.
"""
def __init__(self):
"""Init function.
"""
super(MainWindow, self).__init__() …Run Code Online (Sandbox Code Playgroud) 是否可以在包含变量的Linux OS上向控制台打印(在C中)一行文本,以便在变量更改时更改打印行而不是打印新行?例如,如果我有以下C代码:
void main()
{
int i;
for(i=1;i<=10;i++){
printf("%d\n",i);
sleep(5);
}
}
Run Code Online (Sandbox Code Playgroud)
这样就可以打印十行.但我想打印一行更新自己以显示i它何时发生变化的价值.
我正在尝试使用流类向进程写入内容.我正在使用.net 4.5.然而,似乎写作不是支持.
Process.StandardOutput.BaseStream.CanWrite
Run Code Online (Sandbox Code Playgroud)
返回false.
Process Stream类不支持写入是真的吗?
我有一个迭代两个字符串数组的测试脚本,我想用它sys.stdout.write来为用户提供一个简单的"进度条".
我目前的剧本:
import sys
from time import sleep
names = ['Serv1', 'Serv2', 'Serv3', 'Serv4', 'Serv5']
states = ['Running', 'Stopped', 'Running', 'Running', 'Stopped']
terminated=0
passed=0
for i in range (0, len(names)):
if 'Running' in states[i]:
print " [*] stop if running {0} ".format(str(names[i]))
#service_info(action, machine, names[i])
terminated+=1
else:
print " [!] Passing over {0} ".format(str(names[i]))
passed+=1
sleep(2)
sys.stdout.write(" [ ] {0}/{1} progress left\r".format(i+1, len(names)))
Run Code Online (Sandbox Code Playgroud)
预期输出用于sys.stdout.write保持更新,而打印语句通知用户某些动作.但是当我运行它时,唯一的时间sys.stdout.write显示在脚本的末尾.例如
[*] stop if running Serv1
[!] Passing over Serv2
[*] …Run Code Online (Sandbox Code Playgroud)