两个bash别名,功能相同

时间:2012-07-28 19:15:35

标签: bash

我有一个非常简单的功能

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

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

3 个答案:

答案 0 :(得分: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"

我假设您的发行版将所有执行者保留在/ usr / bin

答案 1 :(得分: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作为后备(当然,如果你愿意,可以使用别的东西)。

答案 2 :(得分: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