Python 制作了快速脚本来搜索bash历史-如何使其更加健壮?

Python 制作了快速脚本来搜索bash历史-如何使其更加健壮?,python,linux,bash,ubuntu,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[

我厌倦了打字

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)
文件“/usr/local/bin/hist”,第6行,在
subprocess.call(“grep”+sys.argv[1]+“~/.bash_history”,shell=True)
文件“/usr/lib/python2.7/subprocess.py”,第523行,在调用中
返回Popen(*popenargs,**kwargs)。等待()
文件“/usr/lib/python2.7/subprocess.py”,第1392行,正在等待
pid,sts=\u eintr\u retry\u调用(os.waitpid,self.pid,0)
文件“/usr/lib/python2.7/subprocess.py”,第476行,在重试调用中
返回函数(*args)

如何解决这方面的问题,以及对这些脚本的最佳实践是什么?

用Python制作一个更健壮的命令行程序,考虑使用一个库来处理参数。在撰写此答案时,最受欢迎的是,和。它们都有自己的风格,这取决于您和您的用例,哪一个最适合

对这三种解决方案的基本用法进行了比较。

解决方案:

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

@朱利安: 使用Argparse、Docopt或Click进行健壮的python命令行解析


谢谢大家。

为什么不呢?我不知道CTRL+R是可能的。谢谢这些看起来很有希望。谢谢你的链接!