变量名称出现在提示中

时间:2013-02-12 13:53:03

标签: macos bash

我正在尝试自动执行打开编辑器的日常任务,并通过键入“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
}

1 个答案:

答案 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 ./*
}