Questions tagged «stdout»

stdout是进程的默认输出文件描述符的名称。由于“ stdout”没有什么特别的,因此您*不应该*使用该标签。使用[io-redirection]标记来询问有关如何重定向输出的问题,使用[file-descriptors]来解决有关如何管理文件描述符的问题,使用[lock]来解决文件锁定的问题,以及使用[files]来解决关于以下问题的一般性问题:文件操作。

9
如何永远以优雅的方式无所事事?
我有一个程序,可以在上产生有用的信息,stdout但也可以读取stdin。我想将其标准输出重定向到文件,而不在标准输入上提供任何内容。到目前为止,一切都很好:我可以做到: program > output 而且不要在tty中做任何事情。 但是,问题是我想在后台执行此操作。如果我做: program > output & 程序将被挂起(“暂停(tty输入)”)。 如果我做: program < /dev/null > output & 该程序立即终止,因为它达到了EOF。 似乎我需要的是插入program不确定的时间内不做任何事情并且不读取的内容stdin。以下方法起作用: while true; do sleep 100; done | program > output & mkfifo fifo && cat fifo | program > output & tail -f /dev/null | program > output & 但是,这一切都非常丑陋。有有是一种优雅的方式,使用标准的Unix工具,到“什么都不做,无限期”(意译man …

5
进度报告/记录信息是否属于stderr或stdout?
是否有正式的POSIX,GNU或其他指南,说明应在何处打印进度报告和日志记录信息(如“ Doing foo; foo done”之类的内容)?就个人而言,我倾向于将它们写入stderr,以便可以重定向stdout并仅获取程序的实际输出。最近有人告诉我,这不是一个好习惯,因为进度报告实际上不是错误,而应该仅将错误消息打印到stderr。 这两个职位都很有意义,当然您可以根据自己的工作细节选择一个或两个,但是我想知道是否有一个普遍接受的标准。在POSIX,GNU编码标准或任何其他这样的最佳实践列表中,我找不到任何特定的规则。 我们有一些类似的问题,但它们不能解决这个确切的问题: 何时在shell脚本中使用重定向到stderr:接受的答案表明了我倾向于做的事情,将程序的最终输出保留在stdout上,并保留给stderr。但是,尽管有论点支持,但这只是作为用户的意见而呈现的。 使用消息应该发送到stderr还是stdout?:这特定于帮助消息,但引用了GNU编码标准。这是我正在寻找的东西,不仅限于帮助消息。 那么,是否有关于打印进度报告和其他信息(不在程序实际输出中的部分)的官方规定?
75 posix  stdout  gnu  stderr  standard 



4
立即将Python标准输出写入文件
尝试将标准输出从Python脚本写入文本文件(python script.py > log)时,将在启动命令时创建该文本文件,但直到Python脚本完成后才写入实际内容。例如: script.py: import time for i in range(10): print('bla') time.sleep(5) 当使用调用时python script.py,每5秒将输出到stdout ,但是当我调用时python script.py > log,日志文件的大小保持为零,直到脚本完成。是否可以直接写入日志文件,以便您可以跟踪脚本的进度(例如使用tail)? 编辑事实证明,这python -u script.py可以解决问题,我不知道stdout的缓冲。
51 shell  python  stdout 

5
更改时输出文件内容
我想在文件更改时输出文件的内容,例如,如果我有文件foobar并且这样做: magic_command foobar 当前终端应显示文件的内容,并等待直到我不知道按^ C。 然后,如果从另一个终端执行: echo asdf >> foobar 除原始文件内容外,第一个终端还应显示新添加的行(当然,考虑到我没有按^ C键)。 因为我想探索和学习linux,所以我将其标记为家庭作业,但这不是家庭作业,只是我的好奇心。
47 terminal  tail  stdout 

6
使用echo时如何添加新行
为什么以下命令没有在生成的文件中插入换行符,该怎么办? $ echo "Line 1\r\nLine2" >> readme.txt $ cat readme.txt Line 1\r\nLine2
42 stdout  echo 

6
如何诱使命令认为其输出将发送到终端
给定一条命令,该命令在其输出将输出到终端时会更改其行为(例如,产生彩色输出),如何在保留更改的行为的同时在管道中重定向该输出?必须有一个我不知道的实用程序。 某些命令(如grep --color=always)具有选项标志来强制执行该行为,但问题是如何解决仅依赖于测试其输出文件描述符的程序。 如果有关系的话,我的外壳bash在Linux上。
38 shell  pipe  utilities  stdout  pty 

4
如何调用vim编辑器并将管道输出到bash
有时我需要编写文本,然后将其通过管道传递到另一个命令中。我通常的工作流程如下: vim # I edit and save my file as file.txt cat file.txt | pandoc -o file.pdf # pandoc is an example rm file.txt 我觉得这很麻烦,并试图学习bash脚本,我想通过编写一个命令来触发该操作,从而简化该过程,该命令将打开编辑器,当编辑器关闭时,将编辑器的输出发送到stdout。这样我就可以将命令运行为quickedit | pandoc -o file.pdf。 我不确定这将如何工作。我已经编写了一个函数,可以按照上面的确切工作流程以及一些附加操作来自动执行此操作。它生成一个随机字符串作为文件名,并在调用函数时将其传递给vim。当用户通过保存文件退出vim时,该函数将文件打印到控制台,然后删除该文件。 function quickedit { filename="$(cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-f0-9' | head -c 32)" vim $filename cat $filename rm …
34 vim  pipe  stdout 


8
将文件内容输出到stdout的命令?
我知道cat可以做到这一点,但是它的主要目的是连接而不只是显示内容。 我也知道less和more,但是我正在寻找一种简单的方法(不是分页器),该方法只是将文件的内容输出到终端,如果有的话,它就是为此专门制作的。
28 cat  less  stdout 

3
将stdout和stderr重定向到没有文件描述符副本的同一文件是否安全?
我从空目录开始。 $ touch aFile $ ls aFile 然后我有ls两个参数,其中一个不在此目录中。我将两个输出流都重定向到名为的文件output。我>>为了避免同时写而使用。 $ ls aFile not_exist >>output 2>>output $ cat output ls: cannot access 'not_exist': No such file or directory aFile 这似乎可行。这种方法有危险吗?

2
在bash脚本中,如何逐行捕获stdout
在bash脚本中,我想逐行捕获长命令的标准输出,以便可以在初始命令仍在运行时对其进行分析和报告。这是我可以想象的复杂方法: # Start long command in a separated process and redirect stdout to temp file longcommand > /tmp/tmp$$.out & #loop until process completes ps cax | grep longcommand > /dev/null while [ $? -eq 0 ] do #capture the last lines in temp file and determine if there is new …
26 bash  process  stdout 

6
如何使python程序的行为像适当的unix工具?
我周围有一些Python脚本,我正在重写它们。我对他们所有人都有同样的问题。 对于我来说,如何编写程序以使其像适当的unix工具一样运作尚不明显。 因为这 $ cat characters | progname 和这个 $ progname characters 应该产生相同的输出。 我在Python中找到的最接近的东西是fileinput库。不幸的是,我并没有真正看到如何重写我的Python脚本,所有这些看起来像这样: #!/usr/bin/env python # coding=UTF-8 import sys, re for file in sys.argv[1:]: f = open(file) fs = f.read() regexnl = re.compile('[^\s\w.,?!:;-]') rstuff = regexnl.sub('', fs) f.close() print rstuff 如果有标准输入,fileinput库处理标准输入,如果有文件,则处理文件。但是它遍历单行。 import fileinput for line in fileinput.input(): process(line) 我真的不明白。我想如果您要处理的是小文件,或者您对文件的处理不多,这似乎很明显。但是,就我的目的而言,这比仅打开整个文件并将其读取为字符串要慢得多,如上所述。 …

3
如何限制stdout的输出速度?
我正在运行CentOS 5.7,并且有一个备份实用程序,可以选择将其备份文件转储到stdout。备份文件很大(多个GB)。目标是SSHFS文件系统。为了确保不占用带宽并降低网络性能,我想限制将数据写入“磁盘”的速度。 如何限制stdout基于字节数的能力?例如,将进程的写入能力限制为大约768Bps。
24 hard-disk  io  stdout 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.