有没有办法创建一个包含管道的整个bash命令的python脚本。bash用python脚本包装管道命令
举例来说,如果我有以下简单的脚本
import sys
print sys.argv
,并调用它像这样(从bash或IPython中),我得到预期的结果:
[[email protected] trell]$ python test.py ls
['test.py', 'ls']
如果我添加然而,脚本的输出被重定向到管汇:
[[email protected] trell]$ python test.py ls > out.txt
而> out.txt
部分不在sys.argv中。我知道shell会自动处理这个输出,但我很好奇,是否有办法强制shell忽略它并将它传递给被调用的进程。
这个的目的是为shell创建一个类似于包装的东西。我想定期运行这些命令,但要记住每个命令(包括管道)的strace输出。理想情况下,我想保留所有bash功能,例如制表符完成和上下箭头以及历史记录搜索,然后将完成的命令通过一个调用子进程来处理它的python脚本。
这是可能的,还是我必须写我自己的shell来做到这一点?
编辑
看来我要问同样的事情作为this question。
术语说明:这不是管道,它是输出重定向。 – chepner 2014-11-24 15:10:41
你是对的。对于那个很抱歉。这一点仍然适用。如果问题不是重定向,而是管道,问题依旧。 – 2014-11-24 15:11:45