1

我有一个非常简单的功能

function filefinder
{
  FILE=$1; test -f $FILE || FILE=`find . -name $FILE`; /usr/bin/geany $FILE
}
alias geany=filefinder

但我希望其他编辑器使用相同的功能。我怎样才能做到这一点?说,我想补充alias nano=filefinder。显然我不想硬连线geany或nano。

4

3 回答 3

2

怎么样:

function filefinder
    {
        FILE=$2; ED=$1; test -f $FILE || FILE=`find . -name $FILE`; /usr/bin/$ED $FILE;
    }
    alias geany="filefinder geany"
    alias gedit="filefinder gedit"
    alias nano="filefinder nano"

我假设您的发行版将所有 exec 保存在 /usr/bin

于 2012-07-28T20:01:44.087 回答
1

执行此类操作的常用方法是使用通常用于保存用户首选编辑器名称的变量。

function filefinder {
  editor=${VISUAL:-$EDITOR}; editor=${editor:-emacs}; FILE=$1; test -f "$FILE" || FILE=$(find . -name "$FILE"); "$editor" "$FILE"
}

这遵循 Bash 在您使用该readline函数时所做的事情edit-and-execute-command

如果$VISUAL设置使用它,如果不使用$EDITOR。它没有设置,emacs用作后备(当然,如果你愿意,你可以使用其他东西)。

于 2012-07-29T20:45:47.900 回答
0

环境变量怎么样?:

function filefinder
{
  if [ -z "$MY_EDITOR" ];then 
    echo "MY_EDITOR is not set";
  else  
    FILE=$1; test -f $FILE || FILE=`find . -name $FILE`; $MY_EDITOR $FILE
  fi
}

alias myedit=filefinder
于 2012-07-28T19:36:02.250 回答