1

我正在尝试制作一个在当前目录中查找文件存在的 shell 函数。如果当前目录不存在该文件,它应该尝试父目录,并向上到文件系统的根目录(向上到 ~ 应该绰绰有余)。

我想要实现的是在我的提示下显示用于项目的当前 ruby​​ on rails 版本。简单的方法是调用bundle show rails和解析字符串,但是速度很慢;所以我想解析包含版本信息的文件,Gemfile.lock. 我目前所拥有的仅在我位于项目的根目录(Gemfile.lock 所在的位置)时才有效。

这也可以用于解析 git 配置文件,尽管git config速度非常快。

谢谢你的时间

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

请参阅以下两个有用的链接以找出您的解决方案。

获取Ruby中当前目录的父目录

如何检查文件是否存在

):

于 2013-01-21T08:55:58.803 回答