gpt4 book ai didi

python - 使用 python 创建命令行别名

转载 作者:太空狗 更新时间:2023-10-30 01:06:24 24 4
gpt4 key购买 nike

我想在我的一个 Python 脚本中创建命令行别名。我试过 os.system()、subprocess.call()(有和没有 shell=True)和 subprocess.Popen(),但我对这些方法都没有运气。让您了解我想做什么:

在命令行上我可以创建这个别名:alias hello="echo 'hello world'"

我希望能够运行一个 python 脚本来为我创建这个别名。有什么建议吗?

我也对能够在 python 脚本中使用这个别名感兴趣,比如使用 subprocess.call(alias),但这对我来说不如创建别名重要。

最佳答案

你可以这样做,但你必须小心别名的措辞正确。我假设您使用的是类 Unix 系统并且正在使用 ~/.bashrc,但其他 shell 也可以使用类似的代码。

import os

alias = 'alias hello="echo hello world"\n'
homefolder = os.path.expanduser('~')
bashrc = os.path.abspath('%s/.bashrc' % homefolder)

with open(bashrc, 'r') as f:
lines = f.readlines()
if alias not in lines:
out = open(bashrc, 'a')
out.write(alias)
out.close()

但是,如果您随后希望别名立即可用,您可能必须在之后source ~/.bashrc。我不知道从 python 脚本执行此操作的简单方法,因为它是 bash 内置的,你不能从子脚本修改现有的父 shell,但它可用于你打开的所有后续 shell,因为它们将获取 bashrc。


编辑:

稍微优雅一点的解决方案:

import os
import re

alias = 'alias hello="echo hello world"'
pattern = re.compile(alias)

homefolder = os.path.expanduser('~')
bashrc = os.path.abspath('%s/.bashrc' % homefolder)

def appendToBashrc():
with open(bashrc, 'r') as f:
lines = f.readlines()
for line in lines:
if pattern.match(line):
return
out = open(bashrc, 'a')
out.write('\n%s' % alias)
out.close()

if __name__ == "__main__":
appendToBashrc()

关于python - 使用 python 创建命令行别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37842862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com