制作快速脚本来搜索bash历史记录 - 如何使其更强大?

时间:2017-03-25 16:58:58

标签: python linux bash ubuntu

我厌倦了打字

grep "{search term}" ~/.bash_history

在我之前的bash历史记录中搜索字词。所以我刚写出这个python脚本并把它放在/ usr / bin / local中所以我只需要输入

hist {search term}

我得到了bash历史中使用该搜索词的所有行的列表。

这是脚本:

#hist
#!/usr/bin/python

import subprocess
import sys

subprocess.call("grep " + sys.argv[1] + " ~/.bash_history", shell=True)

它在大多数情况下都很有效。但是我注意到,如果我输入

hist "-L"

我收到以下错误:

File "/usr/local/bin/hist", line 6, in <module>
subprocess.call("grep " + sys.argv[1] + " ~/.bash_history", shell=True)
  File "/usr/lib/python2.7/subprocess.py", line 523, in call
return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 1392, in wait
pid, sts = _eintr_retry_call(os.waitpid, self.pid, 0)
  File "/usr/lib/python2.7/subprocess.py", line 476, in _eintr_retry_call
return func(*args)

我如何解决这个方面,以及这些脚本的一般最佳实践是什么?

2 个答案:

答案 0 :(得分:1)

解决方案:

@jDo: 使用CTRL + R搜索bash历史记录

@Julien: 使用Argparse,Docopt或Click进行强大的python命令行解析

谢谢大家。

答案 1 :(得分:0)

要使用Python创建更强大的命令行程序,请考虑使用库来处理参数。在撰写此答案时,最受欢迎的是ArgparseDocoptClick。它们都有自己的味道,这取决于你和你的用例,哪一个最合适。

This article对这三者的基本用法做了相当不错的比较。