我厌倦了打字
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)
我如何解决这个方面,以及这些脚本的一般最佳实践是什么?
答案 0 :(得分:1)
解决方案:
@jDo: 使用CTRL + R搜索bash历史记录
@Julien: 使用Argparse,Docopt或Click进行强大的python命令行解析
谢谢大家。
答案 1 :(得分:0)
要使用Python创建更强大的命令行程序,请考虑使用库来处理参数。在撰写此答案时,最受欢迎的是Argparse,Docopt和Click。它们都有自己的味道,这取决于你和你的用例,哪一个最合适。
This article对这三者的基本用法做了相当不错的比较。