Python3运行Alias Bash命令

2024-09-30 01:26:46 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码非常适合运行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}$

Tags: 文件the代码import命令bashoutputalias
1条回答
网友
1楼 · 发布于 2024-09-30 01:26:46

你不能。运行python进程时,它不知道shell别名。有一些简单的方法可以将文本从父进程传递到子进程(而不是IPC)、命令行和通过环境(即导出的)变量。Bash不支持导出别名。在

man bash页:对于几乎所有用途,别名都被shell函数取代。

Bash不支持导出函数,因此我建议您将别名改为一个简单的函数。这样它就可以从shell导出到python再导出到shell。例如:

在外壳中:

ll() { ls -l; }
export -f ll

在python中:

^{pr2}$

由于您使用的是print()函数,所以我假设您使用的是python3。在这种情况下,您需要.decode(),因为返回了一个bytes对象。在

有了一点黑客技术,就可以从python创建和导出shell函数。在

相关问题 更多 >

    热门问题