1

現在のディレクトリに存在するファイルを探すシェル関数を作成しようとしています。現在のディレクトリにファイルが存在しない場合は、親ディレクトリを試して、ファイルシステムのルートに移動する必要があります(〜に移動するだけで十分です)。

私が達成しようとしているのは、プロジェクトに使用されている現在の Ruby on Rails のバージョンをプロンプトに表示することです。簡単な方法は、文字列を呼び出しbundle show railsて解析することですが、非常に時間がかかります。バージョン情報を含むファイルを解析したいので、Gemfile.lock. 私が現在持っているものは、プロジェクトのルート (Gemfile.lock が存在する場所) にいる場合にのみ機能します。

git configこれは非常に高速ですが、git 構成ファイルの解析にも使用できます。

御時間ありがとうございます

4

2 に答える 2

2

このような?

#!/bin/zsh

# the function    
findfile_parent() {
 FILE=$1
 while [ ! -e "${FILE}" ]; do
  if [ "$(pwd)" = "/" ]; then
    return
  fi
  cd ..
 done
 echo "$(pwd)/${FILE}"
}

# usage example
SEARCHFILE=foo.pyl
UPFILE=$(findfile_parent ${SEARCHFILE})
if [ "x${UPFILE}" != "x" ]; then
 echo "found file ${SEARCHFILE} as ${UPFILE}"
else
 echo "couldn't find file ${SEARCHFILE}"
fi
于 2013-01-21T08:45:00.830 に答える
0

以下の 2 つの役立つリンクを参照して、解決策を見つけてください。

Rubyで現在のディレクトリの親ディレクトリを取得

ファイルの存在を確認する方法

):

于 2013-01-21T08:55:58.803 に答える