如何在 Mac 上的 python 脚本中删除 bash 历史记录?

Posted

技术标签:

【中文标题】如何在 Mac 上的 python 脚本中删除 bash 历史记录?【英文标题】:How to delete bash history in python script on Mac? 【发布时间】:2014-02-02 07:03:17 【问题描述】:

我想在我的 Macbook Pro 上使用 python 脚本删除 bash 历史记录。

我知道两种使用 bash shell 删除 bash 历史记录的方法

1.rm ~/.bash_history

2.历史-c

但是这些命令在带有子进程的 python 脚本中不起作用:

1.rm ~/.bash_history

import subprocess
subprocess.call([‘rm’, ‘~/.bash_history'])

错误:

rm: ~/.bash_history: 没有这样的文件或目录

2.历史-c

import subprocess
subprocess.call(['history', '-c'])

错误:

文件“test.py”,第 8 行,在 subprocess.call(['history', '-c']) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”,行>524,在调用中 返回 Popen(*popenargs, **kwargs).wait() init 中的文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”,>711 行 读错,写错) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”,行>1308,在_execute_child 引发 child_exception

有什么想法吗?

【问题讨论】:

【参考方案1】:

你有两个问题:

首先python看不懂~,需要扩展一下:

subprocess.call(['rm', os.path.expanduser('~/.bash_history')])

其次,history 是一个内置的 shell。使用 shell 调用它:

subprocess.call(['bash', '-c', 'history -c'])

【讨论】:

您好,感谢您的回复。我已经尝试过代码。 'subprocess.call(['rm', os.path.expanduser('~/.bash_history')])' 效果很好! subprocess.call(['bash', '-c', 'history -c']) 但是 subprocess.call(['bash', '-c', 'history -c']) 不起作用....我试图将评论编辑为一个好的格式,但是系统告诉我“评论只能在 5 分钟内编辑”。这是我第一次编辑评论,我很抱歉让它难以阅读。 @devnull @Matt history -c删除$HOME/.bash_history。它只是清除当前会话中的历史列表。从终端尝试说:history -c,然后是cat ~/.bash_history,你应该能够理解。你也可以试试history -w,然后是history -c @Matt 简而言之,删除文件是您可能要考虑的选项。此外,如果您不希望bashhistory 记录到文件中,您可以在~/.bashrc 中包含export HISTFILE=/dev/null 行。 而subprocess.call(['rm', os.path.expanduser('~/.bash_history')]) 可以删除文件。但是当我在 shell 中运行“历史”时,我仍然可以看到命令历史。很抱歉,问题仍未解决。

以上是关于如何在 Mac 上的 python 脚本中删除 bash 历史记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何在mac上的python中导入非标准包?此软件包不支持pip安装

尝试运行脚本时如何解决mac上的硒问题

如何通过 python 子进程与 mac 上的应用程序交互?

从 MAC 上的批处理文件运行 Python 脚本 [关闭]

unity脚本中变量在另一个脚本如何调用

如何在 Android 上的 ASE 中使用 Python 获取设备特定的 UID?