下面的代码非常适合运行ls命令。我有一个bash别名,我使用alias ll='ls -alFGh'
有没有可能让python运行bash命令,而不需要python加载bash别名文件,进行解析,然后实际运行完整的命令?在
import subprocess
command = "ls" # the shell command
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=None, shell=True)
#Launch the shell command:
output = process.communicate()
print (output[0])
尝试使用command=“ll”我得到的输出是:
^{pr2}$
你不能。运行python进程时,它不知道shell别名。有一些简单的方法可以将文本从父进程传递到子进程(而不是IPC)、命令行和通过环境(即导出的)变量。Bash不支持导出别名。在
从
man bash
页:对于几乎所有用途,别名都被shell函数取代。Bash不支持导出函数,因此我建议您将别名改为一个简单的函数。这样它就可以从shell导出到python再导出到shell。例如:
在外壳中:
在python中:
^{pr2}$由于您使用的是
print()
函数,所以我假设您使用的是python3。在这种情况下,您需要.decode()
,因为返回了一个bytes对象。在有了一点黑客技术,就可以从python创建和导出shell函数。在
相关问题 更多 >
编程相关推荐