我需要不时查看日志文件的特定行:

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

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

好吧,也许我有点发狂了:我也想忽略这个空间:
$ v10

我知道的唯一方法是定义很多别名:
alias v1='v 1'
alias v2='v 2'
alias v3='v 3'
alias v4='v 4'
...

有什么好办法吗?
谢谢你的建议。
这是我的最终版本,基于@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 "$@"
}

最佳答案

这不是一个答案,而是一个提示:
当您在ubuntu上发出一些命令时,如果该程序没有安装,那么shell调用它自己的处理程序,说

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

你可以试着找到那个程序,它能做到这一点。然后挂接您的代码,这将查看命令是否匹配regexv[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 "$@"
}

08-26 21:41
查看更多