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"

私はあなたのディストリビューションがすべての幹部を/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"
}

readlineこれは、関数を使用するときにBashが行うことに従います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 に答える