2013-04-02 24 views
2

我需要从时间查看日志文件的特定行时间:命令/别名是否可变?

$ head -10 log.txt|tail -1 # to view line 10 of log.txt 

然后我在bashrc写了一个函数v,使生活更轻松:

$ v 10 

好吧,也许我“这里m是一点点分裂的头发:我想忽略的太宇:

$ v10 

我知道的唯一方法是定义许多别名:

alias v1='v 1' 
alias v2='v 2' 
alias v3='v 3' 
alias v4='v 4' 
... 

有没有什么好的方法呢?


感谢@Chirlo和@anishsane的想法。

这里是我的最终版本的基础上,@ anishsane与一些修正:

eval "`declare -f command_not_found_handle | sed s/command_not_found_handle/command_not_found_handle_orig/`" 
command_not_found_handle(){ 
    if expr match "$1" "v[0-9][0-9]*" >/dev/null ; then 
     v ${1:1} 
     return $? 
    fi 
    command_not_found_handle_orig "[email protected]" 
} 

回答

2

这不是一个答案,但一个提示:

当你给Ubuntu的一些命令,&如果程序没有安装,那么外壳调用自己的处理程序,并称

The program 'something' is currently not installed. You can install it by typing: 
sudo apt-get install something 

你可以尝试寻找那块方案,其中执行此操作。然后勾你的代码,指令是否匹配的正则表达式v[0-9]* &然后执行v $lineNumber基于命令的一些分析这看起来......


基于chepner的评论,这里是更新:

下面添加在你的.bashrc:

eval "`declare -f command_not_found_handle | sed s/command_not_found_handle/command_not_found_handle_orig/`" 

command_not_found_handle(){ 
    if expr match "$1" "v[0-9]*" >/dev/null ; then 
     v ${1:1} 
     return $? 
    fi 
    command_not_found_handle_orig "$[@]" 
} 
+2

我相信Ubuntu提供了'bash'的'command_not_found_handle'函数的默认实现。 – chepner

+0

感谢您的信息:) – anishsane

5

检查command_not_found_handle()如果你有bash> 4,你可以重写它来处理这种情况。当输入v10且bash无法解析时,将使用v10作为第一个参数调用此函数,然后您可以在其中执行此操作。

+0

感谢您的想法,对不起,我不能接受两个答案,但我真的很喜欢。 – Deqing