我有一个非常简单的功能
function filefinder
{
FILE=$1; test -f $FILE || FILE=`find . -name $FILE`; /usr/bin/geany $FILE
}
alias geany=filefinder
但我希望其他编辑使用相同的功能。我怎样才能做到这一点?说,我想添加alias nano=filefinder
。很显然,我不想硬连接geany或nano。
答案 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