2013-02-12 4 views
1

Я пытаюсь автоматизировать мою ежедневную задачу открытия моего редактора и «cd-ing» в папку проекта в то же время, набрав «project something». Все идет нормально. Код работает. Но у меня появилось неожиданное поведение. Текущая метка каталога показывает 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

Что такое значение ' PS1'? Вы запускаете 'project' из командной строки? – chepner

+1

Зачем беспокоиться о циклах 'do'? Разве вы не можете просто '(cd ~/projects/*/$ 1; sublime $ 1)'? – trojanfoe

ответ

0

Используйте простой подстановочные вместо того, чтобы делать все, что ненужный цикл! Я, однако, не полностью понял ваше дерево подкаталогов, поэтому я пришел с двумя альтернативами, использую то, что присвоено. Добавьте функцию в ~/.bashrc.

1 - Если подкаталоги дерево, как это (работает точно так же, как в вашем примере *):

~/projects/subdir1/target1/ 
~/projects/subdir1/target2/ 
~/projects/subdir2/target3/ 
~/projects/subdir2/target4/ 

функция будет выглядеть следующим образом:

function project { 
    cd ~/projects/*/"$1" 
    sublime . 
    # or sublime ./* 
} 

* Имейте в виду, что если у вас есть два или более цель с тем же именем, но на другом подмножество, оно будет соответствовать только первому, как и вашему примеру.

2 - Если подкаталоги дерево, как это (что представляется более общим для меня):

~/projects/target1/ 
~/projects/target2/ 
~/projects/target3/ 
~/projects/target4/ 

функция будет выглядеть следующим образом:

function project { 
    cd ~/projects/"$1" 
    sublime . 
    # or sublime ./* 
} 
Смежные вопросы