1

「project something」と入力して、エディターを開いて同時にプロジェクトフォルダーに「cd-ing」するという毎日のタスクを自動化しようとしています。ここまでは順調ですね。コードは機能しています。しかし、私はいくつかの予期しない動作をしました。現在のディレクトリ ラベルが表示されていLukas-mbp:~sub_directory(2603m|master) $ます。これはそこで何をしsub_directoryているのですか。以下のコードのように、私が使用している変数名です。しかし、私の端末が実際のディレクトリの代わりにそれを表示している理由を誰かに教えてもらえますか?

function project() {
  for directory in ~/projects/*
  do
    for sub_directory in $directory/*
    do
      if [[ "$sub_directory" =~ $1 ]]; then
        cd "$sub_directory"
        sublime $sub_directory
        return
      fi
    done
  done
}
4

1 に答える 1

0

不必要なループをすべて実行する代わりに、単純なワイルドカードを使用してください。ただし、私はあなたのサブディレクトリ ツリーを完全には理解していないので、2 つの選択肢を用意しました。関数を~/.bashrcに追加します。

1 - サブディレクトリ ツリーが次のような場合 (例とまったく同じように動作します*):

~/projects/subdir1/target1/
~/projects/subdir1/target2/
~/projects/subdir2/target3/
~/projects/subdir2/target4/

関数は次のようになります。

function project {
    cd ~/projects/*/"$1"
    sublime .
    # or sublime ./*
}

*同じ名前のターゲットが2つ以上あるが、サブディレクトリが異なる場合、例のように最初のターゲットのみに一致することに注意してください。

2 - サブディレクトリ ツリーが次のような場合 (これは私にとってより一般的なようです):

~/projects/target1/
~/projects/target2/
~/projects/target3/
~/projects/target4/

関数は次のようになります。

function project {
    cd ~/projects/"$1"
    sublime .
    # or sublime ./*
}
于 2013-02-15T18:25:06.560 に答える