2014-08-30 197 views
1

我想创建一个函数添加到我的bash_profile文件,以便能够从历史记录中提取命令列表grep给定的单词和删除命令的数字。问题是,我可以直接做这样历史命令没有命令编号

$history | grep tar | cut -c 8- 

但是当我把它变成一个功能的.bash_profile这个

function hrep() { 
    history | grep $1 | cut -c 8- 
} 

它没有考虑到剪切命令。它打印出grepped命令,但不会修剪命令号。

你知道我错过了什么吗? 非常感谢, Juanpe。

+1

我不能与Ubuntu重现此错误。输入以下内容并重试:'bash --norc' – Cyrus 2014-08-30 09:49:52

+0

如果我这样做了,我没有加载bash_profile,并且在加载它时关闭了bash会话。我可以从命令行运行它,但问题是当我从它创建一个功能。顺便说一下,这是在使用Scientific Linux 5的本地群集中,当我有机会查看它是否有效时,我会在另一台机器上尝试。 – 2014-08-30 10:24:41

+1

对我来说,这工作正常,当我添加到我的.bashrc – ShaneQful 2014-08-30 12:08:41

回答

0

我宁愿使用正则表达式而不是告诉剪切删除特定数量的字符。你的历史可能远远超过一千行。
(通常是正则表达式应该是正确的)

hrep() { 
    history | grep $1 | sed 's/^[ ]*[0-9]*[ ]*//g' 
}