我有一个非常简单的功能
function filefinder
{
FILE=$1; test -f $FILE || FILE=`find . -name $FILE`; /usr/bin/geany $FILE
}
alias geany=filefinder
但我希望其他编辑器使用相同的功能。我怎样才能做到这一点?说,我想补充alias nano=filefinder
。显然我不想硬连线geany或nano。
我有一个非常简单的功能
function filefinder
{
FILE=$1; test -f $FILE || FILE=`find . -name $FILE`; /usr/bin/geany $FILE
}
alias geany=filefinder
但我希望其他编辑器使用相同的功能。我怎样才能做到这一点?说,我想补充alias nano=filefinder
。显然我不想硬连线geany或nano。
怎么样:
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
执行此类操作的常用方法是使用通常用于保存用户首选编辑器名称的变量。
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
用作后备(当然,如果你愿意,你可以使用其他东西)。
环境变量怎么样?:
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