我正在尝试自动执行打开编辑器的日常任务,并通过键入“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
}
答案 0 :(得分:0)
使用简单的通配符,而不是做所有不必要的循环!但是,我还没有完全理解你的子目录树,所以我有两个选择,使用任何适当的。将函数添加到〜/ .bashrc 。
1 - 如果您的子目录树是这样的(与您的示例完全相同*):
~/projects/subdir1/target1/
~/projects/subdir1/target2/
~/projects/subdir2/target3/
~/projects/subdir2/target4/
该功能将如下:
function project {
cd ~/projects/*/"$1"
sublime .
# or sublime ./*
}
*请注意,如果您有两个或更多具有相同名称的目标,但位于不同的 subdir ,则只会匹配第一个目标示例
2 - 如果您的子目录树是这样的(这对我来说似乎更常见):
~/projects/target1/
~/projects/target2/
~/projects/target3/
~/projects/target4/
该功能将如下:
function project {
cd ~/projects/"$1"
sublime .
# or sublime ./*
}