我正在编写一个shell脚本,应该有点安全,即不通过命令的parameter passing安全的数据,最好不使用临时文件。 我如何将一个variables传递给命令的stdin? 或者,如果不可能,如何正确使用临时文件来完成这样的任务?
我有一个python脚本parse.py,在脚本中打开一个文件,比如说file1,然后做一些可能打印出来的字符总数。 filename = 'file1' f = open(filename, 'r') content = f.read() print filename, len(content) 现在,我正在使用stdout将结果指向我的输出文件 – 输出 python parse.py >> output 但是,我不想通过手动文件来做这个文件,有没有办法自动照顾每一个文件? 喜欢 ls | awk '{print}' | python parse.py >> output 那么问题是我怎么能从standardin读取文件名? 还是已经有一些内置的function可以轻松完成ls和那些工作? 谢谢!
我正在寻找处理与节点的文本文件使用命令行调用如: node app.js < input.txt 文件的每一行都需要单独处理,但一旦处理完,input行就会被遗忘。 使用标准input的数据监听器,我得到了一个字节大小的inputstream,所以我设置了它。 process.stdin.resume(); process.stdin.setEncoding('utf8'); var lingeringLine = ""; process.stdin.on('data', function(chunk) { lines = chunk.split("\n"); lines[0] = lingeringLine + lines[0]; lingeringLine = lines.pop(); lines.forEach(processLine); }); process.stdin.on('end', function() { processLine(lingeringLine); }); 但是,这似乎是如此草率。 必须围绕线arrays的第一个和最后一个项目进行按摩。 有没有更好的方法来做到这一点?
在Linux上从stdin读取数据时可以压缩(创build一个压缩的归档)数据吗?
是否有可能侦听正在运行的nodejs脚本中的传入键击? 如果我使用process.openStdin()并侦听其'data'事件,那么input会被缓冲直到下一个换行符,如下所示: // stdin_test.js var stdin = process.openStdin(); stdin.on('data', function(chunk) { console.log("Got chunk: " + chunk); }); 运行这个,我得到: $ node stdin_test.js <– type '1' <– type '2' <– hit enter Got chunk: 12 我想要看的是: $ node stdin_test.js <– type '1' (without hitting enter yet) Got chunk: 1 我正在寻找一个nodejs相当于,例如, rubygetc 这可能吗?
有没有办法有效地做到这一点在bash中: /my/bash/script < echo 'This string will be sent to stdin.' 我知道,我可以pipe从回声的输出如下所示: echo 'This string will be piped to stdin.' | /my/bash/script
我很困惑这三个文件的目的。 如果我的理解是正确的, stdin是程序写入其请求中运行进程中的任务的文件。 stdout是内核写入其输出的文件,并且请求它访问来自stderr的信息, stderr是input所有exception的文件。 在打开这些文件来检查这些文件是否真的发生了,我发现似乎没有任何提示! 我想知道的是这些文件的目的究竟是什么,绝对愚蠢的回答用很less的科技术语!
在Perl中,以下代码将从命令行参数或stdin中指定的文件中读取: while (<>) { print($_); } 这很方便。 我只是想知道从bash中的文件或标准input读取最简单的方法是什么。
我需要做这样的事情,但我需要创build一个可以给予input和输出多次的subprocess。 该post的接受答案有很好的代码… from subprocess import Popen, PIPE, STDOUT p = Popen(['grep', 'f'], stdout=PIPE, stdin=PIPE, stderr=STDOUT) grep_stdout = p.communicate(input=b'one\ntwo\nthree\nfour\nfive\nsix\n')[0] print(grep_stdout.decode()) # four # five …我想继续像这样: grep_stdout2 = p.communicate(input=b'spam\neggs\nfrench fries\nbacon\nspam\nspam\n')[0] print(grep_stdout2.decode()) # french fries 但是,唉,我得到以下错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/subprocess.py", line 928, in communicate raise ValueError("Cannot send input after […]
我正在做一个任务,一个程序把一个文件描述符作为参数(一般来自父调用exec调用),并从一个文件读取并写入一个文件描述符,在我的testing中,我意识到程序可以工作如果我使用0,1或2作为文件描述符,则不会发出错误。 这对我来说是有意义的,除了我可以写入标准input并显示在屏幕上。 有这个解释吗? 我一直认为stdin / stdout有一些保护,你肯定不能从标准输出到标准input或者fgets。 #include <stdlib.h> #include <stdio.h> #include <unistd.h> int main() { char message[20]; read(STDOUT_FILENO, message, 20); write(STDIN_FILENO, message, 20); return 0; }