сценарий для компакт-диска во многие каталоги и выполнения команды

Исторически небольшие временные файлы идут в / var или / var / run , но в последнее время некоторые дистрибутивы сбросили / var / run и начали использовать только / run , поэтому большинство, если не все программы Linux, записывают свои журналы в / var / log , обычно внутри есть каталог с именем приложения, оставляя вам /var/your_app/data_file.txt

/ var / run или / run , содержащие файлы, которые являются присутствует только во время работы программы.

Итак, если ваш демон будет удалять файл при остановке и создавать его каждый раз при запуске, используйте / run , но если ваш файл останется даже после остановки демона, используйте / var

2
07.12.2016, 19:05
2 ответа
#!/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
2
27.01.2020, 22:10

На самом деле вам не нужно менять каталог в репозиторий 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
0
27.01.2020, 22:10

Теги

Похожие вопросы