Исторически небольшие временные файлы идут в / var
или / var / run
, но в последнее время некоторые дистрибутивы сбросили / var / run
и начали использовать только / run
, поэтому большинство, если не все программы Linux, записывают свои журналы в / var / log
, обычно внутри есть каталог с именем приложения, оставляя вам /var/your_app/data_file.txt
/ var / run
или / run
, содержащие файлы, которые являются присутствует только во время работы программы.
Итак, если ваш демон будет удалять файл при остановке и создавать его каждый раз при запуске, используйте / run
, но если ваш файл останется даже после остановки демона, используйте / var
#!/bin/bash
# This will attempt to do a `git pull` in any directories found in the
# present working directory.
for d in *; do
if [[ -d "$d"/.git ]]; then
( cd $d; git pull )
fi
done
На самом деле вам не нужно менять каталог в репозиторий git, чтобы выполнить команду с git
. Вы можете передать рабочий каталог в git
с помощью -C path
.
Если вы хотите сохранить список репозиториев, я бы предложил использовать массив:
repos=(
$HOME/somedir/repo1
"$HOME/somedir/with space/repo2"
)
for repo in $repos; do
git -C $repo $@
done
Если вы поместите это в сценарий, скажем, с именем multigit
, вы можете запустить любой git
, поскольку аргументы передаются с помощью $ @
. Например, multigit pull
.
Если вы не заботитесь о настройке списка репозиториев, вы можете даже получить zsh
, чтобы найти их все за вас:
for repo in **/.git(/N); do
git -C ${repo:h} $@
done
** /. Git (/ N)
будет рекурсивно поиск любого каталога с именем .git
и $ {repo: h}
удалит последний элемент пути, в данном случае .git
, оставив вас с пути к репозиториям.
Бонус: вы даже можете получить Tab -заполнение для вашей новой команды:
compdef '_dispatch git git' multigit