Шаблон ^172. [1-3][6-9]|[0-1]
соответствует таким вещам, как
172x39
40
последнее, потому что вы сопоставляете все, что имеет 0 или 1 в первом поле.
Вам нужно изменить .
на \.
, чтобы это была буквальная точка, вам нужно ввести группировку и вам нужен лучший шаблон.
^172\.(1[6-9]|2[0-9]|3[0-1])\.
for rep in */; do
printf '%s:\t' "$rep"
( cd "$rep" && git status --short --branch --untracked-files=no )
done
или, используя короткие варианты,
for rep in */; do
printf '%s:\t' "$rep"
( cd "$rep" && git status -sbuno )
done
Это переходит в каждый каталог в текущем каталоге и запускает данную команду git status
. Вывод может выглядеть примерно так
gnomad_browser/: ## master...origin/master
swefreq-browser/: ## gnomad-remerge...origin/gnomad-remerge
swefreq-config/: ## develop...origin/develop
swefreq/: ## feature/schema-update...origin/feature/schema-update
M sql/swefreq.sql
(У меня есть незафиксированный файл в репозитории swefreq
)
Параметры, выбранные для git status
здесь, будут отображать только текущую ветвь и любые измененные файлы, но вы можете легко изменить его, чтобы отображались неотслеживаемые файлы, удалив -uno
или --untracked-files=no
.
См. git status --help
.
Ваша идея использовать подсказку для отображения информации о каждом каталоге может работать в зависимости от того, как настроена подсказка.Мое приглашение представляет собой одну строку -в кавычках, которая должна быть оценена:
for rep in */; do
( cd "$rep" && eval echo "$PS1" )
done
Я не думаю, что это очень красивое решение, и оно также не очень гибкое в том, что оно может делать и рассказывать вам о каждом репозитории.
Глядя на о -мой -git, кажется, вам нужно сделать что-то подобное в сценарии оболочки:
#!/bin/bash
source ~/.oh-my-git/prompt.sh
for d in dir1 dir2...
do cd "$d"
pwd
bash_prompt # recalculate PS1 value
echo -en "$PS1"
done