我正在尝试创建一个shell函数来查找当前目录中存在的文件。如果当前目录文件不存在,则应该尝试使用父目录,然后转到文件系统的根目录(上升到〜应该绰绰有余)。
我想要实现的是在我的提示符上显示用于项目的rails版本上的当前ruby。简单的方法是调用bundle show rails
并解析字符串,但速度很慢;所以我想解析包含版本信息Gemfile.lock
的文件。我目前只有在项目的根目录(Gemfile.lock所在的地方)时才能工作。
这也可用于解析git配置文件,但git config
非常快。
感谢您的时间
答案 0 :(得分: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
答案 1 :(得分:0)
请参阅以下两个有用的链接以了解您的解决方案。
Get parent directory of current directory in Ruby
How to check for file existence
):